]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/commands/cmd_privmsg.cpp
Remove/Add cmode h according to <option:allowhalfop>. Fixes bug #715 reported by...
[user/henk/code/inspircd.git] / src / commands / cmd_privmsg.cpp
index 7354307fed90b614fcfa3f963ccd9f7bad8f2e42..13c81a5a1a3ed4ccb9d0f300cecad0ad8d63a744 100644 (file)
@@ -2,7 +2,7 @@
  *       | Inspire Internet Relay Chat Daemon |
  *       +------------------------------------+
  *
- *  InspIRCd: (C) 2002-2008 InspIRCd Development Team
+ *  InspIRCd: (C) 2002-2009 InspIRCd Development Team
  * See: http://www.inspircd.org/wiki/index.php/Credits
  *
  * This program is free but copyrighted software; see
@@ -68,18 +68,28 @@ CmdResult CommandPrivmsg::Handle (const std::vector<std::string>& parameters, Us
 
                if (chan)
                {
-                       if (IS_LOCAL(user))
+                       if (IS_LOCAL(user) && chan->GetStatus(user) < STATUS_VOICE)
                        {
-                               if ((chan->IsModeSet('n')) && (!chan->HasUser(user)))
+                               if (chan->IsModeSet('n') && !chan->HasUser(user))
                                {
                                        user->WriteNumeric(404, "%s %s :Cannot send to channel (no external messages)", user->nick.c_str(), chan->name.c_str());
                                        return CMD_FAILURE;
                                }
-                               if ((chan->IsModeSet('m')) && (chan->GetStatus(user) < STATUS_VOICE))
+
+                               if (chan->IsModeSet('m'))
                                {
                                        user->WriteNumeric(404, "%s %s :Cannot send to channel (+m)", user->nick.c_str(), chan->name.c_str());
                                        return CMD_FAILURE;
                                }
+
+                               if (ServerInstance->Config->RestrictBannedUsers)
+                               {
+                                       if (chan->IsBanned(user))
+                                       {
+                                               user->WriteNumeric(404, "%s %s :Cannot send to channel (you're banned)", user->nick.c_str(), chan->name.c_str());
+                                               return CMD_FAILURE;
+                                       }
+                               }
                        }
                        int MOD_RESULT = 0;