diff options
Diffstat (limited to 'src/common/proto-irc.c')
-rw-r--r-- | src/common/proto-irc.c | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/src/common/proto-irc.c b/src/common/proto-irc.c index 07c2b696..128c0c85 100644 --- a/src/common/proto-irc.c +++ b/src/common/proto-irc.c @@ -1493,6 +1493,9 @@ irc_inline (server *serv, char *buf, int len) if (buf[0] == ':') { + int eat1; + int eat2; + /* find a context for this message */ if (is_channel (serv, word[3])) { @@ -1507,10 +1510,11 @@ irc_inline (server *serv, char *buf, int len) word[0] = type; word_eol[1] = buf; /* keep the ":" for plugins */ - /* don't use || here, since it might short-circuit */ - if (plugin_emit_server (sess, type, word, word_eol) - + plugin_emit_server_attrs (sess, type, word, word_eol, - tags_data.timestamp)) + eat1 = plugin_emit_server (sess, type, word, word_eol); + eat2 = plugin_emit_server_attrs (sess, type, word, word_eol, + tags_data.timestamp); + + if (eat1 || eat2) goto xit; word[1]++; @@ -1518,12 +1522,16 @@ irc_inline (server *serv, char *buf, int len) } else { + int eat1; + int eat2; + word[0] = type = word[1]; - /* don't use || here, since it might short-circuit */ - if (plugin_emit_server (sess, type, word, word_eol) - + plugin_emit_server_attrs (sess, type, word, word_eol, - tags_data.timestamp)) + eat1 = plugin_emit_server (sess, type, word, word_eol); + eat2 = plugin_emit_server_attrs (sess, type, word, word_eol, + tags_data.timestamp); + + if (eat1 || eat2) goto xit; } |