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

- Fixed desynch bug regarding extended channelmodes. Reported by AngryWolf (#0001347)

This commit is contained in:
Bram Matthys
2003-11-09 02:52:43 +00:00
parent 9d33644df1
commit 58f0749fa3
2 changed files with 9 additions and 6 deletions
+1
View File
@@ -2562,3 +2562,4 @@ seen. gmtime warning still there
- Added hostname check for me::name since this could cause mysterious trouble.
- Removed references to tkline/tzline from help.conf. Reported by penna22 (#0001340)
- Fix for permanent modules w/ config hooks (they were not called).
- Fixed desynch bug regarding extended channelmodes. Reported by AngryWolf (#0001347)
+8 -6
View File
@@ -6080,22 +6080,24 @@ CMD_FUNC(m_sjoin)
{
int r;
char *parax;
r = Channelmode_Table[i].sjoin_check(chptr, extcmode_get_struct(oldmode.extmodeparam,Channelmode_Table[i].flag), extcmode_get_struct(chptr->mode.extmodeparam, Channelmode_Table[i].flag));
CmodeParam *ourm = extcmode_get_struct(oldmode.extmodeparam,Channelmode_Table[i].flag);
CmodeParam *theirm = extcmode_get_struct(chptr->mode.extmodeparam, Channelmode_Table[i].flag);
r = Channelmode_Table[i].sjoin_check(chptr, ourm, theirm);
switch (r)
{
case EXSJ_WEWON:
{
CmodeParam *p = extcmode_get_struct(oldmode.extmodeparam, Channelmode_Table[i].flag);
CmodeParam *r;
parax = Channelmode_Table[i].get_param(p);
parax = Channelmode_Table[i].get_param(ourm);
Debug((DEBUG_DEBUG, "sjoin: we won: '%s'", parax));
r = Channelmode_Table[i].put_param(p, parax);
if (r != p)
r = Channelmode_Table[i].put_param(theirm, parax);
if (r != theirm) /* confusing eh ;) */
AddListItem(r, chptr->mode.extmodeparam);
break;
}
case EXSJ_THEYWON:
parax = Channelmode_Table[i].get_param(extcmode_get_struct(chptr->mode.extmodeparam,Channelmode_Table[i].flag));
parax = Channelmode_Table[i].get_param(theirm);
Debug((DEBUG_DEBUG, "sjoin: they won: '%s'", parax));
Addit(Channelmode_Table[i].flag, parax);
break;