]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/channels.cpp
Change all socketengine methods to be static
[user/henk/code/inspircd.git] / src / channels.cpp
index 51a8f5625c920928c862c3b845718449438a1e83..7d8bff661311ff92fc7a9746be3ed034ab1f6ebc 100644 (file)
@@ -438,7 +438,6 @@ ModResult Channel::GetExtBanStatus(User *user, char type)
        ListModeBase* banlm = static_cast<ListModeBase*>(*ban);
        const ListModeBase::ModeList* bans = banlm->GetList(this);
        if (bans)
-
        {
                for (ListModeBase::ModeList::const_iterator it = bans->begin(); it != bans->end(); ++it)
                {
@@ -678,8 +677,6 @@ void Channel::UserList(User *user)
        std::string nick;
        for (UserMembIter i = userlist.begin(); i != userlist.end(); ++i)
        {
-               if (i->first->quitting)
-                       continue;
                if ((!has_user) && (i->first->IsModeSet(invisiblemode)) && (!has_privs))
                {
                        /*
@@ -828,8 +825,8 @@ void Invitation::Create(Channel* c, LocalUser* u, time_t timeout)
        else
        {
                inv = new Invitation(c, u, timeout);
-               c->invites.push_back(inv);
-               u->invites.push_back(inv);
+               c->invites.push_front(inv);
+               u->invites.push_front(inv);
                ServerInstance->Logs->Log("INVITATION", LOG_DEBUG, "Invitation::Create created new invitation %p", (void*) inv);
        }
 }
@@ -840,19 +837,17 @@ Invitation* Invitation::Find(Channel* c, LocalUser* u, bool check_expired)
        if (!u || u->invites.empty())
                return NULL;
 
-       InviteList locallist;
-       locallist.swap(u->invites);
-
        Invitation* result = NULL;
-       for (InviteList::iterator i = locallist.begin(); i != locallist.end(); )
+       for (InviteList::iterator i = u->invites.begin(); i != u->invites.end(); )
        {
                Invitation* inv = *i;
+               ++i;
+
                if ((check_expired) && (inv->expiry != 0) && (inv->expiry <= ServerInstance->Time()))
                {
                        /* Expired invite, remove it. */
                        std::string expiration = InspIRCd::TimeString(inv->expiry);
                        ServerInstance->Logs->Log("INVITATION", LOG_DEBUG, "Invitation::Find ecountered expired entry: %p expired %s", (void*) inv, expiration.c_str());
-                       i = locallist.erase(i);
                        delete inv;
                }
                else
@@ -863,11 +858,9 @@ Invitation* Invitation::Find(Channel* c, LocalUser* u, bool check_expired)
                                result = inv;
                                break;
                        }
-                       ++i;
                }
        }
 
-       locallist.swap(u->invites);
        ServerInstance->Logs->Log("INVITATION", LOG_DEBUG, "Invitation::Find result=%p", (void*) result);
        return result;
 }
@@ -875,21 +868,7 @@ Invitation* Invitation::Find(Channel* c, LocalUser* u, bool check_expired)
 Invitation::~Invitation()
 {
        // Remove this entry from both lists
-       InviteList::iterator it = std::find(chan->invites.begin(), chan->invites.end(), this);
-       if (it != chan->invites.end())
-               chan->invites.erase(it);
-       it = std::find(user->invites.begin(), user->invites.end(), this);
-       if (it != user->invites.end())
-               user->invites.erase(it);
-}
-
-void InviteBase::ClearInvites()
-{
-       ServerInstance->Logs->Log("INVITEBASE", LOG_DEBUG, "InviteBase::ClearInvites %p", (void*) this);
-       InviteList locallist;
-       locallist.swap(invites);
-       for (InviteList::const_iterator i = locallist.begin(); i != locallist.end(); ++i)
-       {
-               delete *i;
-       }
+       chan->invites.erase(this);
+       user->invites.erase(this);
+       ServerInstance->Logs->Log("INVITEBASE", LOG_DEBUG, "Invitation::~ %p", (void*) this);
 }