From: Alexander Barton Date: Sun, 25 Apr 2004 15:42:05 +0000 (+0000) Subject: Don't send MODE changes when origin is a server and X-Git-Tag: rel-0-8-0-pre1~11 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=967476799f6fa2b30f82cbebb270d055ec63a547;p=ngircd Don't send MODE changes when origin is a server and mask is already known. --- diff --git a/src/ngircd/irc-mode.c b/src/ngircd/irc-mode.c index fbeb3cc4..69820d1d 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.34 2004/04/09 21:41:52 alex Exp $"; +static char UNUSED id[] = "$Id: irc-mode.c,v 1.35 2004/04/25 15:42:05 alex Exp $"; #include "imp.h" #include @@ -635,6 +635,7 @@ LOCAL BOOLEAN Add_Invite( CLIENT *Prefix, CLIENT *Client, CHANNEL *Channel, CHAR *Pattern ) { CHAR *mask; + BOOLEAN already; assert( Client != NULL ); assert( Channel != NULL ); @@ -642,7 +643,11 @@ Add_Invite( CLIENT *Prefix, CLIENT *Client, CHANNEL *Channel, CHAR *Pattern ) mask = Lists_MakeMask( Pattern ); + already = Lists_IsInviteEntry( mask, Channel ); + if( ! Lists_AddInvited( mask, Channel, FALSE )) return CONNECTED; + + if(( Client_Type( Prefix ) == CLIENT_SERVER ) && ( already == TRUE )) return CONNECTED; return Send_ListChange( "+I", Prefix, Client, Channel, mask ); } /* Add_Invite */ @@ -652,6 +657,7 @@ LOCAL BOOLEAN Add_Ban( CLIENT *Prefix, CLIENT *Client, CHANNEL *Channel, CHAR *Pattern ) { CHAR *mask; + BOOLEAN already; assert( Client != NULL ); assert( Channel != NULL ); @@ -659,8 +665,12 @@ Add_Ban( CLIENT *Prefix, CLIENT *Client, CHANNEL *Channel, CHAR *Pattern ) mask = Lists_MakeMask( Pattern ); + already = Lists_IsBanEntry( mask, Channel ); + if( ! Lists_AddBanned( mask, Channel )) return CONNECTED; + if(( Client_Type( Prefix ) == CLIENT_SERVER ) && ( already == TRUE )) return CONNECTED; + return Send_ListChange( "+b", Prefix, Client, Channel, mask ); } /* Add_Ban */