1
$Id: ts6.txt 33 2005-10-02 20:50:00Z knight $
1
$Id: ts6.txt 4788 2014-10-25 20:38:39Z michael $
4
4
Written by Lee H <lee@leeh.co.uk>
5
Ideas borrowed heavily from ircnet (Beeth, jv, Q)
7
- Changes between v7 and v8 -
8
-----------------------------
10
In the v7 specification, the JOIN command included the channel modes of a
11
channel, and acted on them following TS rules. In the v8 specification,
12
JOIN will never send modes.
14
Desyncs can occur both when they are sent and when they are not. If they
15
are sent, then you can have a situation where a user on one side of the
16
network issues "MODE #channel -l", and a user on another side of the network
17
issues "JOIN #channel" whilst the +l still exists. As the JOIN string sent
18
server<->server includes the full modes at the time of the user joining,
19
this will propagate the +l, but there is a -l crossing in the other
20
direction. Desync will occur beyond where they intersect.
22
If the modes are not sent, then a lower TS JOIN command, or a JOIN command
23
that creates a channel will cause a desync.
25
It is judged that the desync with sending the modes is worse than the desync
26
by not sending them, as such the v8 specification dictates modes are not
27
sent with a JOIN command server<->server.
29
The v8 specification also clarifies that servers may issue TMODE.
9
34
This document aims to fix some of the flaws that are still present in the
124
149
ignore any "MODE" commands from a user marked as 'deopped'.
127
Simple channel TS rules
128
-----------------------
152
- Simple channel TS rules -
153
---------------------------
130
155
A server receiving a command that requires simple channel TS rules must
131
156
apply the following rules to the command.
138
163
for the modes we are accepting.
141
The following commands are defined here as the TS6 protocol
142
-----------------------------------------------------------
166
- The following commands are defined here as the TS6 protocol -
167
---------------------------------------------------------------
145
PASS <PASSWORD> TS <TS_CURRENT> :<SID>
170
PASS <PASSWORD> TS <TS_CURRENT> :<SID>
147
172
This command is used for password verification with the server we are
155
180
<TS_CURRENT> is our current TS version. If this field is not present then
156
181
the server does not support TS6. <SID> is the SID of the server.
159
:<SID> UID <NICK> <HOPS> <TS> +<UMODE> <USERNAME> <HOSTNAME> <IP> <UID> :<GECOS>
184
:<SID> UID <NICK> <HOPS> <TS> +<UMODE> <USERNAME> <HOSTNAME> <IP> <UID> :<GECOS>
161
186
This command is used for introducing clients to the network.
176
201
A server receiving a UID command must apply nick TS rules to the nick.
179
:<SID> SID <SERVERNAME> <HOPS> <SID> :<GECOS>
204
:<SID> SID <SERVERNAME> <HOPS> <SID> :<GECOS>
181
206
This command is used for introducing servers to the network.
195
220
Client and servers which do not have a UID/SID must be introduced by old
199
:<SID> SJOIN <TS> <CHANNAME> +<CHANMODES> :<UIDS>
224
:<SID> SJOIN <TS> <CHANNAME> +<CHANMODES> :<UIDS>
201
226
This command is used for introducing users to channels.
215
240
use the "JOIN" command defined in this specification. A TS6 server must
216
241
still use SJOIN for creating channels.
219
:<UID> JOIN <TS> <CHANNAME> +<CHANMODES>
244
:<UID> JOIN <TS> <CHANNAME> +
221
246
This command is used for introducing one user unopped to an existing channel.
223
248
The <UID> field is the UID of the client joining the channel. The
224
249
<TS> field is the channels current TS, <CHANNAME> is the channels
225
current name, <CHANMODES> are the channels current modes.
227
252
A server receiving a JOIN must apply normal channel TS rules to the JOIN.
254
No channel modes are sent with the JOIN command. In previous versions of
255
this specification, the "+" parameter contained the channels current modes.
256
A server following this version of the specification must not interpret this
257
argument and must not propagate any value other than "+" for this parameter.
229
259
It should be noted that whilst JOIN would not normally create a
230
channel, during specific race conditions it can. This can create
231
a ban desync that this specification does not rectify.
260
channel or lower the timestamp, during specific conditions it can. This
261
can create a desync that this specification does not rectify.
234
:<SID> BMASK <TS> <CHANNAME> <TYPE> :<MASKS>
264
:<SID> BMASK <TS> <CHANNAME> <TYPE> :<MASKS>
236
266
This command is used for bursting channel bans to a network.
252
282
not be possible without a desync, due to it being sent after
256
:<UID> TMODE <TS> <CHANNAME> <MODESTRING>
286
:<SID|UID> TMODE <TS> <CHANNAME> <MODESTRING>
258
288
This command is used for clients issuing modes on a channel.
260
<UID> is the UID of the client setting the mode. <TS> is the
261
current TS of the channel, <CHANNAME> is the channels name.
262
<MODESTRING> is the raw mode the client is setting.
290
<SID|UID> is either the UID of the client setting the mode, or the SID of
291
the server setting the mode. <TS> is the current TS of the channel,
292
<CHANNAME> is the channels name. <MODESTRING> is the raw mode the client is
264
295
A server receiving a TMODE must apply simple channel TS rules to the TMODE.
266
A TS6 server must translate MODEs issued by a local client into TMODE
267
to send to other TS6 capable servers.
297
A TS6 server must translate MODEs issued by a local client, or received from
298
a server into TMODE to send to other TS6 capable servers.