diff options
| author | Rolf Eike Beer <eike@sf-mail.de> | 2008-02-24 18:57:38 +0000 |
|---|---|---|
| committer | Florian Westphal <fw@strlen.de> | 2008-02-26 23:49:33 +0100 |
| commit | 44cdf1b1cac5eba318b388312efd9f00206632f8 (patch) | |
| tree | 26a10230654db1d6dc7bbffa1d3031fd630fe1f5 | |
| parent | e710e8ae3757675b167c25a1fe8055f7f6ea354c (diff) | |
| download | ngircd-44cdf1b1cac5eba318b388312efd9f00206632f8.tar.gz ngircd-44cdf1b1cac5eba318b388312efd9f00206632f8.zip | |
Fix sending of JOINs between servers.
This does hit only operators that join a channel with at least 2 servers active in the net the server the oper connects to sends "channel^Go" to the other servers the other server first searches for the channel and then strips the modes from the channel name he has to do the other way round: first strip and then check the channel name.
| -rw-r--r-- | ChangeLog | 4 | ||||
| -rw-r--r-- | src/ngircd/irc-channel.c | 16 |
2 files changed, 11 insertions, 9 deletions
diff --git a/ChangeLog b/ChangeLog index b36a0a92..1576f726 100644 --- a/ChangeLog +++ b/ChangeLog @@ -12,6 +12,8 @@ ngIRCd HEAD + - Fix sending of JOINs between servers when remote server appended mode + flags. (Rolf Eike Beer) - Install a LaunchDaemon script to start/stop ngIRCd on Mac OS X. - Implemented IRC commands INFO, SUMMON (dummy), and USERS (dummy) and enhanced test suite to check these commands. (Dana Dahlstrom) @@ -752,4 +754,4 @@ ngIRCd 0.0.1, 31.12.2001 -- -$Id: ChangeLog,v 1.341 2008/02/17 15:31:14 alex Exp $ +$Id: ChangeLog,v 1.342 2008/02/24 18:57:38 fw Exp $ diff --git a/src/ngircd/irc-channel.c b/src/ngircd/irc-channel.c index 3ffd85a0..55770571 100644 --- a/src/ngircd/irc-channel.c +++ b/src/ngircd/irc-channel.c @@ -14,7 +14,7 @@ #include "portab.h" -static char UNUSED id[] = "$Id: irc-channel.c,v 1.44 2008/02/16 11:21:33 fw Exp $"; +static char UNUSED id[] = "$Id: irc-channel.c,v 1.45 2008/02/24 18:57:38 fw Exp $"; #include "imp.h" #include <assert.h> @@ -217,13 +217,6 @@ IRC_JOIN( CLIENT *Client, REQUEST *Req ) while (channame) { flags = NULL; - chan = Channel_Search(channame); - if (!chan && Conf_PredefChannelsOnly) { - /* channel must be created, but server does not allow this */ - IRC_WriteStrClient(Client, ERR_BANNEDFROMCHAN_MSG, Client_ID(Client), channame); - break; - } - /* Did the server include channel-user-modes? */ if (Client_Type(Client) == CLIENT_SERVER) { flags = strchr(channame, 0x7); @@ -233,6 +226,13 @@ IRC_JOIN( CLIENT *Client, REQUEST *Req ) } } + chan = Channel_Search(channame); + if (!chan && Conf_PredefChannelsOnly) { + /* channel must be created, but server does not allow this */ + IRC_WriteStrClient(Client, ERR_BANNEDFROMCHAN_MSG, Client_ID(Client), channame); + break; + } + /* Local client? */ if (Client_Type(Client) == CLIENT_USER) { /* Test if the user has reached his maximum channel count */ |