]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/commands.cpp
Added mode 'compression', stops abuse with modes like: +s-s+s-s+s-s
[user/henk/code/inspircd.git] / src / commands.cpp
index c1d9f80ab0cc4bb3c39846cb8b249bdfb249e98d..05e0a951c2feb0726e071e8b1476cbaeafa6418e 100644 (file)
@@ -1292,6 +1292,7 @@ void handle_modules(char **parameters, int pcnt, userrec *user)
                        WriteServ(user->fd,"900 %s :%s",user->nick,CleanFilename(modulename));
                }
        }
+       WriteServ(user->fd,"901 %s :End of MODULES list",user->nick);
 }
 
 void handle_stats(char **parameters, int pcnt, userrec *user)
@@ -1551,7 +1552,7 @@ void handle_squit(char **parameters, int pcnt, userrec *user)
                }
                bool have_this_server = true;
                int n_count = 0;
-               server_to_squit = "";
+               std::string server_to_squit = "";
                while (have_this_server)
                {
                        have_this_server = false;
@@ -1848,8 +1849,20 @@ void handle_v(char token,char* params,serverrec* source,serverrec* reply, char*
 {
        char* servername = strtok(params," ");
        char* versionstr = strtok(NULL,"\r\n");
-       ircd_connector* cn = reply->FindHost(servername);
-       cn->SetVersionString(versionstr);
+
+        for (int j = 0; j < 32; j++)
+        {
+                if (me[j] != NULL)
+                {
+                        for (int x = 0; x < me[j]->connectors.size(); x++)
+                        {
+                                if (!strcasecmp(me[j]->connectors[x].GetServerName().c_str(),servername))
+                                {
+                                       me[j]->connectors[x].SetVersionString(versionstr);
+                               }
+                       }
+               }
+       }
 }
 
 void handle_V(char token,char* params,serverrec* source,serverrec* reply, char* tcp_host)
@@ -1862,18 +1875,25 @@ void handle_V(char token,char* params,serverrec* source,serverrec* reply, char*
        userrec* user = Find(src);
        if (user)
        {
-               userrec* dst = Find(dest);
-               
-               if (dst)
+               // notice all - only issuable by a server
+               if (!strcmp(dest,"*"))
                {
-                       WriteTo(user, dst, "NOTICE %s :%s", dst->nick, text);
+                       NoticeAll(user,true,"%s",text);
                }
                else
                {
-                       chanrec* d = FindChan(dest);
-                       if (d)
+                       userrec* dst = Find(dest);      
+                       if (dst)
                        {
-                               ChanExceptSender(d, user, "NOTICE %s :%s", d->name, text);
+                               WriteTo(user, dst, "NOTICE %s :%s", dst->nick, text);
+                       }
+                       else
+                       {
+                               chanrec* d = FindChan(dest);
+                               if (d)
+                               {
+                                       ChanExceptSender(d, user, "NOTICE %s :%s", d->name, text);
+                               }
                        }
                }
        }