commit aad92ceafe8b4b0091867415504f83930a74428b from: Alexander Barton date: Tue Sep 03 15:13:46 2013 UTC Don't enforce channel types for other servers The configuration option "AllowedChannelTypes" must only be enforced for regular clients and not for remote servers. Channels created by other servres are always allowed, because they already exist and the daemon must stay in sync with the network. commit - 4102e8fdfea33a5d8c398c98db90914c5dc29610 commit + aad92ceafe8b4b0091867415504f83930a74428b blob - 78332ea113e7706abb3d97bf35e26ff121adba87 blob + 4bd5a9d1ff30fb4a7e2cb7c909c68d21b93b06a5 --- src/ngircd/irc-channel.c +++ src/ngircd/irc-channel.c @@ -341,12 +341,6 @@ IRC_JOIN( CLIENT *Client, REQUEST *Req ) } chan = Channel_Search(channame); - if (!chan && !strchr(Conf_AllowedChannelTypes, channame[0])) { - /* channel must be created, but forbidden by config */ - IRC_WriteErrClient(Client, ERR_NOSUCHCHANNEL_MSG, - Client_ID(Client), channame); - goto join_next; - } /* Local client? */ if (Client_Type(Client) == CLIENT_USER) { @@ -354,6 +348,15 @@ IRC_JOIN( CLIENT *Client, REQUEST *Req ) /* Already existing channel: already member? */ if (Channel_IsMemberOf(chan, Client)) goto join_next; + } else { + /* Channel must be created */ + if (!strchr(Conf_AllowedChannelTypes, channame[0])) { + /* ... but channel type is not allowed! */ + IRC_WriteErrClient(Client, + ERR_NOSUCHCHANNEL_MSG, + Client_ID(Client), channame); + goto join_next; + } } /* Test if the user has reached the channel limit */