From 3f76eb8a8c867e52c99353b14035222b9e36557a Mon Sep 17 00:00:00 2001 From: Jilles Tjoelker Date: Mon, 15 Feb 2010 22:08:55 +0100 Subject: [PATCH] Subject /invite to target change. Similar to /msg, inviting a user that is not in a channel you have op or voice in requires a free target; opers always have a free target. Being invited adds the source as a reply target. --- modules/m_invite.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/modules/m_invite.c b/modules/m_invite.c index cff1f83..f09021c 100644 --- a/modules/m_invite.c +++ b/modules/m_invite.c @@ -39,6 +39,7 @@ #include "parse.h" #include "modules.h" #include "packet.h" +#include "tgchange.h" static int m_invite(struct Client *, struct Client *, int, const char **); @@ -162,6 +163,14 @@ m_invite(struct Client *client_p, struct Client *source_p, int parc, const char if(MyConnect(source_p)) { + if (ConfigFileEntry.target_change && !IsOper(source_p) && + !find_allowing_channel(source_p, target_p) && + !add_target(source_p, target_p)) + { + sendto_one(source_p, form_str(ERR_TARGCHANGE), + me.name, source_p->name, target_p->name); + return; + } sendto_one(source_p, form_str(RPL_INVITING), me.name, source_p->name, target_p->name, parv[2]); @@ -179,6 +188,7 @@ m_invite(struct Client *client_p, struct Client *source_p, int parc, const char if(MyConnect(target_p)) { + add_reply_target(target_p, source_p); sendto_one(target_p, ":%s!%s@%s INVITE %s :%s", source_p->name, source_p->username, source_p->host, target_p->name, chptr->chname);