commit d2f7d3087dc6c1522aef8b24e1faf1d9ffe2c139 from: Florian Westphal date: Sun Dec 17 22:55:07 2006 UTC do not call Conn_Close when io_event_create fails commit - 3f1e03edd93bcbb1643291a4e0e462d1dc0c7019 commit + d2f7d3087dc6c1522aef8b24e1faf1d9ffe2c139 blob - 3938babbba1d5fa8558189d565afc5948f2a140f blob + 30b86b1adf8700f7b2b10006b4d67d62a6b1a1c8 --- src/ngircd/conn.c +++ src/ngircd/conn.c @@ -17,7 +17,7 @@ #include "portab.h" #include "io.h" -static char UNUSED id[] = "$Id: conn.c,v 1.198 2006/07/23 23:05:20 alex Exp $"; +static char UNUSED id[] = "$Id: conn.c,v 1.199 2006/12/17 22:55:07 fw Exp $"; #include "imp.h" #include @@ -998,23 +998,18 @@ New_Connection( int Sock ) c = Client_NewLocal( new_sock, inet_ntoa( new_addr.sin_addr ), CLIENT_UNKNOWN, false ); if( ! c ) { Log( LOG_ALERT, "Can't accept connection: can't create client structure!" ); - Simple_Message( new_sock, "ERROR :Internal error" ); - close( new_sock ); - return -1; + goto out; } + /* register callback */ + if (!io_event_create( new_sock, IO_WANTREAD, cb_clientserver)) + goto out; + Init_Conn_Struct( new_sock ); My_Connections[new_sock].sock = new_sock; My_Connections[new_sock].addr = new_addr; My_Connections[new_sock].client = c; - /* register callback */ - if (!io_event_create( new_sock, IO_WANTREAD, cb_clientserver)) { - Simple_Message( new_sock, "ERROR :Internal error" ); - Conn_Close( new_sock, "io_event_create() failed", NULL, false ); - return -1; - } - Log( LOG_INFO, "Accepted connection %d from %s:%d on socket %d.", new_sock, inet_ntoa( new_addr.sin_addr ), ntohs( new_addr.sin_port), Sock ); @@ -1030,7 +1025,11 @@ New_Connection( int Sock ) /* Penalty-Zeit setzen */ Conn_SetPenalty( new_sock, 4 ); return new_sock; -} /* New_Connection */ + out: + Simple_Message( new_sock, "ERROR :Internal error" ); + close( new_sock ); + return -1; +}/* New_Connection */ static CONN_ID