Commit
565523cb allowed processing of further channel names given to the
JOIN command when a single name was invalid.
After this patch, the JOIN command handler continues to process channel
name lists even after errors like "channel is full", "too many channels",
and the like and generates appropriate error messages for all the
channels given by the client.
/* channel must be created, but forbidden by config */
IRC_WriteStrClient(Client, ERR_BANNEDFROMCHAN_MSG,
Client_ID(Client), channame);
/* channel must be created, but forbidden by config */
IRC_WriteStrClient(Client, ERR_BANNEDFROMCHAN_MSG,
Client_ID(Client), channame);
/* Test if the user has reached the channel limit */
if ((Conf_MaxJoins > 0) &&
/* 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,
- 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))
if (chan) {
/* Already existing channel: check if the
* client is allowed to join */
if (!join_allowed(Client, chan, channame, key))
} else {
/* New channel: first user will become channel
* operator unless this is a modeless channel */
} else {
/* New channel: first user will become channel
* operator unless this is a modeless channel */