]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/commands.cpp
Added m_watch.cpp (provides /WATCH for notify) and fixes to allow it to work
[user/henk/code/inspircd.git] / src / commands.cpp
index 7e3a7f09b780f59656a44d97d21456f20f7b2603..3a9399f7c5b9ae455c931710b229ab84858c23c8 100644 (file)
 
 using namespace std;
 
+#include "inspircd_config.h"
 #include "inspircd.h"
 #include "inspircd_io.h"
 #include "inspircd_util.h"
-#include "inspircd_config.h"
 #include <unistd.h>
 #include <sys/errno.h>
 #include <sys/ioctl.h>
@@ -991,7 +991,7 @@ void handle_who(char **parameters, int pcnt, userrec *user)
                                                n_list++;
                                                if (n_list > MaxWhoResults)
                                                {
-                                                       WriteServ(user->fd,"557 %s WHO :Command aborted: More results than configured limit",user->nick);
+                                                       WriteServ(user->fd,"523 %s WHO :Command aborted: More results than configured limit",user->nick);
                                                        break;
                                                }
                                        }
@@ -1030,7 +1030,7 @@ void handle_who(char **parameters, int pcnt, userrec *user)
                                                 n_list++;
                                                 if (n_list > MaxWhoResults)
                                                 {
-                                                        WriteServ(user->fd,"557 %s WHO :Command aborted: More results than configured limit",user->nick);
+                                                        WriteServ(user->fd,"523 %s WHO :Command aborted: More results than configured limit",user->nick);
                                                         break;
                                                 }
 
@@ -1163,8 +1163,8 @@ void handle_user(char **parameters, int pcnt, userrec *user)
                }
                else {
                        strcpy(user->ident,"~"); /* we arent checking ident... but these days why bother anyway? */
-                       strlcat(user->ident,parameters[0],IDENTMAX);
-                       strlcpy(user->fullname,parameters[3],128);
+                       strlcat(user->ident,parameters[0],IDENTMAX+1);
+                       strlcpy(user->fullname,parameters[3],MAXGECOS);
                        user->registered = (user->registered | 1);
                }
        }
@@ -1228,12 +1228,12 @@ void handle_away(char **parameters, int pcnt, userrec *user)
 {
        if (pcnt)
        {
-               strlcpy(user->awaymsg,parameters[0],512);
+               strlcpy(user->awaymsg,parameters[0],MAXAWAY);
                WriteServ(user->fd,"306 %s :You have been marked as being away",user->nick);
        }
        else
        {
-               strlcpy(user->awaymsg,"",512);
+               strlcpy(user->awaymsg,"",MAXAWAY);
                WriteServ(user->fd,"305 %s :You are no longer marked as being away",user->nick);
        }
 }
@@ -2286,6 +2286,11 @@ void handle_n(char token,char* params,serverrec* source,serverrec* reply, char*
                if (!user->nick) return;
                strlcpy(user->nick, newnick,NICKMAX);
                log(DEBUG,"new nick set: %s",user->nick);
+               if (user->registered == 7)
+               {
+                       FOREACH_MOD OnUserPostNick(user,oldnick);
+               }
+
        }
 }
 
@@ -2406,9 +2411,9 @@ void handle_N(char token,char* params,serverrec* source,serverrec* reply, char*
        strlcpy(clientlist[nick]->nick, nick,NICKMAX);
        strlcpy(clientlist[nick]->host, host,160);
        strlcpy(clientlist[nick]->dhost, dhost,160);
-       strlcpy(clientlist[nick]->server, server,256);
-       strlcpy(clientlist[nick]->ident, ident,10); // +1 char to compensate for tilde
-       strlcpy(clientlist[nick]->fullname, gecos,128);
+       clientlist[nick]->server = (char*)FindServerNamePtr(server);
+       strlcpy(clientlist[nick]->ident, ident,IDENTMAX+1); // +1 char to compensate for tilde
+       strlcpy(clientlist[nick]->fullname, gecos,MAXGECOS);
        strlcpy(clientlist[nick]->ip,ipaddr,16);
        clientlist[nick]->signon = TS;
        clientlist[nick]->nping = 0; // this is ignored for a remote user anyway.
@@ -2448,7 +2453,7 @@ void handle_a(char token,char* params,serverrec* source,serverrec* reply, char*
        userrec* user = Find(nick);
 
        if (user)
-               strlcpy(user->fullname,gecos,MAXBUF);
+               strlcpy(user->fullname,gecos,MAXGECOS);
 }
 
 void handle_b(char token,char* params,serverrec* source,serverrec* reply, char* tcp_host, char* tcp_sum)
@@ -3262,6 +3267,7 @@ void handle_link_packet(char* tcp_msg, char* tcp_host, serverrec *serv,char* tcp
                                                                me[j]->connectors[k].SetServerName(servername);
                                                                me[j]->connectors[k].SetDescription(serverdesc);
                                                                me[j]->connectors[k].SetState(STATE_CONNECTED);
+                                                               AddServerName(servername);
                                                                NetSendMyRoutingTable();
                                                                return;
                                                        }
@@ -3328,7 +3334,6 @@ void handle_link_packet(char* tcp_msg, char* tcp_host, serverrec *serv,char* tcp
                        }
                }
                
-               
                char Link_ServerName[1024];
                char Link_IPAddr[1024];
                char Link_Port[1024];
@@ -3358,6 +3363,7 @@ void handle_link_packet(char* tcp_msg, char* tcp_host, serverrec *serv,char* tcp
                                        if (!strcasecmp(serv->connectors[t].GetServerName().c_str(),servername))
                                        {
                                                serv->connectors[t].SetState(STATE_CONNECTED);
+                                               AddServerName(servername);
                                        }
                                }
                
@@ -3424,6 +3430,7 @@ void handle_link_packet(char* tcp_msg, char* tcp_host, serverrec *serv,char* tcp
                                                                char buffer[MAXBUF];
                                                                me[j]->connectors[k].SetDescription(serverdesc);
                                                                me[j]->connectors[k].SetState(STATE_CONNECTED);
+                                                               AddServerName(servername);
                                                                snprintf(buffer,MAXBUF,"%s X 0",CreateSum().c_str());
                                                                serv->SendPacket(buffer,tcp_host);
                                                                DoSync(me[j],tcp_host);
@@ -3517,6 +3524,7 @@ void handle_link_packet(char* tcp_msg, char* tcp_host, serverrec *serv,char* tcp
                                                                me[j]->connectors[k].SetDescription(serverdesc);
                                                                me[j]->connectors[k].SetServerName(servername);
                                                                me[j]->connectors[k].SetState(STATE_SERVICES);
+                                                               AddServerName(servername);
                                                                snprintf(buffer,MAXBUF,"%s X 0",CreateSum().c_str());
                                                                serv->SendPacket(buffer,servername);
                                                                snprintf(buffer,MAXBUF,"%s s %s %s %lu :%s",CreateSum().c_str(),ServerName,Link_SendPass,LinkPort,ServerDesc);