Commit Diff


commit - 8f7e7d666a1f0272f5ea29f8c02c9f0c6742d03b
commit + 3543c2220adf82efe549b39030741766717b8f25
blob - ad04717c664bdd81ced6b10ab97be635c81bc721
blob + bab9c6c5ec96d18fff4374c455f2b6b67bb06eea
--- src/ngircd/parse.c
+++ src/ngircd/parse.c
@@ -9,11 +9,14 @@
  * Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
  * der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
  *
- * $Id: parse.c,v 1.18 2002/01/07 15:29:11 alex Exp $
+ * $Id: parse.c,v 1.19 2002/01/09 01:08:42 alex Exp $
  *
  * parse.c: Parsen der Client-Anfragen
  *
  * $Log: parse.c,v $
+ * Revision 1.19  2002/01/09 01:08:42  alex
+ * - Parses handhabt Leerzeichen zw. Parametern nun etwas "lockerer".
+ *
  * Revision 1.18  2002/01/07 15:29:11  alex
  * - Status-Codes an den Server selber werden ignoriert, besseres Logging.
  *
@@ -149,6 +152,11 @@ GLOBAL BOOLEAN Parse_Request( CONN_ID Idx, CHAR *Reque
 		ptr = strchr( Request, ' ' );
 		if( ! ptr ) return Parse_Error( Idx, "Prefix without command!?" );
 		*ptr = '\0';
+#ifndef STRICT_RFC
+		/* multiple Leerzeichen als Trenner zwischen
+		 * Prefix und Befehl ignorieren */
+		while( *(ptr + 1) == ' ' ) ptr++;
+#endif
 		start = ptr + 1;
 	}
 	else start = Request;
@@ -157,7 +165,15 @@ GLOBAL BOOLEAN Parse_Request( CONN_ID Idx, CHAR *Reque
 
 	/* Befehl */
 	ptr = strchr( start, ' ' );
-	if( ptr ) *ptr = '\0';
+	if( ptr )
+	{
+		*ptr = '\0';
+#ifndef STRICT_RFC
+		/* multiple Leerzeichen als Trenner vor
+		*Parametertrennern ignorieren */
+		while( *(ptr + 1) == ' ' ) ptr++;
+#endif
+	}
 	req.command = start;
 
 	if( ! Validate_Command( &req )) return Parse_Error( Idx, "Invalid command" );
@@ -179,7 +195,15 @@ GLOBAL BOOLEAN Parse_Request( CONN_ID Idx, CHAR *Reque
 			{
 				req.argv[req.argc] = start;
 				ptr = strchr( start, ' ' );
-				if( ptr ) *ptr = '\0';
+				if( ptr )
+				{
+					*ptr = '\0';
+#ifndef STRICT_RFC
+					/* multiple Leerzeichen als
+					 * Parametertrenner ignorieren */
+					while( *(ptr + 1) == ' ' ) ptr++;
+#endif
+				}
 			}
 			
 			req.argc++;