commit - 77f68b4fd140404848e203a6634ecd472294723f
commit + d4d8102fc99a57e2b1f6604f8a5956c33e88bf2c
blob - 196b5477487cebdfa0c073277a1ff81115a7d798
blob + 77deed7abde03f455c33018d8e01cf33fba47e53
--- src/ngircd/irc-channel.c
+++ src/ngircd/irc-channel.c
/* channel must be created, but forbidden by config */
IRC_WriteStrClient(Client, ERR_BANNEDFROMCHAN_MSG,
Client_ID(Client), channame);
- break;
+ goto join_next;
}
/* Local client? */
/* Test if the user has reached the channel limit */
if ((Conf_MaxJoins > 0) &&
- (Channel_CountForUser(Client) >= Conf_MaxJoins))
- return IRC_WriteStrClient(Client,
+ (Channel_CountForUser(Client) >= Conf_MaxJoins)) {
+ if (!IRC_WriteStrClient(Client,
ERR_TOOMANYCHANNELS_MSG,
- Client_ID(Client), channame);
+ Client_ID(Client), channame))
+ return DISCONNECTED;
+ goto join_next;
+ }
+
if (chan) {
/* Already existing channel: check if the
* client is allowed to join */
if (!join_allowed(Client, chan, channame, key))
- break;
+ goto join_next;
} else {
/* New channel: first user will become channel
* operator unless this is a modeless channel */