version 1.200, 2022/03/28 07:40:57 |
version 1.201, 2022/05/30 12:48:57 |
|
|
evtimer_set(&server_ev_tidy, server_tidy_event, NULL); |
evtimer_set(&server_ev_tidy, server_tidy_event, NULL); |
evtimer_add(&server_ev_tidy, &tv); |
evtimer_add(&server_ev_tidy, &tv); |
|
|
|
server_acl_init(); |
|
|
server_add_accept(0); |
server_add_accept(0); |
proc_loop(server_proc, server_loop); |
proc_loop(server_proc, server_loop); |
|
|
|
|
static void |
static void |
server_accept(int fd, short events, __unused void *data) |
server_accept(int fd, short events, __unused void *data) |
{ |
{ |
struct sockaddr_storage sa; |
struct sockaddr_storage sa; |
socklen_t slen = sizeof sa; |
socklen_t slen = sizeof sa; |
int newfd; |
int newfd; |
|
struct client *c; |
|
|
server_add_accept(0); |
server_add_accept(0); |
if (!(events & EV_READ)) |
if (!(events & EV_READ)) |
|
|
} |
} |
fatal("accept failed"); |
fatal("accept failed"); |
} |
} |
|
|
if (server_exit) { |
if (server_exit) { |
close(newfd); |
close(newfd); |
return; |
return; |
} |
} |
server_client_create(newfd); |
c = server_client_create(newfd); |
|
if (!server_acl_join(c)) { |
|
c->exit_message = xstrdup("access not allowed"); |
|
c->flags |= CLIENT_EXIT; |
|
} |
} |
} |
|
|
/* |
/* |