X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fchannels.cpp;h=f49d359cd27f778c4a599948e51265ee05a7d0ea;hb=efb7084f4970b3703be1cef22c5930cc6a49454d;hp=8b9e38e9c6ce4bb143bb48ec6884e8db5e96ae55;hpb=bef2d3f462cacd978898235dc49a0a6c3bac0356;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/channels.cpp b/src/channels.cpp index 8b9e38e9c..f49d359cd 100644 --- a/src/channels.cpp +++ b/src/channels.cpp @@ -25,8 +25,6 @@ #include "inspircd.h" #include "listmode.h" -#include -#include "mode.h" namespace { @@ -292,17 +290,17 @@ Channel* Channel::JoinUser(LocalUser* user, std::string cname, bool override, co return chan; } -void Channel::ForceJoin(User* user, const std::string* privs, bool bursting, bool created_by_local) +Membership* Channel::ForceJoin(User* user, const std::string* privs, bool bursting, bool created_by_local) { if (IS_SERVER(user)) { ServerInstance->Logs->Log("CHANNELS", LOG_DEBUG, "Attempted to join server user " + user->uuid + " to channel " + this->name); - return; + return NULL; } Membership* memb = this->AddUser(user); if (!memb) - return; // Already on the channel + return NULL; // Already on the channel user->chans.push_front(memb); @@ -350,6 +348,7 @@ void Channel::ForceJoin(User* user, const std::string* privs, bool bursting, boo } FOREACH_MOD(OnPostJoin, (memb)); + return memb; } bool Channel::IsBanned(User* user) @@ -444,13 +443,13 @@ void Channel::PartUser(User *user, std::string &reason) } } -void Channel::KickUser(User* src, User* victim, const std::string& reason, Membership* srcmemb) +void Channel::KickUser(User* src, const UserMembIter& victimiter, const std::string& reason) { - UserMembIter victimiter = userlist.find(victim); - Membership* memb = ((victimiter != userlist.end()) ? victimiter->second : NULL); + Membership* memb = victimiter->second; CUList except_list; FOREACH_MOD(OnUserKick, (src, memb, reason, except_list)); + User* victim = memb->user; WriteAllExcept(src, false, 0, except_list, "KICK %s %s :%s", name.c_str(), victim->nick.c_str(), reason.c_str()); victim->chans.erase(memb);