/***********************************************************************
X3 ChangeLog
+2009-05-30 Neil Spierling <sirvulcan@sirvulcan.co.nz>
+
+ * src/hash.c: Couple of tweaks.
+
+ * src/proto-common.c: Fix for triggers not working with forwards as well as
+ off channel services.
+
2009-05-30 Neil Spierling <sirvulcan@sirvulcan.co.nz>
* src/chanserv.c: Fixed a crash with setting a .set option with an invalid
if (channel->members.used == 1
&& !(channel->modes & MODE_REGISTERED)
- && !(channel->modes & MODE_APASS))
+ && !(channel->modes & MODE_APASS)) {
mNode->modes |= MODE_CHANOP;
+ log_module(MAIN_LOG, LOG_DEBUG, "setting op");
+ }
if (IsLocal(user)) {
irc_join(user, channel);
}
- for (n=0; n<jf_used; n++) {
+ for (n=0; (n<jf_used) && !user->dead; n++) {
/* Callbacks return true if they kick or kill the user,
* and we can continue without removing mNode. */
if (jf_list[n](mNode))
/* Never send a NOTICE to a channel to one of the services */
cf = &chanmsg_funcs[(unsigned char)pd->text[0]];
- if (cf->func && !pd->is_notice
- && GetUserMode(cn, cf->service) && !IsDeaf(cf->service))
+ if (!pd->is_notice && cf->func
+ && ((cn->modes & MODE_REGISTERED) || GetUserMode(cn, cf->service)))
cf->func(pd->user, cn, pd->text+1, cf->service, pd->is_notice);
else
spamserv_channel_message(cn, pd->user, pd->text);