Skip to content

Latest commit

 

History

History
24 lines (21 loc) · 1.68 KB

nope.md

File metadata and controls

24 lines (21 loc) · 1.68 KB
title layout meta-description copyrights
ergo.chat/nope Capability
spec
A capability that cannot be requested
name period email
Daniel Oaks
2019-2021
daniel@danieloaks.net
name period email
Shivaram Lingamneni
2019-2021
slingamn@cs.stanford.edu

Introduction

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 ergo.chat/nope capability, inspired by the GREASE mechanism for TLS, is a capability that MUST NOT be requested by clients. Clients are not expected to implement this capability; rather, it is intended to help detect client implementations with incorrect capability handling. In particular, a client implementation that attempts to request all advertised capabilities (on the assumption that they will all be more or less backwards-compatible) will "fail deadly" in the presence of this capability.

The Capability

The ergo.chat/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 ergo.chat/nope!").

Future work

In the future we may consider randomly generating the capability name, similarly to the GREASE specification.