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)
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);
}
}
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;
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);
}
}
}
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':