Hi,

there are three (maybe related) problems with Source's RCON protocol 
implementation that make it very hard to handle authentication problems.
As some of you might know, I'm the developer of the Steam Condenser library 
which has a RCON implementation. In the last weeks I got multiple  bug reports 
about odd RCON behavior.

The first problem is pretty annoying and occurs since a few weeks (or months?) 
ago. When using an unauthenticated connection, without sending a correct 
SERVERDATA_AUTH first, SrcDS will respond with an empty 
SERVERDATA_RESPONSE_VALUE instead of SERVERDATA_AUTH_RESPONSE.
This is in conflict with the only available documentation on VDC 
(https://developer.valvesoftware.com/wiki/RCON#SERVERDATA_AUTH_RESPONSE) which 
my (and probably all other implementations) are based on.

The second problem occurs when resetting the password while one or more RCON 
clients have open and authenticated connections. Using rcon_password will cause 
every TCP connection to be closed on the server side, i.e. not reset 
completely. It's ugly to detect such a situation and should be handled 
differently. Changing the RCON password should invalidate all connections by 
either resetting the TCP connection or replying to all further requests with 
SERVERDATA_AUTH_RESPONSE.
Resetting the password usually happens while the map changes, which is pretty 
annoying to my users.

The third problem might be the biggest. Banning a client (at least by IP with 
addip) does not immediately invalidate the RCON connection of that client. 
Existing connections can be used to send commands to the server! Only new 
connections are blocked, i.e. you'll get a ECONNRESET. The behavior should be 
identical to changed RCON passwords.

PS: While discussing downsides of the RCON protocol: RCON replies, e.g. of 
commands like cvarlist, should be cleanly terminated. There's a workaround for 
this problem 
(https://developer.valvesoftware.com/wiki/RCON#Multiple-packet_Responses), but 
it's pretty hackish and overly complicated. One clean termination sequence per 
response would be great.

Best regards,
Sebastian

_______________________________________________
To unsubscribe, edit your list preferences, or view the list archives, please 
visit:
https://list.valvesoftware.com/cgi-bin/mailman/listinfo/hlds

Reply via email to