From 54f3d3f31e59774db9987a804bc867fc0d87e4a6 Mon Sep 17 00:00:00 2001 From: w00t Date: Sun, 2 Nov 2008 19:46:09 +0000 Subject: Remove +s when no snomasks are set.. bug found (indirectly) by jackmcbarn. git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@10793 e03df62e-2008-0410-955e-edbf42e46eb7 --- src/modes/umode_s.cpp | 2 +- src/users.cpp | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/modes/umode_s.cpp b/src/modes/umode_s.cpp index 93bc60cac..0f1764a7e 100644 --- a/src/modes/umode_s.cpp +++ b/src/modes/umode_s.cpp @@ -30,8 +30,8 @@ ModeAction ModeUserServerNoticeMask::OnModeChange(User* source, User* dest, Chan if (!dest->modes[UM_SNOMASK]) dest->snomasks.reset(); - parameter = dest->ProcessNoticeMasks(parameter.c_str()); dest->modes[UM_SNOMASK] = true; + parameter = dest->ProcessNoticeMasks(parameter.c_str()); return MODEACTION_ALLOW; } else diff --git a/src/users.cpp b/src/users.cpp index 0a196d798..a8a1ba6b3 100644 --- a/src/users.cpp +++ b/src/users.cpp @@ -90,6 +90,12 @@ std::string User::ProcessNoticeMasks(const char *sm) *c++; } + std::string s = this->FormatNoticeMasks(); + if (s.length() == 0) + { + this->modes[UM_SNOMASK] = false; + } + return output; } -- cgit v1.2.3