This brief document is meant to describe the operation of the crossfire
metaserver, as well as the form of the data.

The metaserver listens on port 13326 for both tcp and udp packets.

The server sends updates to the metaserver via udp.  The metaserver only
does basic checking on the data that server sends.  It trusts the server
for the ip name it provides.  The metaserver does add the ip address
and also tracks the idle time (time since last packet received).

The client gets its information from the metaserver through connecting by
means of tcp.  When the metaserver accepts the tcp connection, it dumps
the metaserver information over the connection - there is no negotiation
that needs to be done (and in fact, a telnet to port 13326 will show
the dumped data).

The current metaserver implementation is in Perl.  But the metaserver could be
in any language.  Currently, perl is fast enough for the amount of data
that is being exchanged.

An example of a line from metaserver output:

165.227.59.56|330|tavern.santa-clara.ca.us|0|1.0.0|Development server -
usually running CVS or even later experimental code.  At end of DSL link (128k
upload).  May be restarted unexpectedly - play at your own
risk.|3254|117133|1569

For input and output, all this data is on a single line.  It is broken up here
to be more readable.

The first field (165.227.59.56) is the ip address that send this to the
server.  The metaserver adds this information.

The second field (330) is the number of seconds since the metaserver last
received and update from this server.

The third fields and beyond are all data the server has sent to the
metaserver.

The third field (tavern.santa-clara.ca.us) is the hostname of the server.
This is provided by the server itself - the metaserver does not look
this up.

Fourth field (0) is the number of players currently on the server.

Fifth field (1.0.0) is the version of the server.

Sixth field (Development server ....) is comment.  It can contain most
any character or data.  For clarity reasons, this is not used in the unix
clients, but is used on the web page output.  This should not contain any
vertical bars, as it will then confusion programs parsing the data.

Seventh field (3254) is the number of bytes the server has taken in over the
socket over the lifetime of that server instance.

Eigth field (117133) is the number of bytes the server has written out
on the socket over the lifetime of that server instance.

Ninth field (1569) is the number of seconds this server instance has been up.
When referring to server instance for the 7->9'th field, this means how
long since the executable has been started.  A particular host may have
been running a server for quite a long time, but due to updates or crashes,
the length of time the server instance has been up may be much shorter.

