From c96115940f1fea1c79284b7892aefc9b33ac7525 Mon Sep 17 00:00:00 2001 From: pk910 Date: Wed, 5 Oct 2011 12:55:15 +0200 Subject: [PATCH] don't block events coming from servers and ignore CTCP ACTION (/me) --- src/UserNode.h | 2 +- src/event_neonserv_ctcp.c | 3 ++- src/event_neonserv_mode.c | 2 +- src/event_neonserv_notice.c | 2 +- src/event_neonserv_topic.c | 2 +- 5 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/UserNode.h b/src/UserNode.h index 051a153..ccd7dc6 100644 --- a/src/UserNode.h +++ b/src/UserNode.h @@ -48,7 +48,7 @@ struct UserNode { struct UserNode *next; }; -#define isNetworkService(USER) (USER->flags & (USERFLAG_ISBOT | USERFLAG_ISIRCOP)) +#define isNetworkService(USER) (USER->flags & (USERFLAG_ISBOT | USERFLAG_ISIRCOP | USERFLAG_ISSERVER)) #define isBot(USER) (USER->flags & (USERFLAG_ISBOT)) void init_UserNode(); diff --git a/src/event_neonserv_ctcp.c b/src/event_neonserv_ctcp.c index fcc2a1a..9b7f700 100644 --- a/src/event_neonserv_ctcp.c +++ b/src/event_neonserv_ctcp.c @@ -28,9 +28,10 @@ static void neonserv_event_ctcp_async1(struct ClientSocket *client, struct UserN static int neonserv_ctcp(char *buffer, char *command, char *text); static void neonserv_event_chanctcp(struct UserNode *user, struct ChanNode *chan, char *command, char *text) { + if(!stricmp(command, "ACTION")) return; //always allow CTCP ACTION (/me) struct ClientSocket *client = getBotForChannel(chan); if(!client) return; //we can't "see" this event - if(user->flags & (USERFLAG_ISBOT | USERFLAG_ISIRCOP)) return; + if(isNetworkService(user)) return; loadChannelSettings(chan); if(!(chan->flags & CHANFLAG_CHAN_REGISTERED)) return; if(!(user->flags & USERFLAG_ISAUTHED)) { diff --git a/src/event_neonserv_mode.c b/src/event_neonserv_mode.c index eeeff8c..4c76673 100644 --- a/src/event_neonserv_mode.c +++ b/src/event_neonserv_mode.c @@ -32,7 +32,7 @@ struct neonserv_event_mode_cache { static void neonserv_event_mode(struct UserNode *user, struct ChanNode *chan, char *modes, char **argv, int argc) { struct ClientSocket *client = getBotForChannel(chan); if(!client) return; //we can't "see" this event - if(user->flags & (USERFLAG_ISBOT | USERFLAG_ISIRCOP)) return; + if(isNetworkService(user)) return; loadChannelSettings(chan); if(!(chan->flags & CHANFLAG_CHAN_REGISTERED)) return; struct neonserv_event_mode_cache *cache = malloc(sizeof(*cache)); diff --git a/src/event_neonserv_notice.c b/src/event_neonserv_notice.c index d4db61a..7de5578 100644 --- a/src/event_neonserv_notice.c +++ b/src/event_neonserv_notice.c @@ -28,7 +28,7 @@ static void neonserv_event_notice_async1(struct ClientSocket *client, struct Use static void neonserv_event_channotice(struct UserNode *user, struct ChanNode *chan, char *message) { struct ClientSocket *client = getBotForChannel(chan); if(!client) return; //we can't "see" this event - if(user->flags & (USERFLAG_ISBOT | USERFLAG_ISIRCOP)) return; + if(isNetworkService(user)) return; loadChannelSettings(chan); if(!(chan->flags & CHANFLAG_CHAN_REGISTERED)) return; if(!(user->flags & USERFLAG_ISAUTHED)) { diff --git a/src/event_neonserv_topic.c b/src/event_neonserv_topic.c index dbd1f5f..06df4b5 100644 --- a/src/event_neonserv_topic.c +++ b/src/event_neonserv_topic.c @@ -28,7 +28,7 @@ static void neonserv_event_topic_async1(struct ClientSocket *client, struct User static void neonserv_event_topic(struct UserNode *user, struct ChanNode *chan, const char *new_topic) { struct ClientSocket *client = getBotForChannel(chan); if(!client) return; //we can't "see" this event - if(user->flags & (USERFLAG_ISBOT | USERFLAG_ISIRCOP)) return; + if(isNetworkService(user)) return; loadChannelSettings(chan); if(!(chan->flags & CHANFLAG_CHAN_REGISTERED)) return; if(!(user->flags & USERFLAG_ISAUTHED)) { -- 2.20.1