Make triggers work properly again for privsmsgs to channels.
authorMichael Poole <mdpoole@troilus.org>
Sat, 15 Dec 2007 18:19:51 +0000 (13:19 -0500)
committerMichael Poole <mdpoole@troilus.org>
Sat, 15 Dec 2007 18:19:51 +0000 (13:19 -0500)
src/proto-common.c

index 729c8fcda38e0d3ef85c085c2cf188855e87a673..ee089ad4ecaa9368b3d28fdccbbab1bfabc1c384 100644 (file)
@@ -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++) {