diff --git a/blog/irc-chghost-2013-10-04.markdown b/blog/irc-chghost-2013-10-04.markdown new file mode 100644 index 0000000..4a3044c --- /dev/null +++ b/blog/irc-chghost-2013-10-04.markdown @@ -0,0 +1,61 @@ +--- +title: "IRCv3.2 CHGHOST Extension" +date: "2013-10-04" +--- + +# IRCv3.2 CHGHOST Extension + +The chghost client capability allows a server to directly inform clients about a +host or user change without having to send a fake quit and join. This capability +MUST be referred to as `chghost` at capability negotiation time. + +When enabled, clients will get the CHGHOST message to designate the host of a +user changing for clients on common channels with them. + +The CHGHOST message is one of the following: + + :nick!user@host CHGHOST user new.host.goes.here + +This message represents that the user identified by nick!user@host has changed +host to another value. The first parameter is the user of the client. The +second parameter is the new host the client is using. + +On irc daemons with support for changing the user portion of a client, the +second form may appear: + + :nick!user@host CHGHOST newuser host + +If specified, a client may also have their user and host changed at the same +time: + + :nick!user@host CHGHOST newuser new.host.goes.here + +This second and third form should only be seen on IRC daemons that support +changing the user field of a user. + +In order to take full advantage of the CHGHOST message, clients must be modified +to support it. The proper way to do so is this: + +1. Enable the chghost capability at capability negotiation time during the + login handshake. + +2. Update the user and host portions of data structures and process channel + users as appropriate. + +## Examples + +In this example, `tim!~toolshed@backyard` gets their username changed to `b` and +their hostname changed to `ckyard`: + + :tim!~toolshed@backyard CHGHOST b ckyard + +In this example, `tim!b@ckyard` gets their username changed to `~toolshed` and +their hostname changed to `backyard`: + + :tim!b@ckyard CHGHOST ~toolshed backyard + +## Errata + +A previous version of this specification did not include any examples, which made +it unclear as to whether the de-facto `~` prefix should be included on CHGHOST +messages. The new examples make clear that it should be included. \ No newline at end of file