ircdocs / modern-irc

A useful overview and reference to the IRC client protocol as it is implemented today.
http://modern.ircdocs.horse/
Other
199 stars 35 forks source link

Document PING/PONG message differences #59

Closed Herringway closed 3 years ago

Herringway commented 7 years ago

Modern day implementations of the PING/PONG messages differ from what is described in RFCs 1459 and 2812.

Some observations:

DanielOaks commented 7 years ago

Some also do a CTCP PING/PONG and block reg on that, iirc? Take a look into that and see whether we need to mention that at all.

Herringway commented 5 years ago

Relevant bits:

DanielOaks commented 5 years ago

also test and illustrate PING with no params at all and see how that works.

Herringway commented 5 years ago

I haven't been able to compile the server, so I'm just basing this off of reading the code, but... pre 2.11: :server 409 nick :No origin specified post 2.11: :server PONG server :

progval commented 3 years ago
  • Some implementations use a pre-registration PING/PONG with random strings as an anti-spoof measure

  • Some implementations just echo PING parameters in PONG responses

These should be handled in #99.

  • One client I've seen sends PONG server :param1 to all PING param1 messages

What client is it?

From what I can tell, this behavior would result in:

with random strings as an anti-spoof measure

FYI, this is not a protection against connection spoofing, as it is commonly believed (TCP already does it, and TLS does it even better). The motivation (at least for Unreal) is to prevent non-IRC clients (eg. browsers that don't blacklist the port) from being tricked into sending stuff to IRC.