View Issue Details

IDProjectCategoryView StatusLast Update
0005012unrealircdpublic2017-10-07 13:38
ReporterKoragg Assigned Tosyzop  
Status resolvedResolutionfixed 
Fixed in Version4.0.16 
Summary0005012: IRCv3 chghost caps support
DescriptionHereby I request that the IRCv3 cap "chghost" (minus the quotes) should be added in a future release of UnrealIRCd. The main reason is so that when the host of someone is changed, that the IAL of IRC clients on common channels with such a user are updated immediately.
 Nowadays, IRC services, such as for example Anope, are very common and freuqently used alongside many IRCd's, including UnrealIRCd. These commonly also provide a services bot such as HostServ, and often set hosts on users who have registered with NickServ.
So that for example Nick Trackers, Clone Scanners, etc. are immedately made "aware" of someone's new host, the chghost cap is mandatory so that the need for EVERY SINGLE USER to update their IAL manually EACH TIME A HOST OF A USER CHANGES is eliminated.
Steps To ReproduceConnecting to an UnrealIRCd server/network when the client is sent the available and set Caps on connect. Alternatively, via /cap LS to request the avaialable caps. (the capitalization is vital since /cap ls will give out "ls Invalid CAP subcommand")
TagsNo tags attached.
3rd party modules



2017-09-20 16:02

administrator   ~0019878

Yup, good idea.

UnrealIRCd specific note:
We have set::allow-userhost-change force-rejoin, this will rejoin clients on a user@host change.
Makes sense not to send such a rejoin to CAP-chghost capable clients (in rejoin_* functions).

We should probably add a generic function, or even better: call some kind of hook, on userhost change.


2017-09-24 01:07

reporter   ~0019879

Dear syzop and UnrealIRCd developers team,

First of all thank you very much for viewing my issue and taking it into consideration. I was not aware of the set::allow-userhost-change force-rejoin option and implemented it, yet it appears to be a bit buggy: when someone has been assigned a vhost via HostServ and uses /hs off to turn it off, when user mode +x is reset, the cycling of channels is NOT performed; only when the vhost is enabled.
This behaviour does not seem to be intended, and this is with the default UnrealIRCd cloaking module.


2017-09-24 01:09

reporter   ~0019880

The UnrealIRCd version is 4.0.13 and the services utilized are Anope IRC Services version 2.0.5


2017-09-24 11:15

administrator   ~0019884

Thanks for the report. I've cloned and moved the "force-rejoin not working" issue off to bug 0005015.

This issue 0005012 then remains for CAP ghost support.


2017-10-07 13:38

administrator   ~0019894

Thanks for the suggestion. I ended up doing this in a big commit:

commit 5124e60b7cd12da3d0d261b671c0a55b2bbc5f05
Author: Bram Matthys <>
Date: Sat Oct 7 13:31:30 2017 +0200

    Add "CAP chghost" support. Internal recode of userhost changes.
    Fix force-rejoin not working if doing SVSMODE -x/+x (Koragg, 0005015).
    Note to module coders:
    Please use the following procedure in case of an user/host change:
    * userhost_save_current(acptr);
    * << change username or hostname here (or both) >>
    * userhost_changed(acptr);
    This function will take care of notifying other clients about
    the userhost change, such as doing PART+JOIN+MODE if force-rejoin
    is enabled, and sending :xx CHGHOST user host messages to
    "CAP chghost" capable clients.
    Also, small note to everyone:
    If force-rejoin is enabled we will not send the PART+JOIN+MODE to
    "CAP chghost" capable clients. Doing so is just a hack to notify
    people of a userhost change. "CAP chghost" users can thus benefit
    from the reduced noise in this respect.

Issue History

Date Modified Username Field Change
2017-09-18 21:25 Koragg New Issue
2017-09-20 16:02 syzop Assigned To => syzop
2017-09-20 16:02 syzop Status new => acknowledged
2017-09-20 16:02 syzop Note Added: 0019878
2017-09-24 01:07 Koragg Note Added: 0019879
2017-09-24 01:09 Koragg Note Added: 0019880
2017-09-24 11:11 syzop Issue cloned: 0005015
2017-09-24 11:15 syzop Note Added: 0019884
2017-10-07 13:38 syzop Status acknowledged => resolved
2017-10-07 13:38 syzop Resolution open => fixed
2017-10-07 13:38 syzop Fixed in Version => 4.0.16
2017-10-07 13:38 syzop Note Added: 0019894