about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorAlexander Barton <alex@barton.de>2004-04-09 20:46:46 +0000
committerAlexander Barton <alex@barton.de>2004-04-09 20:46:46 +0000
commit233210b9063b0c2d49d59cb0f172e119b322e647 (patch)
treecd6ba9c0c68d25a52d267554853f12e19aa607fa /src
parentf68e92eb9a4dcc6a09677dac4d0cc4524c17148b (diff)
downloadngircd-233210b9063b0c2d49d59cb0f172e119b322e647.tar.gz
ngircd-233210b9063b0c2d49d59cb0f172e119b322e647.zip
Servers other than the destination server didn't clean up the invite
list of an "invite-only" channel properly when an INVITE'd user joined.
Diffstat (limited to 'src')
-rw-r--r--src/ngircd/irc-channel.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/ngircd/irc-channel.c b/src/ngircd/irc-channel.c
index a02f85c7..79be0005 100644
--- a/src/ngircd/irc-channel.c
+++ b/src/ngircd/irc-channel.c
@@ -14,7 +14,7 @@
 
 #include "portab.h"
 
-static char UNUSED id[] = "$Id: irc-channel.c,v 1.26 2004/03/11 22:16:31 alex Exp $";
+static char UNUSED id[] = "$Id: irc-channel.c,v 1.27 2004/04/09 20:46:48 alex Exp $";
 
 #include "imp.h"
 #include <assert.h>
@@ -86,7 +86,7 @@ IRC_JOIN( CLIENT *Client, REQUEST *Req )
 			}
 		}
 
-		/* Lokaler Client? */
+		/* Local client? */
 		if( Client_Type( Client ) == CLIENT_USER )
 		{
 			/* Test if the user has reached his maximum channel count */
@@ -159,6 +159,16 @@ IRC_JOIN( CLIENT *Client, REQUEST *Req )
 				}
 			}
 		}
+		else
+		{
+			/* Remote server: we don't need to know whether the
+			 * client is invited or not, but we have to make sure
+			 * that the "one shot" entries (generated by INVITE
+			 * commands) in this list become deleted when a user
+			 * joins a channel this way. */
+			chan = Channel_Search( channame );
+			if( chan != NULL ) (VOID)Lists_CheckInvited( target, chan );
+		}
 
 		/* Channel joinen (und ggf. anlegen) */
 		if( ! Channel_Join( target, channame ))