]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/channels.cpp
Fix the problems GreenReaper found with the windows select engine, this has never...
[user/henk/code/inspircd.git] / src / channels.cpp
index effc47d73572a38ebb1c62b5a8f2fb956bc95015..838013c4c808d4b62c284496565b1a7aacb03abe 100644 (file)
@@ -184,6 +184,7 @@ CUList* Channel::GetVoicedUsers()
 
 void Channel::SetDefaultModes()
 {
+       ServerInstance->Logs->Log("CHANNELS", DEBUG, "SetDefaultModes %s", ServerInstance->Config->DefaultModes);
        irc::spacesepstream list(ServerInstance->Config->DefaultModes);
        std::string modeseq;
        std::string parameter;
@@ -357,7 +358,7 @@ Channel* Channel::JoinUser(InspIRCd* Instance, User *user, const char* cn, bool
        }
 
        /* As spotted by jilles, dont bother to set this on remote users */
-       if (IS_LOCAL(user) && Ptr->GetUserCounter() == 1)
+       if (IS_LOCAL(user) && Ptr->GetUserCounter() == 0)
                Ptr->SetDefaultModes();
 
        return Channel::ForceChan(Instance, Ptr, user, privs, bursting);
@@ -432,7 +433,10 @@ bool Channel::IsBanned(User* user)
        char mask[MAXBUF];
        int MOD_RESULT = 0;
        FOREACH_RESULT(I_OnCheckBan,OnCheckBan(user, this));
-       if (!MOD_RESULT)
+
+       if (MOD_RESULT == -1)
+               return true;
+       else if (MOD_RESULT == 0)
        {
                snprintf(mask, MAXBUF, "%s!%s@%s", user->nick, user->ident, user->GetIPString());
                for (BanList::iterator i = this->bans.begin(); i != this->bans.end(); i++)
@@ -539,7 +543,7 @@ long Channel::ServerKickUser(User* user, const char* reason, bool triggerevents,
                }
        }
 
-       if (servername == NULL)
+       if (servername == NULL || *ServerInstance->Config->HideWhoisServer)
                servername = ServerInstance->Config->ServerName;
 
        if (triggerevents)