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:
Florian Westphal 2009-01-18 00:12:28 +01:00
parent 8f46681bc8
commit 95e8320ca9
1 changed files with 6 additions and 6 deletions

View File

@ -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;