-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathfsmhttp.c
36 lines (27 loc) · 874 Bytes
/
fsmhttp.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include "fsmhttp.h"
int main(int argc, char** argv) {
struct cl_args cl_args;
struct sockaddr_storage listen_addr;
int listen_fd;
/* get command line args - this will exit() on bad args error */
cl_args = get_args(argc, argv);
/* ignore SIGPIPE */
signal(SIGPIPE, SIG_IGN);
/* get listen address from args */
listen_addr = get_listen_address(cl_args.address_family,
cl_args.address, cl_args.service_or_port);
/* listen on socket, non blocking */
listen_fd = setup_listen_socket(&listen_addr);
/* daemonise if required */
if(cl_args.daemonise) {
/* daemonise, and:
* nochdir = 1, so don't change running directory
* noclose = 0, redirect stdin, out and err to /dev/null */
if(daemon(1, 0) < 0) {
err(1, "daemonise failed");
}
}
/* start event loop */
return listen_loop(cl_args.directory, cl_args.access_log_file,
listen_fd);
}