Server Tests in ServeToMe 4

You can run the server tests from the "External" tab in the ServeToMe window. These test run automatically and attempt to verify that the different components of the server are working as expected.

The server tests window

Installed and running

The "servetome-server" is separate to the user-interface application. For ServeToMe to work, the server must be installed and running.

Four error messages are possible here:

  • Server is not installed
  • Installation is out of date
  • Required server directories not created
  • No process named com.zqueue.servetome-server running

All of these issues should be addressed by using the "Force reinstall server..." from the "File" menu in the menubar then pressing "Start server" in the ServeToMe window. If this still does not work, you should restart your computer and try this again.

An administrator password is required to perform the installation.

On success, the detail information will show information about the running server process. An example output from ServeToMe on a Mac shows the path of the ServeToMe helper tool and some minor process information:

    0  3871     1   0 12:16AM ??         0:00.18 /Library/PrivilegedHelperTools/com.zqueue.servetome-server

Is the server responding to connections

In this test, the top-level "is running" page is fetched from the ServeToMe server to verify that the server is running and responding correctly to HTTP requests.

The response should look approximately like the following:

<html><head><title>ServeToMe</title></head><body><h1>ServeToMe</h1><p>ServeToMe version 4.0.1 is running normally.</p><p>Use the <a href="http://zqueue.com/streamtome/">StreamToMe</a> application on your Mac, iPhone, iPad or iPod Touch to view media files.</p></body></html>

If this test succeeds, ServeToMe is running and working. However, it may still be possible for you to have connection problems due to network or network software problems that are outside ServeToMe or StreamToMe's direct control.

A first point to note is that this test sends a request from the local computer to a server running on the local computer. This means that it will not be affected by any firewall or anti-virus software. If this step succeeds but any requests sent from another computer on ServeToMe's port fail, then it is still possible that a firewall or anti-virus software is blocking ServeToMe.

The other most common reason why you might have trouble connecting from another computer or device when this test succeeds is that there may not be an actual network path between the other computer or device and this one. Keep in mind that most routers create private local subnetworks and unless two devices are connected the same way to the same router, they may be on separate private local subnetworks and therefore may be unreachable from each other.

Bonjour service creation

Bonjour is a protocol for advertising services on the local network. ServeToMe uses Bonjour to advertise its own existence to StreamToMe apps running on the local network.

Sample successful response:

{
    domain = 1;
    errorCode = 0;
    flags = 2;
    name = 1;
    regType = 1;
}

If any error message is returned from the Bonjour service creation, it will be displayed here. The possible errorCode values are displayed in the UPnP-IGD or NAT-PMP service found section.

Automatic local discovery working

In this step, an attempt is made to discover ServeToMe's advertised service. A successful response shows all addresses on the local computer through which the server is accessible:

{
    "10.211.55.2" = 9969;
    "10.37.129.2" = 9969;
    "192.168.1.2" = 9969;
    "fe80::224:36ff:feb5:a481" = 9969;
}

If no addresses are found, the message "Bonjour service not found or not responding." will be displayed.

Since this is a local computer connection to itself, the notes from "Is the server responding to connections" also apply.

UPnP-IGD or NAT-PMP service found

Connecting to ServeToMe from outside the local network requires a connection from outside the local network to reach the ServeToMe computer inside the local network.

Most routers and modems create private local subnetworks and private local subnetworks cannot receive incoming connections unless the gateway device is explicitly told to allow incoming connections. UPnP-IGD and NAT-PMP are two automated ways that ServeToMe tries to request that the gateway device allow incoming connections.

This test shows whether a search for an UPnP-IGD or NAT-PMP service succeeded. A sample response:

{
    errorCode = 0;
    externalAddress = "123.45.67.89";
    externalPort = 9969;
    flags = 0;
    interfaceIndex = 6;
    internalPort = 9969;
    protocol = 32;
    ttl = 7200;
    verifyerror = "";
}

Possible errorCodes from this step include:

kDNSServiceErr_NoError                   = 0,
kDNSServiceErr_Unknown                   = -65537,  /* 0xFFFE FFFF */
kDNSServiceErr_NoSuchName                = -65538,
kDNSServiceErr_NoMemory                  = -65539,
kDNSServiceErr_BadParam                  = -65540,
kDNSServiceErr_BadReference              = -65541,
kDNSServiceErr_BadState                  = -65542,
kDNSServiceErr_BadFlags                  = -65543,
kDNSServiceErr_Unsupported               = -65544,
kDNSServiceErr_NotInitialized            = -65545,
kDNSServiceErr_AlreadyRegistered         = -65547,
kDNSServiceErr_NameConflict              = -65548,
kDNSServiceErr_Invalid                   = -65549,
kDNSServiceErr_Firewall                  = -65550,
kDNSServiceErr_Incompatible              = -65551,  /* client library incompatible with daemon */
kDNSServiceErr_BadInterfaceIndex         = -65552,
kDNSServiceErr_Refused                   = -65553,
kDNSServiceErr_NoSuchRecord              = -65554,
kDNSServiceErr_NoAuth                    = -65555,
kDNSServiceErr_NoSuchKey                 = -65556,
kDNSServiceErr_NATTraversal              = -65557,
kDNSServiceErr_DoubleNAT                 = -65558,
kDNSServiceErr_BadTime                   = -65559,  /* Codes up to here existed in Tiger */
kDNSServiceErr_BadSig                    = -65560,
kDNSServiceErr_BadKey                    = -65561,
kDNSServiceErr_Transient                 = -65562,
kDNSServiceErr_ServiceNotRunning         = -65563,  /* Background daemon not running */
kDNSServiceErr_NATPortMappingUnsupported = -65564,  /* NAT doesn't support NAT-PMP or UPnP */
kDNSServiceErr_NATPortMappingDisabled    = -65565,  /* NAT supports NAT-PMP or UPnP but it's disabled by the administrator */
kDNSServiceErr_NoRouter                  = -65566,  /* No router currently configured (probably no network connectivity) */
kDNSServiceErr_PollingMode               = -65567,
kDNSServiceErr_Timeout                   = -65568

Port mapping succeeded

This step applies a few extra verification steps to the results from the previous test.

The most common issue that this step will report is a warning where the external port is different to the internal port. This happens because the desired port (the local port) was already in use in the gateway.

There are two reasons why the desired port might already be in use:

  • You are running two copies of ServeToMe on the local network and they are trying to use the same external port. Use the "ServeToMe port number" field on the "Advanced Settings" tab in ServeToMe to fix this problem.
  • Your ServeToMe server computer's local address has changed and the port number is still reserved by the old local address. You should go into your router's settings and make sure your ServeToMe computer is assigned a fixed address on the local network (this is normally done in DHCP settings or static routing settings).

Can external clients connect

In this test, a remote computer is asked to make a test connection to your ServeToMe server to verify that it is correctly reachable from outside your local network.

The response should look approximately like the following:

<html><head><title>ServeToMe</title></head><body><h1>ServeToMe</h1><p>ServeToMe version 4.0.1 is running normally.</p><p>Use the <a href="http://zqueue.com/streamtome/">StreamToMe</a> application on your Mac, iPhone, iPad or iPod Touch to view media files.</p></body></html>

If this test succeeds, your ServeToMe computer is correctly reachable from non-local locations. If this test fails, your computer is almost certainly not reachable from outside the local network.