What do the two have in common?

Well, a holiday lead to UUID support in trunk (1.2). Yeah, see, Brain and I got bored, so we sat down and now we have UUID. That's the sort of insane stuff we have.


Our implementation is somewhat similar to TS6. SID is 3 characters starting with a number, CID is 6 characters 0-9A-Z, UID is SID + CID.

All commands now support this, though modular S2S commands will require a TRANSLATE*() macro in their constructor. For an example, see m_remove. (for the curious, TR_NICK is automagically translated to UID before being sent to another server). Remote command handlers will recieve a UID instead of a nick, and InspIRCd::FindNick() finds by UID if the first character is a digit. Neat stuff.

Nick collisions have been given a workover too in amongst this: Now, if there is a nick collision upon linking, one (or both) clients will have their nickname changed to their UID, according to TS rules. Much better than having both killed.

A similar thing happens with nick collisions caused by SVSNICK failing: if the original SVSNICK fails, it attempts to use the client's UID as a last ditch effort. If that fails, then and only then is the client exitted.

All in all, some interesting work going on in trunk at the moment.