diff --git a/doc/technical/serverprotocol.html b/doc/technical/serverprotocol.html index f549ccb0b..353f9f86a 100644 --- a/doc/technical/serverprotocol.html +++ b/doc/technical/serverprotocol.html @@ -28,7 +28,9 @@
-
+
+
+
@@ -213,10 +215,21 @@
Syntax: :source AG :newdesc
The server to which source is connected to should have it's description updated to newdesc. This does NOT include the VL inforamtion.
Syntax: 8 source[ :destination]
+Used to check if a connection is still live if it has been "quiet" for a certain amount of time. Typically, unreal will send PING requests at intervals determined by the class::pingfreq setting. PINGs originating from the direct uplink will use the token, but it seems PINGs originating from a distant server will not.
+The response to a PING is sent with the PONG command.
+When receiving a two-parameter PING, the second parameter is the target. If the target isn't you, you can either reply on behalf of that target (using its name instead of yours), or if there is a real connection representing the target, forward the PING to the target.
+Syntax: 9 source[ :destination]
+Used to respond to a PING query.
+Responding to a ping: Once a PING is received, you usually have an amount of time to respond equal to your class::pingfreq. The correct response will always have two parameters. If you received one parameter, then the received parameter becomes the second parameter of your response, and the first parameter is your server name. If you received two parameters, the response returns both parameters in reverse order.
+For example, the response to 8 uplink.server is 9 my.name uplink.server, while the response to PING distant.server your.server is 9 your.server distant.server. Unreal typically includes a : prior to the last parameter. This isn't required if that parameter contains no spaces, but it is especially important to not include the colon when reversing the parameters, or else Unreal mistake it for a single-parameter PONG. +
If a two-parameter PONG is received, the second parameter names the target. If the target is not you, and a real connection represents that target, you should forward the PONG message via that connection.
These commands deal with the state of channels across the network. Unreal only supports Network Channels, where the first character is a # character.
Syntax: @servernumeric ~ timestamp channel +modes[ modeparams] :memberlist &ban "exempt 'invex
+Syntax: @servernumeric ~ timestamp channel +modes[ modeparams] :memberlist &ban "exempt 'invex
Timestamp is the channel timestamp and can be !b64 as defined by PROTOCTL SJB64. Modes should only include those in the last three mode sets listed in CHANMODES. Modeparams is one parameter for each mode character that requires one. Memberlist is a series of users (all of which must at least be behind the server sending the SJOIN), each user is prefixed with one or more characters indicating their status. Owners (+q) are prefixed with *, admins (+a) ~, ops (+o) @, halfops (+h) %, voices (+v) +. Normal users are not prefixed with anything. Ban, ban exception, and invite exception masks are also included, with bans prefixed with &, ban exceptions prefixed with ", and invite exceptions with '. Note that when a &, " or ' is encountered as the first character, further processing of ~, *, @, %, or + characters must not continue because ban, exempt, and invite masks can contain any of those characters. (Plus it's just not right for a ban mask to be marked as a channel admin...)
If the channel didn't already exist it is created with the information given in the SJOIN. Otherwise the timestamp is used to determine how the SJOIN information is handled. As a given, all members are joined into the channel, regardless. The mode information (modes, modeparams, memberlist prefixes, bans, exempts, and invites) is subject to the timestamp rules: