]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/channels.cpp
Remove legacy code, mostly related to 1.2 compatibility
[user/henk/code/inspircd.git] / src / channels.cpp
index c265171b5ce85c6ced4e78d30a440a3ed4f8eb28..229e2b8eaf0696846334da78fadd56141406bbc5 100644 (file)
@@ -231,7 +231,6 @@ Channel* Channel::JoinUser(User *user, const char* cn, bool override, const char
        if (!user || !cn || user->registered != REG_ALL)
                return NULL;
 
-       char cname[MAXBUF];
        std::string privs;
        Channel *Ptr;
 
@@ -264,7 +263,8 @@ Channel* Channel::JoinUser(User *user, const char* cn, bool override, const char
                }
        }
 
-       strlcpy(cname, cn, ServerInstance->Config->Limits.ChanMax);
+       std::string cname;
+       cname.assign(std::string(cn), 0, ServerInstance->Config->Limits.ChanMax);
        Ptr = ServerInstance->FindChan(cname);
        bool created_by_local = false;
 
@@ -287,7 +287,7 @@ Channel* Channel::JoinUser(User *user, const char* cn, bool override, const char
                if (IS_LOCAL(user) && override == false)
                {
                        ModResult MOD_RESULT;
-                       FIRST_MOD_RESULT(OnUserPreJoin, MOD_RESULT, (user, NULL, cname, privs, key ? key : ""));
+                       FIRST_MOD_RESULT(OnUserPreJoin, MOD_RESULT, (user, NULL, cname.c_str(), privs, key ? key : ""));
                        if (MOD_RESULT == MOD_RES_DENY)
                                return NULL;
                }
@@ -307,7 +307,7 @@ Channel* Channel::JoinUser(User *user, const char* cn, bool override, const char
                if (IS_LOCAL(user) && override == false)
                {
                        ModResult MOD_RESULT;
-                       FIRST_MOD_RESULT(OnUserPreJoin, MOD_RESULT, (user, Ptr, cname, privs, key ? key : ""));
+                       FIRST_MOD_RESULT(OnUserPreJoin, MOD_RESULT, (user, Ptr, cname.c_str(), privs, key ? key : ""));
                        if (MOD_RESULT == MOD_RES_DENY)
                        {
                                return NULL;
@@ -449,7 +449,7 @@ bool Channel::CheckBan(User* user, const std::string& mask)
                return (result == MOD_RES_DENY);
 
        // extbans were handled above, if this is one it obviously didn't match
-       if (mask[1] == ':')
+       if ((mask.length() <= 2) || (mask[1] == ':'))
                return false;
 
        std::string::size_type at = mask.find('@');
@@ -718,7 +718,7 @@ int Channel::CountInvisible()
        int count = 0;
        for (UserMembIter i = userlist.begin(); i != userlist.end(); i++)
        {
-               if (!(i->first->IsModeSet('i')))
+               if (!i->first->quitting && !i->first->IsModeSet('i'))
                        count++;
        }
 
@@ -793,6 +793,8 @@ void Channel::UserList(User *user)
 
        for (UserMembIter i = userlist.begin(); i != userlist.end(); i++)
        {
+               if (i->first->quitting)
+                       continue;
                if ((!has_user) && (i->first->IsModeSet('i')))
                {
                        /*
@@ -1013,7 +1015,8 @@ Invitation* Invitation::Find(Channel* c, LocalUser* u, bool check_expired)
                if ((check_expired) && (inv->expiry != 0) && (inv->expiry <= ServerInstance->Time()))
                {
                        /* Expired invite, remove it. */
-                       ServerInstance->Logs->Log("INVITATION", DEBUG, "Invitation::Find ecountered expired entry: %p expired %s", (void*) inv, ServerInstance->TimeString(inv->expiry).c_str());
+                       std::string expiration = ServerInstance->TimeString(inv->expiry);
+                       ServerInstance->Logs->Log("INVITATION", DEBUG, "Invitation::Find ecountered expired entry: %p expired %s", (void*) inv, expiration.c_str());
                        i = locallist.erase(i);
                        inv->cull();
                        delete inv;