From 12cbce8059ffefbb295c9a0a1bf37745e4f3bc18 Mon Sep 17 00:00:00 2001 From: "B.Greenham" Date: Thu, 25 Feb 2010 19:16:38 -0500 Subject: [PATCH] Fix up +G and make it actually work. --- modules/core/m_message.c | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/modules/core/m_message.c b/modules/core/m_message.c index 2415bb2..107559d 100644 --- a/modules/core/m_message.c +++ b/modules/core/m_message.c @@ -767,7 +767,7 @@ msg_client(int p_or_n, const char *command, } /* XXX Controversial? allow opers always to send through a +g */ else if(!IsServer(source_p) && (IsSetCallerId(target_p) || - (IsSetRegOnlyMsg(target_p) && !source_p->user->suser[0]))) + (IsSetSCallerId(target_p) || (IsSetRegOnlyMsg(target_p) && !source_p->user->suser[0])))) { /* Here is the anti-flood bot/spambot code -db */ if(accept_message(source_p, target_p) || IsOper(source_p)) @@ -779,21 +779,24 @@ msg_client(int p_or_n, const char *command, source_p->host, command, target_p->name, text); return; } - if (IsSetRegOnlyMsg(target_p) && !source_p->user->suser[0]) + if (!IsSetCallerId(target_p)) { - if (p_or_n != NOTICE) - sendto_one_numeric(source_p, ERR_NONONREG, - form_str(ERR_NONONREG), - target_p->name); - return; - } - if (IsSetSCallerId(target_p) && !source_p->user->suser[0]) - { - if (p_or_n != NOTICE) - sendto_one_numeric(source_p, ERR_NOCOMMONCHAN, - form_str(ERR_NOCOMMONCHAN), - target_p->name); - return; + if (IsSetRegOnlyMsg(target_p) && !source_p->user->suser[0]) + { + if (p_or_n != NOTICE) + sendto_one_numeric(source_p, ERR_NONONREG, + form_str(ERR_NONONREG), + target_p->name); + return; + } + if (IsSetSCallerId(target_p)&& !has_common_channel(source_p, target_p)) + { + if (p_or_n != NOTICE) + sendto_one_numeric(source_p, ERR_NOCOMMONCHAN, + form_str(ERR_NOCOMMONCHAN), + target_p->name); + return; + } } /* check for accept, flag recipient incoming message */ if(p_or_n != NOTICE)