]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
Fix for bug noticed by dotslasher (?) where SAJOIN can desync
authorbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>
Fri, 15 Sep 2006 17:17:30 +0000 (17:17 +0000)
committerbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>
Fri, 15 Sep 2006 17:17:30 +0000 (17:17 +0000)
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@5258 e03df62e-2008-0410-955e-edbf42e46eb7

include/channels.h
src/modules/m_sajoin.cpp

index 76d4aeb50bfd84b3e0b6839c002a4c2c66131409..6c92f08014ebe0db937b4060eb2effd4018a3b9d 100644 (file)
@@ -70,14 +70,6 @@ class BanItem : public HostItem
  */
 typedef std::vector<BanItem>   BanList;
 
-/** Holds a complete exempt list
- */
-typedef std::vector<ExemptItem>        ExemptList;
-
-/** Holds a complete invite list
- */
-typedef std::vector<InviteItem>        InviteList;
-
 /** A list of users on a channel
  */
 typedef std::map<userrec*,userrec*> CUList;
index 2fe790b6f1e208a563ec072745b79b96b5efbba1..dee6746cdbe798aafba0027ce07807b901ac359e 100644 (file)
@@ -57,6 +57,15 @@ class cmd_sajoin : public command_t
 
                        ServerInstance->WriteOpers(std::string(user->nick)+" used SAJOIN to make "+std::string(dest->nick)+" join "+parameters[1]);
                        chanrec::JoinUser(ServerInstance, dest, parameters[1], true);
+
+                       /* Fix for dotslasher and w00t - if the join didnt succeed, return CMD_FAILURE so that it doesnt propogate */
+                       chanrec* n = ServerInstance->FindChan(parameters[1]);
+                       if (n)
+                       {
+                               return (n->HasUser(dest) ? CMD_SUCCESS : CMD_FAILURE);
+                       }
+                       else
+                               return CMD_FAILURE;
                }
 
                return CMD_SUCCESS;