]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/commands/cmd_invite.cpp
Use the remote channel's capitalization on a losing TS merge
[user/henk/code/inspircd.git] / src / commands / cmd_invite.cpp
index 9da6096a41600f9f40df89377758cca013ab5de8..438aa37d0fe53ca5cfcbb5f8c46a2217b1cddda2 100644 (file)
@@ -2,7 +2,7 @@
  *       | Inspire Internet Relay Chat Daemon |
  *       +------------------------------------+
  *
- *  InspIRCd: (C) 2002-2009 InspIRCd Development Team
+ *  InspIRCd: (C) 2002-2010 InspIRCd Development Team
  * See: http://wiki.inspircd.org/Credits
  *
  * This program is free but copyrighted software; see
@@ -41,7 +41,12 @@ CmdResult CommandInvite::Handle (const std::vector<std::string>& parameters, Use
 
        if (parameters.size() == 2 || parameters.size() == 3)
        {
-               User* u = ServerInstance->FindNick(parameters[0]);
+               User* u;
+               if (IS_LOCAL(user))
+                       u = ServerInstance->FindNickOnly(parameters[0]);
+               else
+                       u = ServerInstance->FindNick(parameters[0]);
+
                Channel* c = ServerInstance->FindChan(parameters[1]);
                time_t timeout = 0;
                if (parameters.size() == 3)
@@ -90,7 +95,8 @@ CmdResult CommandInvite::Handle (const std::vector<std::string>& parameters, Use
                        }
                }
 
-               u->InviteTo(c->name.c_str(), timeout);
+               if (IS_LOCAL(u))
+                       IS_LOCAL(u)->InviteTo(c->name.c_str(), timeout);
                u->WriteFrom(user,"INVITE %s :%s",u->nick.c_str(),c->name.c_str());
                user->WriteNumeric(RPL_INVITING, "%s %s %s",user->nick.c_str(),u->nick.c_str(),c->name.c_str());
                switch (ServerInstance->Config->AnnounceInvites)
@@ -113,11 +119,11 @@ CmdResult CommandInvite::Handle (const std::vector<std::string>& parameters, Use
                }
                FOREACH_MOD(I_OnUserInvite,OnUserInvite(user,u,c,timeout));
        }
-       else
+       else if (IS_LOCAL(user))
        {
                // pinched from ircu - invite with not enough parameters shows channels
                // youve been invited to but haven't joined yet.
-               InvitedList* il = user->GetInviteList();
+               InvitedList* il = IS_LOCAL(user)->GetInviteList();
                for (InvitedList::iterator i = il->begin(); i != il->end(); i++)
                {
                        user->WriteNumeric(RPL_INVITELIST, "%s :%s",user->nick.c_str(),i->first.c_str());