From: Alexander Barton Date: Fri, 9 Apr 2004 21:41:52 +0000 (+0000) Subject: Fixed handling of already existent entries in invite and ban lists: X-Git-Tag: rel-0-8-0-pre1~17 X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?p=ngircd-alex.git;a=commitdiff_plain;h=64d330b7266d9ef6d135968063e971b4dfc06367 Fixed handling of already existent entries in invite and ban lists: the attempt to add an already existent entry is no error, it must be propagated across servers (but not added to the list!). --- diff --git a/src/ngircd/irc-mode.c b/src/ngircd/irc-mode.c index 28e5327e..fbeb3cc4 100644 --- a/src/ngircd/irc-mode.c +++ b/src/ngircd/irc-mode.c @@ -14,7 +14,7 @@ #include "portab.h" -static char UNUSED id[] = "$Id: irc-mode.c,v 1.33 2004/02/29 16:28:44 alex Exp $"; +static char UNUSED id[] = "$Id: irc-mode.c,v 1.34 2004/04/09 21:41:52 alex Exp $"; #include "imp.h" #include @@ -642,7 +642,8 @@ Add_Invite( CLIENT *Prefix, CLIENT *Client, CHANNEL *Channel, CHAR *Pattern ) mask = Lists_MakeMask( Pattern ); - if( ! Lists_AddInvited( Prefix, mask, Channel, FALSE )) return CONNECTED; + if( ! Lists_AddInvited( mask, Channel, FALSE )) return CONNECTED; + return Send_ListChange( "+I", Prefix, Client, Channel, mask ); } /* Add_Invite */ @@ -658,7 +659,8 @@ Add_Ban( CLIENT *Prefix, CLIENT *Client, CHANNEL *Channel, CHAR *Pattern ) mask = Lists_MakeMask( Pattern ); - if( ! Lists_AddBanned( Prefix, mask, Channel )) return CONNECTED; + if( ! Lists_AddBanned( mask, Channel )) return CONNECTED; + return Send_ListChange( "+b", Prefix, Client, Channel, mask ); } /* Add_Ban */ diff --git a/src/ngircd/irc-op.c b/src/ngircd/irc-op.c index 648da5c3..e90d0745 100644 --- a/src/ngircd/irc-op.c +++ b/src/ngircd/irc-op.c @@ -14,7 +14,7 @@ #include "portab.h" -static char UNUSED id[] = "$Id: irc-op.c,v 1.12 2003/12/05 11:57:28 alex Exp $"; +static char UNUSED id[] = "$Id: irc-op.c,v 1.13 2004/04/09 21:41:52 alex Exp $"; #include "imp.h" #include @@ -104,7 +104,7 @@ IRC_INVITE( CLIENT *Client, REQUEST *Req ) if( remember ) { /* We must memember this invite */ - if( ! Lists_AddInvited( from, Client_Mask( target ), chan, TRUE )) return CONNECTED; + if( ! Lists_AddInvited( Client_Mask( target ), chan, TRUE )) return CONNECTED; } } diff --git a/src/ngircd/lists.c b/src/ngircd/lists.c index a9d47675..0f08bc61 100644 --- a/src/ngircd/lists.c +++ b/src/ngircd/lists.c @@ -14,7 +14,7 @@ #include "portab.h" -static char UNUSED id[] = "$Id: lists.c,v 1.13 2004/03/11 22:16:31 alex Exp $"; +static char UNUSED id[] = "$Id: lists.c,v 1.14 2004/04/09 21:41:52 alex Exp $"; #include "imp.h" #include @@ -102,19 +102,14 @@ Lists_CheckInvited( CLIENT *Client, CHANNEL *Chan ) GLOBAL BOOLEAN -Lists_AddInvited( CLIENT *From, CHAR *Mask, CHANNEL *Chan, BOOLEAN OnlyOnce ) +Lists_AddInvited( CHAR *Mask, CHANNEL *Chan, BOOLEAN OnlyOnce ) { C2C *c2c; assert( Mask != NULL ); assert( Chan != NULL ); - if( Already_Registered( My_Invites, Mask, Chan )) - { - /* Eintrag ist bereits vorhanden */ - IRC_WriteStrClient( From, RPL_INVITELIST_MSG, Client_ID( From ), Channel_Name( Chan ), Mask ); - return FALSE; - } + if( Already_Registered( My_Invites, Mask, Chan )) return TRUE; c2c = New_C2C( Mask, Chan, OnlyOnce ); if( ! c2c ) @@ -189,19 +184,14 @@ Lists_CheckBanned( CLIENT *Client, CHANNEL *Chan ) GLOBAL BOOLEAN -Lists_AddBanned( CLIENT *From, CHAR *Mask, CHANNEL *Chan ) +Lists_AddBanned( CHAR *Mask, CHANNEL *Chan ) { C2C *c2c; assert( Mask != NULL ); assert( Chan != NULL ); - if( Already_Registered( My_Bans, Mask, Chan )) - { - /* Eintrag ist bereits vorhanden */ - IRC_WriteStrClient( From, RPL_BANLIST_MSG, Client_ID( From ), Channel_Name( Chan ), Mask ); - return FALSE; - } + if( Already_Registered( My_Bans, Mask, Chan )) return TRUE; c2c = New_C2C( Mask, Chan, FALSE ); if( ! c2c ) diff --git a/src/ngircd/lists.h b/src/ngircd/lists.h index d71698d2..a1380a9f 100644 --- a/src/ngircd/lists.h +++ b/src/ngircd/lists.h @@ -8,7 +8,7 @@ * (at your option) any later version. * Please read the file COPYING, README and AUTHORS for more information. * - * $Id: lists.h,v 1.9 2002/12/12 12:23:43 alex Exp $ + * $Id: lists.h,v 1.10 2004/04/09 21:41:52 alex Exp $ * * Management of IRC lists: ban, invite, ... (header) */ @@ -22,12 +22,12 @@ GLOBAL VOID Lists_Init PARAMS(( VOID )); GLOBAL VOID Lists_Exit PARAMS(( VOID )); GLOBAL BOOLEAN Lists_CheckInvited PARAMS(( CLIENT *Client, CHANNEL *Chan )); -GLOBAL BOOLEAN Lists_AddInvited PARAMS(( CLIENT *From, CHAR *Mask, CHANNEL *Chan, BOOLEAN OnlyOnce )); +GLOBAL BOOLEAN Lists_AddInvited PARAMS(( CHAR *Mask, CHANNEL *Chan, BOOLEAN OnlyOnce )); GLOBAL VOID Lists_DelInvited PARAMS(( CHAR *Mask, CHANNEL *Chan )); GLOBAL BOOLEAN Lists_ShowInvites PARAMS(( CLIENT *Client, CHANNEL *Channel )); GLOBAL BOOLEAN Lists_CheckBanned PARAMS(( CLIENT *Client, CHANNEL *Chan )); -GLOBAL BOOLEAN Lists_AddBanned PARAMS(( CLIENT *From, CHAR *Mask, CHANNEL *Chan )); +GLOBAL BOOLEAN Lists_AddBanned PARAMS(( CHAR *Mask, CHANNEL *Chan )); GLOBAL VOID Lists_DelBanned PARAMS(( CHAR *Mask, CHANNEL *Chan )); GLOBAL BOOLEAN Lists_ShowBans PARAMS(( CLIENT *Client, CHANNEL *Channel ));