commit 3543c2220adf82efe549b39030741766717b8f25 from: Alexander Barton date: Wed Jan 09 01:08:42 2002 UTC - Parses handhabt Leerzeichen zw. Parametern nun etwas "lockerer". 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++;