]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
Implement a change for bug #171. It might not be pretty in the /list output, but...
authorbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>
Fri, 10 Nov 2006 19:46:53 +0000 (19:46 +0000)
committerbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>
Fri, 10 Nov 2006 19:46:53 +0000 (19:46 +0000)
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@5678 e03df62e-2008-0410-955e-edbf42e46eb7

src/cmd_list.cpp
src/modules/m_safelist.cpp

index 3371fc738b96dfb371172bda9f9f741da8054845..5ce458ab7b48bff4b62f9b155dbbeaf483cb4beb 100644 (file)
@@ -41,11 +41,20 @@ CmdResult cmd_list::Handle (const char** parameters, int pcnt, userrec *user)
                        continue;
                // if the channel is not private/secret, OR the user is on the channel anyway
                bool n = i->second->HasUser(user);
-               if (((!(i->second->modes[CM_PRIVATE])) && (!(i->second->modes[CM_SECRET]))) || (n))
+               if ((i->second->modes[CM_PRIVATE]) && (!n))
                {
                        long users = i->second->GetUserCounter();
                        if (users)
-                               user->WriteServ("322 %s %s %d :[+%s] %s",user->nick,i->second->name,users,i->second->ChanModes(n),i->second->topic);
+                               user->WriteServ("322 %s *",user->nick,i->second->name);
+               }
+               else
+               {
+                       if (((!(i->second->modes[CM_PRIVATE])) && (!(i->second->modes[CM_SECRET]))) || (n))
+                       {
+                               long users = i->second->GetUserCounter();
+                               if (users)
+                                       user->WriteServ("322 %s %s %d :[+%s] %s",user->nick,i->second->name,users,i->second->ChanModes(n),i->second->topic);
+                       }
                }
        }
        user->WriteServ("323 %s :End of channel list.",user->nick);
index dfd864884e0f4bca96c29eee11286dcff7635fd3..c32f8913767dec8d43178390213f9676dbf9fdfc 100644 (file)
@@ -104,7 +104,19 @@ class ListTimer : public InspTimer
                                        chan = ServerInstance->GetChannelIndex(ld->list_position);
                                        /* spool details */
                                        bool has_user = (chan && chan->HasUser(u));
-                                       if ((chan) && (((!(chan->modes[CM_PRIVATE])) && (!(chan->modes[CM_SECRET]))) || (has_user)))
+                                       if ((chan) && (chan->modes[CM_PRIVATE]))
+                                       {
+                                               bool display = match(chan->name, ld->glob.c_str());
+                                               long users = chan->GetUserCounter();
+                                               if ((users) && (display))
+                                               {
+                                                       int counter = snprintf(buffer, MAXBUF, "322 %s *", u->nick);
+                                                       amount_sent += counter + ServerNameSize;
+                                                       ServerInstance->Log(DEBUG, "m_safelist.so: Sent %ld of safe %ld / 4", amount_sent, u->sendqmax);
+                                                       u->WriteServ(std::string(buffer));
+                                               }
+                                       }
+                                       else if ((chan) && (((!(chan->modes[CM_PRIVATE])) && (!(chan->modes[CM_SECRET]))) || (has_user)))
                                        {
                                                bool display = match(chan->name, ld->glob.c_str());
                                                long users = chan->GetUserCounter();