Commit Diff


commit - 082a92beef53fd26304c0dd059255d5eaba89f37
commit + 55865d7fc608efe4e8f6da4577bd10cf50c46f95
blob - 0b07949bd9e5fb659766c337743789e1fc7b739a
blob + e717f2664c7b970316a8bbb94ba79deda4dd8521
--- ChangeLog
+++ ChangeLog
@@ -10,6 +10,8 @@
                                -- ChangeLog --
 ngIRCd 0.11.1
 
+ - Fix sending of JOINs between servers when remote server appended mode
+   flags. (Rolf Eike Beer) [from HEAD]
  - send "G" instead of "H" flag in WHO replies (reported by Dana Dahlstrom).
  - Under some circumstances ngIRCd issued
  channel MODE message with a trailing space. (Dana Dahlstrom) [from HEAD]
@@ -738,4 +740,4 @@ ngIRCd 0.0.1, 31.12.2001
 
 
 -- 
-$Id: ChangeLog,v 1.332.2.8 2008/02/26 12:06:57 fw Exp $
+$Id: ChangeLog,v 1.332.2.9 2008/02/26 12:07:41 fw Exp $
blob - 39ef83d383a98ce6430d13631149c7e85c3b513d
blob + 139f5061ce6b8afa6777b1760593db2b076d8c40
--- src/ngircd/irc-channel.c
+++ src/ngircd/irc-channel.c
@@ -14,7 +14,7 @@
 
 #include "portab.h"
 
-static char UNUSED id[] = "$Id: irc-channel.c,v 1.40.2.1 2008/01/07 11:42:14 fw Exp $";
+static char UNUSED id[] = "$Id: irc-channel.c,v 1.40.2.2 2008/02/26 12:07:41 fw Exp $";
 
 #include "imp.h"
 #include <assert.h>
@@ -79,6 +79,14 @@ IRC_JOIN( CLIENT *Client, REQUEST *Req )
 	{
 		chan = NULL; flags = NULL;
 
+		if (Client_Type(Client) == CLIENT_SERVER) {
+			flags = strchr( channame, 0x7 );
+			if( flags ) {
+				*flags = '\0';
+				flags++;
+			}
+		}
+
 		/* wird der Channel neu angelegt? */
 		if( Channel_Search( channame )) {
 			is_new_chan = false;
@@ -90,18 +98,6 @@ IRC_JOIN( CLIENT *Client, REQUEST *Req )
 				continue;
 			}
 			is_new_chan = true;
-		}
-
-		/* Hat ein Server Channel-User-Modes uebergeben? */
-		if( Client_Type( Client ) == CLIENT_SERVER )
-		{
-			/* Channel-Flags extrahieren */
-			flags = strchr( channame, 0x7 );
-			if( flags )
-			{
-				*flags = '\0';
-				flags++;
-			}
 		}
 
 		/* Local client? */