irc.c: Fix handling of channels containing dots
commit 2546a13ad2
('Cumulative Message Patch') broke PRIVMSG to channels
containing dots.
Fix this by switching evaluation order:
Check first if the target matches a existing channel and only do a check
for target masks if that failed.
PRIVMSG with host/server masks is described in RFC 2812, section 3.3.1.
Makes one wonder how a server is _really_ supposed to tell the difference
between hostmasks and channel names.
Sigh.
This commit is contained in:
parent
8f46681bc8
commit
95e8320ca9
|
@ -466,6 +466,12 @@ Send_Message(CLIENT * Client, REQUEST * Req, int ForceType, bool SendErrors)
|
|||
Req->command, Client_ID(cl),
|
||||
Req->argv[1]))
|
||||
return DISCONNECTED;
|
||||
} else if (ForceType != CLIENT_SERVICE
|
||||
&& (chan = Channel_Search(currentTarget))) {
|
||||
/* channel */
|
||||
if (!Channel_Write(chan, from, Client, Req->command,
|
||||
SendErrors, Req->argv[1]))
|
||||
return DISCONNECTED;
|
||||
} else if (ForceType != CLIENT_SERVICE
|
||||
&& strchr("$#", currentTarget[0])
|
||||
&& strchr(currentTarget, '.')) {
|
||||
|
@ -473,12 +479,6 @@ Send_Message(CLIENT * Client, REQUEST * Req, int ForceType, bool SendErrors)
|
|||
if (!Send_Message_Mask(from, Req->command, currentTarget,
|
||||
Req->argv[1], SendErrors))
|
||||
return DISCONNECTED;
|
||||
} else if (ForceType != CLIENT_SERVICE
|
||||
&& (chan = Channel_Search(currentTarget))) {
|
||||
/* channel */
|
||||
if (!Channel_Write(chan, from, Client, Req->command,
|
||||
SendErrors, Req->argv[1]))
|
||||
return DISCONNECTED;
|
||||
} else {
|
||||
if (!SendErrors)
|
||||
return CONNECTED;
|
||||
|
|
Loading…
Reference in New Issue