diff --git a/src/server.c b/src/server.c index 8a331c2..5357f0e 100644 --- a/src/server.c +++ b/src/server.c @@ -1968,20 +1968,29 @@ int patty_ax25_server_run(patty_ax25_server *server) { while (1) { int nready; - struct timeval timer = { 1, 0 }, - remaining = { 1, 0 }; + struct timeval timeout = { 1, 0 }, + before, + after; memcpy(&server->fds_r, &server->fds_watch, sizeof(server->fds_r)); + if (gettimeofday(&before, NULL) < 0) { + goto error_gettimeofday; + } + if ((nready = select( server->fd_max, &server->fds_r, NULL, NULL, - &remaining)) < 0) { + &timeout)) < 0) { goto error_io; } - timersub(&timer, &remaining, &server->elapsed); + if (gettimeofday(&after, NULL) < 0) { + goto error_gettimeofday; + } + + timersub(&after, &before, &server->elapsed); if (handle_clients(server) < 0) { goto error_io; @@ -2004,6 +2013,7 @@ int patty_ax25_server_run(patty_ax25_server *server) { return 0; +error_gettimeofday: error_io: close(server->fd);