Blame SOURCES/xinetd-2.3.14-leaking-fds-2a.patch

319196
diff -Naur xinetd-2.3.14-dist/xinetd/service.c xinetd-2.3.14/xinetd/service.c
319196
--- xinetd-2.3.14-dist/xinetd/service.c	2012-04-03 08:59:19.000000000 +0200
319196
+++ xinetd-2.3.14/xinetd/service.c	2012-04-03 09:02:34.588160317 +0200
319196
@@ -366,12 +366,24 @@
319196
 
319196
       msg( LOG_ERR, func,
319196
                   "socket creation failed (%m). service = %s", SC_ID( scp ) ) ;
319196
+#ifdef HAVE_POLL
319196
+      SVC_EVENTS( sp ) = 0;
319196
+      SVC_FD( sp ) = 0;
319196
+#else
319196
+      FD_CLR( SVC_FD( sp ), &ps.rws.socket_mask ) ;
319196
+#endif /* HAVE_POLL */
319196
       return( FAILED ) ;
319196
    }
319196
 
319196
    if ( set_fd_modes( sp ) == FAILED )
319196
    {
319196
       (void) Sclose( SVC_FD(sp) ) ;
319196
+#ifdef HAVE_POLL
319196
+      SVC_EVENTS( sp ) = 0;
319196
+      SVC_FD( sp ) = 0;
319196
+#else
319196
+      FD_CLR( SVC_FD( sp ), &ps.rws.socket_mask ) ;
319196
+#endif /* HAVE_POLL */
319196
       return( FAILED ) ;
319196
    }
319196
 
319196
@@ -385,6 +397,12 @@
319196
    if ( status == FAILED )
319196
    {
319196
       (void) Sclose( SVC_FD(sp) ) ;
319196
+#ifdef HAVE_POLL
319196
+      SVC_EVENTS( sp ) = 0;
319196
+      SVC_FD( sp ) = 0;
319196
+#else
319196
+      FD_CLR( SVC_FD( sp ), &ps.rws.socket_mask ) ;
319196
+#endif /* HAVE_POLL */
319196
       return( FAILED ) ;
319196
    }
319196