X-Git-Url: http://git.pk910.de/?p=srvx.git;a=blobdiff_plain;f=src%2Fproto-common.c;h=ee089ad4ecaa9368b3d28fdccbbab1bfabc1c384;hp=729c8fcda38e0d3ef85c085c2cf188855e87a673;hb=b179b2c1631c053404b888f0bef816aed43995c4;hpb=11ba875075db4905ec73226e3c09e8ad1b7965d4 diff --git a/src/proto-common.c b/src/proto-common.c index 729c8fc..ee089ad 100644 --- a/src/proto-common.c +++ b/src/proto-common.c @@ -431,7 +431,7 @@ privmsg_chan_helper(struct chanNode *cn, void *data) { struct privmsg_desc *pd = data; struct modeNode *mn; - struct chanmsg_func *cf = &chanmsg_funcs[(unsigned char)pd->text[0]]; + struct chanmsg_func *cf; int x; /* Don't complain if it can't find the modeNode because the channel might @@ -440,8 +440,9 @@ privmsg_chan_helper(struct chanNode *cn, void *data) mn->idle_since = now; /* Never send a NOTICE to a channel to one of the services */ - if (!pd->is_notice && cf->func - && ((cn->modes & MODE_REGISTERED) || GetUserMode(cn, cf->service))) + cf = &chanmsg_funcs[(unsigned char)pd->text[0]]; + if (!pd->is_notice && cf->func && GetUserMode(cn, cf->service) && !IsDeaf(cf->service)) + cf->func(pd->user, cn, pd->text+1, cf->service); /* This catches *all* text sent to the channel that the services server sees */ for (x = 0; x < ALLCHANMSG_FUNCS_MAX; x++) {