X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fngircd%2Firc-channel.c;h=d714b48fcb8e3d28aed8cb2101bc6e452295290b;hb=e7e47e77a3886c258368a14a8c0bb393280aac64;hp=77deed7abde03f455c33018d8e01cf33fba47e53;hpb=d4d8102fc99a57e2b1f6604f8a5956c33e88bf2c;p=ngircd-alex.git diff --git a/src/ngircd/irc-channel.c b/src/ngircd/irc-channel.c index 77deed7a..d714b48f 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); @@ -650,7 +651,7 @@ IRC_LIST( CLIENT *Client, REQUEST *Req ) /* Target is indeed an other server, forward it! */ return IRC_WriteStrClientPrefix(target, from, "LIST %s :%s", - Client_ID(from), + Req->argv[0], Req->argv[1]); } }