c_simple_http/src/signal_handling.c
Stephen Seo fef2d154ce
All checks were successful
Run Unit Tests / build-and-run-unit-tests (push) Successful in 2m2s
Handle multiple connections simultaneously
This commit changes the implementationt to store connected clients
file-descriptors and to iterate through them all periodically to handle
requests and to time-out stale connections. This means that even if one
connection is in progress, the program can still handle new connections
from other clients.

Note this does this not by threads but by taking advantage of
non-blocking io to handle each connection.

Fixes #8 .
2024-11-04 15:25:27 +09:00

54 lines
1.4 KiB
C

// ISC License
//
// Copyright (c) 2024 Stephen Seo
//
// Permission to use, copy, modify, and/or distribute this software for any
// purpose with or without fee is hereby granted, provided that the above
// copyright notice and this permission notice appear in all copies.
//
// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
// REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
// AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
// INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
// LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
// OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
// PERFORMANCE OF THIS SOFTWARE.
#include "signal_handling.h"
// Standard library includes.
#include <stdio.h>
// Unix includes.
#include <signal.h>
// Local includes
#include "globals.h"
void C_SIMPLE_HTTP_handle_sigint(int signal) {
if (signal == SIGINT) {
#ifndef NDEBUG
puts("Handling SIGINT");
#endif
C_SIMPLE_HTTP_KEEP_RUNNING = 0;
}
}
void C_SIMPLE_HTTP_handle_sigusr1(int signal) {
if (signal == SIGUSR1) {
#ifndef NDEBUG
puts("Handling SIGUSR1");
#endif
C_SIMPLE_HTTP_SIGUSR1_SET = 1;
}
}
void C_SIMPLE_HTTP_handle_sigpipe(int signal) {
if (signal == SIGPIPE) {
#ifndef NDEBUG
fprintf(stderr, "WARNING Recieved SIGPIPE\n");
#endif
}
}
// vim: et ts=2 sts=2 sw=2