On Tue, Apr 21, 2009 at 10:35:36AM +1000, James Cameron wrote:
> Client developers may now consider RSA optional, and until the new
> identification packets are in place building with RSA should continue.
> Server developers will retain RSA in the code.  We'll be working to add
> a way to identify client versions for statistics.

netrek-client-cow sends a CP_MESSAGE to server after SP_PICKOK which
contains a own slot number, group (MINDIV | MCONFIG) and text
"@version", where version is the version number.

S->C SP_MASK      mask=15,
S->C SP_PICKOK    state=1,
C->S CP_MESSAGE   group=66, indiv=0, mesg="@3.2.10",
C->S CP_UDP_REQ   request=1, connmode=0, port=17784,

Netrek XP also does the same, in dmessage.c, sendVersion().

So I propose that the client name be *appended* to the version string,
and the server to process the message into logs.

The text is handled in ntserv/socket.c in function clientVersion, where
it is duplicated and stored in a global variable version.  At this point
it can be logged.

The only apparent use is in ntserv/features.c where it is used to
compare against the features file, in TellClient, but this function is
only called *after* successful RSA verification in decryptRSAPacket.

This is an entirely different read of the features file to the one done
in ntserv/feature.c.  ;-)

James Cameron    mailto:quozl at us.netrek.org     http://quozl.netrek.org/