summaryrefslogtreecommitdiffstats
path: root/hw1/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'hw1/main.c')
-rw-r--r--hw1/main.c22
1 files changed, 13 insertions, 9 deletions
diff --git a/hw1/main.c b/hw1/main.c
index cec60c8..f48fd2e 100644
--- a/hw1/main.c
+++ b/hw1/main.c
@@ -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");