diff options
Diffstat (limited to 'hw1/main.c')
-rw-r--r-- | hw1/main.c | 22 |
1 files changed, 13 insertions, 9 deletions
@@ -14,18 +14,18 @@ #include <sys/time.h> #include <unistd.h> -volatile sig_atomic_t proc_message_request; -volatile sig_atomic_t proc_quit_request; - -static void proc_message_request_setter (int signo) { - proc_message_request = 1; -} +static volatile sig_atomic_t proc_message_request; +static volatile sig_atomic_t proc_quit_request; static void proc_quit_request_setter (int signo) { proc_quit_request = 1; } -static void message_cb (server* svr, request* req, int maxfd) { +static void proc_message_request_setter (int signo) { + proc_message_request = 1; +} + +static void proc_message_print (server* svr, request* req, int maxfd) { putchar ('\n'); printf ( @@ -139,8 +139,12 @@ int main (int argc, char** argv) { printf("\nstarting on %.80s, port %d, fd %d, maxfd %d ...\n", svr.hostname, svr.port, svr.listen_fd, maxfd); - while (procconn(&svr, requestP, maxfd, - (struct timeval) { 1, 0 }, message_cb)); + while (!proc_quit_request) { + procconn (&svr, requestP, maxfd, (struct timeval) { 1, 0 }); + if (proc_message_request) { + proc_message_print (&svr, requestP, maxfd); + } + } printf("\nquitting...\n"); |