commit - 8a927a1b6aa95e716948aa21ed591381a2676ffc
commit + a1ded68a4938f55e9a44ba5f048aebc786e463ef
blob - 4eb5b861b932439344882f99a4fef8f7ce90dc10
blob + 5700f2e3d47bd8ed29c57a4970aea55f6ea07ab0
--- src/ngircd/irc-channel.c
+++ src/ngircd/irc-channel.c
* Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
* der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
*
- * $Id: irc-channel.c,v 1.13 2002/09/03 23:56:55 alex Exp $
+ * $Id: irc-channel.c,v 1.14 2002/09/08 00:50:25 alex Exp $
*
* irc-channel.c: IRC-Channel-Befehle
*/
IRC_JOIN( CLIENT *Client, REQUEST *Req )
{
CHAR *channame, *flags, *topic, modes[8];
- BOOLEAN is_new_chan;
+ BOOLEAN is_new_chan, is_invited, is_banned;
CLIENT *target;
CHANNEL *chan;
chan = Channel_Search( channame );
assert( chan != NULL );
+ is_banned = Lists_CheckBanned( target, chan );
+ is_invited = Lists_CheckInvited( target, chan );
+
/* Testen, ob Client gebanned ist */
- if( Lists_CheckBanned( target, chan ))
+ if(( is_banned == TRUE ) && ( is_invited == FALSE ))
{
- /* Client ist gebanned: */
+ /* Client ist gebanned (und nicht invited): */
IRC_WriteStrClient( Client, ERR_BANNEDFROMCHAN_MSG, Client_ID( Client ), channame );
/* naechsten Namen ermitteln */
}
/* Ist der Channel "invite-only"? */
- if( strchr( Channel_Modes( chan ), 'i' ))
+ if(( strchr( Channel_Modes( chan ), 'i' ) != NULL ) && ( is_invited == FALSE ))
{
- /* Wurde der Client invited? */
- if( ! Lists_CheckInvited( target, chan ))
- {
- /* Client wurde nicht invited: */
- IRC_WriteStrClient( Client, ERR_INVITEONLYCHAN_MSG, Client_ID( Client ), channame );
+ /* Channel ist "invite-only" und Client wurde nicht invited: */
+ IRC_WriteStrClient( Client, ERR_INVITEONLYCHAN_MSG, Client_ID( Client ), channame );
- /* naechsten Namen ermitteln */
- channame = strtok( NULL, "," );
- continue;
- }
+ /* naechsten Namen ermitteln */
+ channame = strtok( NULL, "," );
+ continue;
}
}
}