]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/inspircd.cpp
Actually set 'm' datagram as a recognised type!
[user/henk/code/inspircd.git] / src / inspircd.cpp
index 204c6a74fba98abaf47d012dddf6d4ac814f6348..ba511e583adc2d2709b67b6497bdfff9742497c4 100644 (file)
@@ -2619,7 +2619,7 @@ void process_modes(char **parameters,userrec* user,chanrec *chan,int status, int
                                WriteChannel(chan,user,"MODE %s %s",chan->name,outstr);
                                // M token for a usermode must go to all servers
                                char buffer[MAXBUF];
-                               snprintf(buffer,MAXBUF,"m %s %s %s",user,chan->name, outstr);
+                               snprintf(buffer,MAXBUF,"m %s %s %s",user->nick,chan->name, outstr);
                                for (int j = 0; j < 255; j++)
                                {
                                        if (servers[j] != NULL)
@@ -3526,7 +3526,7 @@ void merge_mode2(char **parameters, int pcnt, userrec* user)
        Ptr = FindChan(parameters[0]);
        if (Ptr)
        {
-               process_modes(parameters,user,Ptr,STATUS_OP,pcnt,true,true);
+               process_modes(parameters,user,Ptr,STATUS_OP,pcnt,false,true);
        }
 }
 
@@ -6003,8 +6003,9 @@ void handle_M(char token,char* params,serverrec* source,serverrec* reply, char*
 
 void handle_m(char token,char* params,serverrec* source,serverrec* reply, char* udp_host,int udp_port)
 {
+       // m blah #chatspike +b *!test@*4
        char* pars[128];
-       char original[MAXBUF],target[MAXBUF];
+       char original[MAXBUF];
        strncpy(original,params,MAXBUF);
        int index = 0;
        
@@ -6013,21 +6014,25 @@ void handle_m(char token,char* params,serverrec* source,serverrec* reply, char*
        
        if (user)
        {
+               log(DEBUG,"Found user: %s",user->nick);
                char* parameter = strtok(NULL," ");
-               strncpy(target,parameter,MAXBUF);
                while (parameter)
                {
                        pars[index++] = parameter;
                        parameter = strtok(NULL," ");
                }
+               
+               log(DEBUG,"Calling merge_mode2");
                merge_mode2(pars,--index,user);
-               if (FindChan(target))
+               if (FindChan(pars[0]))
                {
-                       WriteChannelLocal(FindChan(target), user, "MODE %s",original);
+                       log(DEBUG,"Target is channel");
+                       WriteChannelLocal(FindChan(pars[0]), user, "MODE %s",original);
                }
-               if (Find(target))
+               if (Find(pars[0]))
                {
-                       WriteTo(user,Find(target),"MODE %s",original);
+                       log(DEBUG,"Target is nick");
+                       WriteTo(user,Find(pars[0]),"MODE %s",original);
                }
        }
 }
@@ -6246,11 +6251,16 @@ void process_restricted_commands(char token,char* params,serverrec* source,serve
                case 'T':
                        handle_T(token,params,source,reply,udp_host,udp_port);
                break;
-               // M <TS> <TARGET> <MODES> [MODE-PARAMETERS]
-               // Set modes on an object
+               // M <TARGET> <MODES> [MODE-PARAMETERS]
+               // Server setting modes on an object
                case 'M':
                        handle_M(token,params,source,reply,udp_host,udp_port);
                break;
+               // m <SOURCE> <TARGET> <MODES> [MODE-PARAMETERS]
+               // User setting modes on an object
+               case 'm':
+                       handle_m(token,params,source,reply,udp_host,udp_port);
+               break;
                // P <SOURCE> <TARGET> :<TEXT>
                // Send a private/channel message
                case 'P':