Don't send MODE changes when origin is a server and

mask is already known.
This commit is contained in:
Alexander Barton 2004-04-25 15:42:05 +00:00
parent 6b1e322865
commit 967476799f
1 changed files with 11 additions and 1 deletions

View File

@ -14,7 +14,7 @@
#include "portab.h" #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 "imp.h"
#include <assert.h> #include <assert.h>
@ -635,6 +635,7 @@ LOCAL BOOLEAN
Add_Invite( CLIENT *Prefix, CLIENT *Client, CHANNEL *Channel, CHAR *Pattern ) Add_Invite( CLIENT *Prefix, CLIENT *Client, CHANNEL *Channel, CHAR *Pattern )
{ {
CHAR *mask; CHAR *mask;
BOOLEAN already;
assert( Client != NULL ); assert( Client != NULL );
assert( Channel != NULL ); assert( Channel != NULL );
@ -642,7 +643,11 @@ Add_Invite( CLIENT *Prefix, CLIENT *Client, CHANNEL *Channel, CHAR *Pattern )
mask = Lists_MakeMask( Pattern ); mask = Lists_MakeMask( Pattern );
already = Lists_IsInviteEntry( mask, Channel );
if( ! Lists_AddInvited( mask, Channel, FALSE )) return CONNECTED; 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 ); return Send_ListChange( "+I", Prefix, Client, Channel, mask );
} /* Add_Invite */ } /* Add_Invite */
@ -652,6 +657,7 @@ LOCAL BOOLEAN
Add_Ban( CLIENT *Prefix, CLIENT *Client, CHANNEL *Channel, CHAR *Pattern ) Add_Ban( CLIENT *Prefix, CLIENT *Client, CHANNEL *Channel, CHAR *Pattern )
{ {
CHAR *mask; CHAR *mask;
BOOLEAN already;
assert( Client != NULL ); assert( Client != NULL );
assert( Channel != NULL ); assert( Channel != NULL );
@ -659,8 +665,12 @@ Add_Ban( CLIENT *Prefix, CLIENT *Client, CHANNEL *Channel, CHAR *Pattern )
mask = Lists_MakeMask( Pattern ); mask = Lists_MakeMask( Pattern );
already = Lists_IsBanEntry( mask, Channel );
if( ! Lists_AddBanned( mask, Channel )) return CONNECTED; 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 ); return Send_ListChange( "+b", Prefix, Client, Channel, mask );
} /* Add_Ban */ } /* Add_Ban */