X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?p=ngircd-alex.git;a=blobdiff_plain;f=src%2Fngircd%2Firc-channel.c;h=2d520b314798b7364f7d90f664c64f5917f5ba23;hp=77deed7abde03f455c33018d8e01cf33fba47e53;hb=f2fa1045e24f81e5c844dd50d6e299cb1ad9acb2;hpb=d4d8102fc99a57e2b1f6604f8a5956c33e88bf2c diff --git a/src/ngircd/irc-channel.c b/src/ngircd/irc-channel.c index 77deed7a..2d520b31 100644 --- a/src/ngircd/irc-channel.c +++ b/src/ngircd/irc-channel.c @@ -82,7 +82,7 @@ static bool join_allowed(CLIENT *Client, CHANNEL *chan, const char *channame, const char *key) { - bool is_invited, is_banned; + bool is_invited, is_banned, is_exception;; const char *channel_modes; /* Allow IRC operators to overwrite channel limits */ @@ -90,9 +90,10 @@ join_allowed(CLIENT *Client, CHANNEL *chan, const char *channame, return true; is_banned = Lists_Check(Channel_GetListBans(chan), Client); + is_exception = Lists_Check(Channel_GetListExcepts(chan), Client); is_invited = Lists_Check(Channel_GetListInvites(chan), Client); - if (is_banned && !is_invited) { + if (is_banned && !is_invited && !is_exception) { /* Client is banned from channel (and not on invite list) */ IRC_WriteStrClient(Client, ERR_BANNEDFROMCHAN_MSG, Client_ID(Client), channame);