X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodes%2Fumode_n.cpp;h=f2c83845466861aa144901d27039f22212690b7e;hb=74d221e54a8db39820f6f86104116f74f9939b01;hp=6c1b380f3f98ed5c1ead913983d6edf0e66a1180;hpb=2816a3ff87c3c15848dfe7f71391a454992ecefe;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modes/umode_n.cpp b/src/modes/umode_n.cpp index 6c1b380f3..f2c838454 100644 --- a/src/modes/umode_n.cpp +++ b/src/modes/umode_n.cpp @@ -4,7 +4,7 @@ #include "users.h" #include "modes/umode_n.h" -ModeUserServerNoticeMask::ModeUserServerNoticeMask() : ModeHandler('n', 1, 0, false, MODETYPE_USER, true) +ModeUserServerNoticeMask::ModeUserServerNoticeMask(InspIRCd* Instance) : ModeHandler(Instance, 'n', 1, 0, false, MODETYPE_USER, true) { } @@ -15,12 +15,24 @@ ModeAction ModeUserServerNoticeMask::OnModeChange(userrec* source, userrec* dest return MODEACTION_DENY; /* Set the bitfields */ - if (dest->modes[UM_SERVERNOTICE] != adding) + if (adding) { - dest->modes[UM_SERVERNOTICE] = adding; + parameter = dest->ProcessNoticeMasks(parameter.c_str()); + dest->modes[UM_SNOMASK] = true; + if (!dest->modes[UM_SERVERNOTICE]) + { + const char* newmodes[] = { dest->nick, "+s" }; + ServerInstance->Modes->Process(newmodes, 2, source, true); + } + return MODEACTION_ALLOW; + } + else if (dest->modes[UM_SNOMASK] != false) + { + dest->modes[UM_SNOMASK] = false; return MODEACTION_ALLOW; } /* Allow the change */ return MODEACTION_DENY; } +