Skip to content

What's going on with ERR_NICKCOLLISION (436)? #271

@0x5c

Description

@0x5c

ERR_NICKCOLLISION (436) is listed by modern-irc as a numeric of the NICK command, but without explaining in the description of the command what condition triggers it, nor how this condition differs from what triggers ERR_NICKNAMEINUSE (433).

The numerics section mentions both numerics, where

  • ERR_NICKNAMEINUSE is clearly stated as a response to a NICK command requesting a nickanem that is already in use by someone else
  • ERR_NICKCOLLISION is somewhat implied to not be a response to NICK but a consequence of the server joining a network
  • the ERR_NICKCOLLISION example suggests it comes along with a KILL message.

RFC1459's numerics section uses equivalent and verbatim descriptions, respectively.

That would point into the direction of NICK always triggering ERR_NICKNAMEINUSE for existing nicknames, and collisions being KILL-worthy network topology changes.
From limited testing on a Solanum network, ERR_NICKNAMEINUSE is indeed the response to NICK both before and after registration, regardless of the server the existing nickname is from.

Now, RFC1459 also brings an interesting twist.
First in the handling of S2S NICK, with the implication that collisions do happen on nickname changes:

If the NICK message causing the collision was a nickname change, then the original (old) nick must be removed as well.

And secondly when talking of C2S NICK, implying that ERR_NICKCOLLISION is the reply to clients attempting to register or change to a nick that already exists:

If the server recieves an identical NICK from a client which is directly connected, it may issue an ERR_NICKCOLLISION to the local client, drop the NICK command, and not generate any kills.

So, for what a server does when a client attempts to use an existing nickname, Modern only mentions ERR_NICKNAMEINUSE while the RFC only mentions ERR_NICKCOLLISION, both with the implication that the other ERR_ isn't sent.

This leave me with many questions

  1. Are there any modern servers that send ERR_NICKCOLLISION as a response to a NICK command?
  2. Can a modern client reasonably expect that sending a NICK command for an existing nickname will ONLY trigger ERR_NICKNAMEINUSE? ie. that there won't be a ERR_NICKCOLLISION from that command
  3. Are there cases where a modern server would send ERR_NICKCOLLISION without a KILL?
  4. Should ERR_NICKCOLLISION's purpose be explicitly mentioned in Modern?
  5. Should modern servers even use ERR_NICKCOLLISION for any purpose whatsoever?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions