Nick collision FNC
Jilles Tjoelker <jilles -at- stack.nl>
--------------------------------------

NOTE: At this time, ircd-ratbox only accepts and propagates SAVE messages,
it does not generate them. In other words, it behaves as charybdis with the
general::collision_fnc option disabled.

Nick collision FNC performs a forced nick change to the user's UID instead
of a kill. The criteria for which user may keep the nick are the same as
before. Server notices will say the clients are being "saved" instead of
"killed". The client will get a 043 numeric, like this:

:<server> 043 <nick> <uid> :Nick collision, forcing nick change to your unique ID

The following conditions must be fulfilled:

- All servers on the network must allow remote nicks starting with a digit.
  This is not checked; if this is not fulfilled, users will be killed right
  after being FNCed.

- All servers on the path between the two clients must support TS6 and
  nick collision FNC (SAVE capab). If this is not fulfilled, the collision is
  resolved with kills as before. (This uses the ENCAP GCAP data for remotes.)

- The general::collision_fnc option must be enabled on the server(s) that
  detect the collision.

Technical details:

The following message is used to propagate the nick change coming from the
server that detected the collision:

:<sid> SAVE <uid> <ts>

The TS is compared to the current nick TS for the user; if it is not equal,
the message is dropped. This prevents nick desyncs if the user changed their
nick after being collided. A SAVE message also generates a server notice to
+k.

The SAVE message is used for propagation to the target's server, and also
in several other cases if the destination supports SAVE. In other cases, a
normal nick change or introduction with the UID as nick is sent.

If the SAVETS_100 capab is also present, the TS of the UID nick is 100. This is
necessary to ensure nick TS is always the same on all servers for each
nick-user pair, also if a user with a UID nick changes their nick but is
collided again (the server detecting the collision will not propagate the nick
change further). If the SAVETS_100 capab is not present, this document leaves
the TS of the UID nick undefined; warnings will be given about this.

-- 
$Id: collision_fnc.txt,v 1.1.1.1 2007-06-24 19:03:48 jailbird Exp $
