From e6ae01729aeaffc560c59e7887c5743521677e4d Mon Sep 17 00:00:00 2001 From: Cara Salter Date: Mon, 15 Aug 2022 23:43:52 -0400 Subject: data work --- src/server.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'src/server.c') diff --git a/src/server.c b/src/server.c index 68fec90..632cb28 100644 --- a/src/server.c +++ b/src/server.c @@ -5,8 +5,15 @@ #include #include #include +#include #include +static int socket_fd; + +void closeServer(int dummy) { + shutdown(socket_fd, 2); +} + int server_listen(server_t *server) { /* ** @@ -27,10 +34,19 @@ int server_listen(server_t *server) { struct sockaddr_in server_addr = {0}; + if (signal(SIGINT, closeServer) == SIG_ERR) { + printf("Could not set signal handler\n"); + return -1; + } + server_addr.sin_family = AF_INET; server_addr.sin_addr.s_addr = htonl(INADDR_ANY); server_addr.sin_port = htons(8000); + if (setsockopt(server->listen_fd, SOL_SOCKET, SO_REUSEADDR,1,sizeof(1))) { + printf("Could not set SO_REUSEADDR on server socket, continuing\n"); + } + err = bind(server->listen_fd, (struct sockaddr *)&server_addr, sizeof(server_addr)); if (err == -1) { @@ -39,6 +55,8 @@ int server_listen(server_t *server) { return err; } + socket_fd = server->listen_fd; + err = listen(server->listen_fd, 100); if (err == -1) { perror("listen"); -- cgit v1.2.3