The relevant code was not detailed, but at startup, when the local Tierra creates its socket, it gives a protocol port number to be associated with the socket. This port number is then used to identify Tierra in all subsequent communications. It is the number that is part of the mapfile entry for the local node.
In version 1.0, Tierra always gives 8001 as a port number argument to the bind system call. This is in the non-reserved range traditionally used for user defined servers. Everything seems all right.
However, if 8001 is already affected to another application (for example another Tierra running on the same machine), the bind system call returns with a non-null status, and Tierra exits. As long as the other application runs with its socket open with 8001 as a port number, Tierra will not be able to even go through startup. This can be a big problem, especially on multi-user machines.
The solution to this problem is pretty simple.
The bind should be included in a loop. As before, Tierra first try to bind to 8001 (or 5001, the first non-reserved value for user defined servers). As long as bind returns with a non-null status, Tierra increments the port number value with 1, and calls bind with this new value. Because the number of processes running on a machine is limited, and because the upper limit on the port number (16-bit unsigned integer) is in theory quite high, Tierra should be able to find a valid port number before reaching this limit...