▄▄▄ ▄▄▄· ▄▄ • ▐ ▄ ▪ ▀▄ █·▐█ ▀█ ▐█ ▀ ▪▪ •█▌▐█▪ ▄█▀▄ ▐▀▀▄ ▄█▀▀█ ▄█ ▀█▄ ▄█▀▄▪▐█▐▐▌ ▄█▀▄ ▐█▌.▐▌▐█•█▌▐█ ▪▐▌▐█▄▪▐█▐█▌ ▐▌██▐█▌▐█▌.▐▌ ▀█▄▀▪.▀ ▀ ▀ ▀ ·▀▀▀▀ ▀█▄▀ ▀▀ █▪ ▀█▄▀▪-----------------------------------------------------------------------------------------------
Copyright © 2019 Daniel Oaks <daniel@danieloaks.net>
Copyright © 2019 Shivaram Lingamneni <slingamn@cs.stanford.edu>
Unlimited redistribution and modification of this document is allowed.
The capability negotiation method used in IRC lets clients request protocol changes from servers. It’s important to make sure that servers can continue introducing new capabilities that may change the protocol in drastic, backwards-incompatible ways.
The oragono.io/nope
capability, inspired by the GREASE mechanism for TLS, is a capability that MAY NOT be requested by clients to help ensure their capability request mechanisms are working correctly and only requesting capabilities which the client can actually support (rather than, for example, assuming that all capabilities advertised by the server are fairly benign and blindly requesting all of them).
We don’t expect other clients to implement this feature. We’re doing it to catch out clients and break them early so we can get them fixed.
The oragono.io/nope
capability has no value. If a client requests it during registration, the server sends an ERROR
message with a suitable description and closes the connection. If a client requests it outside of registration, the server does not close the client’s connection (as this could inspire adventurous users to tell others to “type /QUOTE CAP REQ oragono.io/nope
!”).
In the future we may consider randomly generating the capability name, similar to how the GREASE specification does.
As of v2.7.0, we've changed names to Ergo! We've also changed sites. While this site is left here for historical reference, please see this new site for news about our IRC server:
-------------------------------------------------------------
If you want to view the old site, click anywhere else!