1
0
mirror of https://github.com/unrealircd/unrealircd.git synced 2026-07-06 05:33:12 +02:00

Add "CAP chghost" support. Internal recode of userhost changes.

Fix force-rejoin not working if doing SVSMODE -x/+x (Koragg, #5015).

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.
This commit is contained in:
Bram Matthys
2017-10-07 13:31:30 +02:00
parent 0fd265349a
commit 5124e60b7c
15 changed files with 251 additions and 153 deletions
+3 -3
View File
@@ -128,6 +128,8 @@ CMD_FUNC(m_sethost)
}
{
userhost_save_current(sptr);
switch (UHOST_ALLOWED)
{
case UHALLOW_NEVER:
@@ -147,7 +149,6 @@ CMD_FUNC(m_sethost)
}
break;
case UHALLOW_REJOIN:
rejoin_leave(sptr);
/* join sent later when the host has been changed */
break;
}
@@ -165,8 +166,7 @@ CMD_FUNC(m_sethost)
/* spread it out */
sendto_server(cptr, 0, 0, ":%s SETHOST %s", sptr->name, parv[1]);
if (UHOST_ALLOWED == UHALLOW_REJOIN)
rejoin_joinandmode(sptr);
userhost_changed(sptr);
}
if (MyConnect(sptr))