]> arthur.barton.de Git - ngircd-alex.git/commitdiff
do not call Conn_Close when io_event_create fails
authorFlorian Westphal <fw@strlen.de>
Sun, 17 Dec 2006 22:55:07 +0000 (22:55 +0000)
committerFlorian Westphal <fw@strlen.de>
Sun, 17 Dec 2006 22:55:07 +0000 (22:55 +0000)
src/ngircd/conn.c

index 3938babbba1d5fa8558189d565afc5948f2a140f..30b86b1adf8700f7b2b10006b4d67d62a6b1a1c8 100644 (file)
@@ -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 <assert.h>
@@ -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