From 21de9be569dc72dbc3feb3cea60b77b7e641a2c2 Mon Sep 17 00:00:00 2001 From: Andre Noll Date: Sat, 12 Apr 2008 12:00:22 +0200 Subject: [PATCH] server.c: Introduce server_select(). --- server.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/server.c b/server.c index 190df8a1..009c82a4 100644 --- a/server.c +++ b/server.c @@ -427,6 +427,18 @@ out: } } +static int server_select(int max_fileno, fd_set *readfds, fd_set *writefds, + struct timeval *timeout_tv) +{ + int ret; + + status_refresh(); + mmd_unlock(); + ret = para_select(max_fileno + 1, readfds, writefds, timeout_tv); + mmd_lock(); + return ret; +} + /** * the main function of para_server * @@ -456,14 +468,8 @@ repeat: para_fd_set(sockfd, &rfds, &max_fileno); para_fd_set(signal_pipe, &rfds, &max_fileno); timeout = vss_preselect(&rfds, &wfds, &max_fileno); - status_refresh(); - mmd_unlock(); - ret = para_select(max_fileno + 1, &rfds, &wfds, timeout); - mmd_lock(); - if (ret < 0) - goto repeat; + server_select(max_fileno + 1, &rfds, &wfds, timeout); vss_post_select(&rfds, &wfds); - status_refresh(); if (FD_ISSET(signal_pipe, &rfds)) { int sig; pid_t pid; -- 2.39.5