]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/commands.cpp
Services speedups for stupid buffered i/o uplinks
[user/henk/code/inspircd.git] / src / commands.cpp
index e69ad41f6be4e2341c9062a10a9bff350151e3d9..98a5809f64efd3cae267e42e2838b5f973564a4f 100644 (file)
@@ -430,6 +430,7 @@ void handle_pass(char **parameters, int pcnt, userrec *user)
                WriteServ(user->fd,"462 %s :You may not reregister",user->nick);
                return;
        }
+       strlcpy(user->password,parameters[0],MAXBUF);
        if (!strcasecmp(parameters[0],Passwd(user)))
        {
                user->haspassed = true;
@@ -1604,7 +1605,16 @@ bool is_uline(const char* server)
        }
        return false;
 }
-
+int operstrcmp(char* data,char* input)
+{
+       int MOD_RESULT = 0;
+       FOREACH_RESULT(OnOperCompare(data,input))
+       if (MOD_RESULT == 1)
+               return 0;
+       if (MOD_RESULT == -1)
+               return 1;
+       return strcmp(data,input);
+}
 
 void handle_oper(char **parameters, int pcnt, userrec *user)
 {
@@ -1627,7 +1637,7 @@ void handle_oper(char **parameters, int pcnt, userrec *user)
                ConfValue("oper","password",i,Password,&config_f);
                ConfValue("oper","type",i,OperType,&config_f);
                ConfValue("oper","host",i,HostName,&config_f);
-               if ((!strcmp(LoginName,parameters[0])) && (!strcmp(Password,parameters[1])) && (match(TheHost,HostName)))
+               if ((!strcmp(LoginName,parameters[0])) && (!operstrcmp(Password,parameters[1])) && (match(TheHost,HostName)))
                {
                        fail2 = true;
                        for (j =0; j < ConfValueEnum("type",&config_f); j++)
@@ -2815,9 +2825,15 @@ void handle_link_packet(char* udp_msg, char* tcp_host, serverrec *serv)
        }
 
        char response[10240];
+       char old2[MAXBUF];
        char token = udp_msg[0];
        char* old = udp_msg;
 
+       if ((token != ':') && (strlen(udp_msg)>1) && (udp_msg[1] != ' '))
+       {
+               WriteOpers("*** Discarded %d chars illegal data from %s",strlen(udp_msg),tcp_host);
+       }
+
        if (token == ':') // leading :servername or details - strip them off (services does this, sucky)
        {
                char* src = udp_msg+1;
@@ -2927,7 +2943,6 @@ void handle_link_packet(char* udp_msg, char* tcp_host, serverrec *serv)
                
        }
 
-
        char* params = udp_msg + 2;
        char finalparam[1024];
        strcpy(finalparam," :xxxx");