diff --git a/src/slurmctld/controller.c b/src/slurmctld/controller.c index d66f0002f3dc7c8e5a497c244f0c400da2ec2459..f83bb2320336eb526700615eac712184f4d5c87e 100644 --- a/src/slurmctld/controller.c +++ b/src/slurmctld/controller.c @@ -914,10 +914,13 @@ static void *_slurmctld_rpc_mgr(void *no_data) * Process incoming RPCs until told to shutdown */ while (_wait_for_server_thread()) { + int max_fd = -1; FD_ZERO(&rfds); - for (i=0; i<nports; i++) + for (i=0; i<nports; i++) { FD_SET(sockfd[i], &rfds); - if (select(nports, &rfds, NULL, NULL, NULL) == -1) { + max_fd = MAX(sockfd[i], max_fd); + } + if (select(max_fd+1, &rfds, NULL, NULL, NULL) == -1) { if (errno != EINTR) error("slurm_accept_msg_conn select: %m"); _free_server_thread();