diff options
| author | Alexander Barton <alex@barton.de> | 2013-09-03 17:13:46 +0200 |
|---|---|---|
| committer | Alexander Barton <alex@barton.de> | 2013-09-03 17:13:46 +0200 |
| commit | aad92ceafe8b4b0091867415504f83930a74428b (patch) | |
| tree | 3f497c7d25f48f4d12db82ec1669699a83ef8143 /src | |
| parent | 4102e8fdfea33a5d8c398c98db90914c5dc29610 (diff) | |
| download | ngircd-aad92ceafe8b4b0091867415504f83930a74428b.tar.gz ngircd-aad92ceafe8b4b0091867415504f83930a74428b.zip | |
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.
Diffstat (limited to 'src')
| -rw-r--r-- | src/ngircd/irc-channel.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/ngircd/irc-channel.c b/src/ngircd/irc-channel.c index 78332ea1..4bd5a9d1 100644 --- a/src/ngircd/irc-channel.c +++ b/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 */ |