commit 162338b8c8ffe7a0a83dc0e1e5dbc5b81e9cdc42 from: Alexander Barton date: Fri Jun 24 20:56:46 2005 UTC Ignore unknown commands received before the client is registered. commit - de395db8e3064919bbeaeb8344bf84f9566fb48b commit + 162338b8c8ffe7a0a83dc0e1e5dbc5b81e9cdc42 blob - 46cf6f4de727f534ebacb4a0b20fcc34e2865cd2 blob + 06cc29f3db9b12c7114919faa00a46d13bdfb0a3 --- ChangeLog +++ ChangeLog @@ -11,9 +11,12 @@ ngIRCd CVSHEAD - - ngircd startup: never run with root privileges, i.e. always switch uid. - - Make Netsplit Messages RFC compliant. - - Fix handling of QUIT Messages: send only one message, even if client + + - Don't generate error messages for unknown commands received before the + client is registered with the server (like the original ircd). + - Never run with root privileges but always switch the user ID. + - Make netsplit messages RFC compliant. + - Fix handling of QUIT Messages: send only one message, even if the client is member of multiple channels. - Don't exit server if closing of a socket fails; instead ignore it and pray that this will be "the right thing" ... @@ -605,4 +608,4 @@ ngIRCd 0.0.1, 31.12.2001 -- -$Id: ChangeLog,v 1.274 2005/06/17 19:04:53 fw Exp $ +$Id: ChangeLog,v 1.275 2005/06/24 20:56:46 alex Exp $ blob - e36b3e7e14b2cc1c3ad4e4a97bf77d13175a5cb4 blob + e0df6d8a0bc12bec26be4e13aa4d51a423c36d43 --- src/ngircd/parse.c +++ src/ngircd/parse.c @@ -12,7 +12,7 @@ #include "portab.h" -static char UNUSED id[] = "$Id: parse.c,v 1.62 2005/06/01 21:52:18 alex Exp $"; +static char UNUSED id[] = "$Id: parse.c,v 1.63 2005/06/24 20:56:46 alex Exp $"; /** * @file @@ -433,11 +433,23 @@ Handle_Request( CONN_ID Idx, REQUEST *Req ) return IRC_WriteStrClient( client, ERR_NOTREGISTERED_MSG, Client_ID( client )); } } + + if( Client_Type( client ) != CLIENT_USER && + Client_Type( client ) != CLIENT_SERVER && + Client_Type( client ) != CLIENT_SERVICE ) + return true; - /* Unbekannter Befehl */ - Log( LOG_DEBUG, "Connection %d: Unknown command \"%s\", %d %s,%s prefix.", Client_Conn( client ), Req->command, Req->argc, Req->argc == 1 ? "parameter" : "parameters", Req->prefix ? "" : " no" ); - if( Client_Type( client ) != CLIENT_SERVER ) return IRC_WriteStrClient( client, ERR_UNKNOWNCOMMAND_MSG, Client_ID( client ), Req->command ); - else return true; + /* Unknown command and registered connection: generate error: */ + Log( LOG_DEBUG, "Connection %d: Unknown command \"%s\", %d %s,%s prefix.", + Client_Conn( client ), Req->command, Req->argc, + Req->argc == 1 ? "parameter" : "parameters", + Req->prefix ? "" : " no" ); + + if( Client_Type( client ) != CLIENT_SERVER ) + return IRC_WriteStrClient( client, ERR_UNKNOWNCOMMAND_MSG, + Client_ID( client ), Req->command ); + + return true; } /* Handle_Request */