]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/commands.cpp
Fixed strange join behavior reported by w00t (mirc requesting MODE immediately after...
[user/henk/code/inspircd.git] / src / commands.cpp
index 547d47536b2fd69d682a3e38a0b3fbbdfebe20ba..79f1f7c78d96ceefa9b42de25a3e41c4a8ea1222 100644 (file)
@@ -159,6 +159,8 @@ struct StrHashComp
                char a[MAXBUF],b[MAXBUF];
                strlcpy(a,s1.c_str(),MAXBUF);
                strlcpy(b,s2.c_str(),MAXBUF);
+                strlower(a);
+                strlower(b);
                return (strcasecmp(a,b) == 0);
        }
 
@@ -2534,6 +2536,7 @@ void handle_pipe(char token,char* params,serverrec* source,serverrec* reply, cha
 void process_restricted_commands(char token,char* params,serverrec* source,serverrec* reply, char* tcp_host,char* ipaddr,int port)
 {
        char buffer[MAXBUF];
+       int MOD_RESULT = 0;
 
        switch(token)
        {
@@ -2751,7 +2754,33 @@ void process_restricted_commands(char token,char* params,serverrec* source,serve
                break;
                // anything else
                default:
-                       WriteOpers("WARNING! Unknown datagram type '%c'",token);
+                       MOD_RESULT = 0;
+                       string_list s;
+                       char* data = strtok(params," ");
+                       while (data)
+                       {
+                               if (*data == ':')
+                               {
+                                       // the last item is a special case
+                                       data++;
+                                       char datalast[MAXBUF];
+                                       strlcpy(datalast,data,MAXBUF);
+                                       data = strtok(NULL," ");
+                                       while (data)
+                                       {
+                                               strlcpy(datalast," ",MAXBUF);
+                                               strlcpy(datalast,data,MAXBUF);
+                                               data = strtok(NULL," ");
+                                       }
+                                       s.push_back(data);
+                                       break;
+                               }
+                               s.push_back(data);
+                               data = strtok(NULL," ");
+                       }
+                       FOREACH_RESULT(OnMeshToken(token,s,source,reply,tcp_host,ipaddr,port));
+                       if (!MOD_RESULT)
+                               WriteOpers("WARNING! Unknown datagram type '%c'",token);
                break;
        }
 }