From b5427d13db9aa17616e36de1bd5a90464af3e67d Mon Sep 17 00:00:00 2001 From: Alex Young Date: Mon, 11 Jun 2012 13:49:35 +0100 Subject: [PATCH] Explicitly check for which fd is acceptable in server_accept --- src/serve.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/serve.c b/src/serve.c index 8c4fd6c..3b84f58 100644 --- a/src/serve.c +++ b/src/serve.c @@ -492,22 +492,28 @@ int server_accept( struct server * params ) } if ( self_pipe_fd_isset( params->acl_updated_signal, &fds ) ) { + self_pipe_signal_clear( params->acl_updated_signal ); server_audit_clients( params ); } - activity_fd = FD_ISSET(params->server_fd, &fds) ? params->server_fd: - params->control_fd; - client_fd = accept(activity_fd, &client_address.generic, &socklen); - - if (activity_fd == params->server_fd) { + if ( FD_ISSET( params->server_fd, &fds ) ){ + + client_fd = accept( params->server_fd, &client_address.generic, &socklen ); + debug("Accepted nbd client socket"); + accept_nbd_client(params, client_fd, &client_address); - } - if (activity_fd == params->control_fd) { + + } else if( FD_ISSET( params->control_fd, &fds ) ) { + + client_fd = accept( params->control_fd, &client_address.generic, &socklen ); + debug("Accepted control client socket"); + accept_control_connection(params, client_fd, &client_address); } + return 1; }