Remove the last bits of the legacy main_loop().

This commit is contained in:
Guus Sliepen 2007-05-18 09:43:52 +00:00
parent ddc6a81a85
commit 3909b8e51b
2 changed files with 11 additions and 43 deletions

View file

@ -202,7 +202,7 @@ void terminate_connection(connection_t *c, bool report)
end does not reply in time, we consider them dead end does not reply in time, we consider them dead
and close the connection. and close the connection.
*/ */
static void check_dead_connections(void) static void timeout_handler(int fd, short events, void *event)
{ {
avl_node_t *node, *next; avl_node_t *node, *next;
connection_t *c; connection_t *c;
@ -243,6 +243,8 @@ static void check_dead_connections(void)
} }
} }
} }
event_add(event, &(struct timeval){pingtimeout, 0});
} }
void handle_meta_connection_data(int fd, short events, void *data) void handle_meta_connection_data(int fd, short events, void *data)
@ -396,8 +398,7 @@ int main_loop(void)
{ {
struct timeval tv; struct timeval tv;
int r; int r;
time_t last_ping_check; struct event timeout_event;
struct event timeout;
struct event sighup_event; struct event sighup_event;
struct event sigint_event; struct event sigint_event;
struct event sigterm_event; struct event sigterm_event;
@ -409,6 +410,8 @@ int main_loop(void)
cp(); cp();
timeout_set(&timeout_event, timeout_handler, &timeout_event);
event_add(&timeout_event, &(struct timeval){pingtimeout, 0});
signal_set(&sighup_event, SIGHUP, sighup_handler, NULL); signal_set(&sighup_event, SIGHUP, sighup_handler, NULL);
signal_add(&sighup_event, NULL); signal_add(&sighup_event, NULL);
signal_set(&sigint_event, SIGINT, sigint_handler, NULL); signal_set(&sigint_event, SIGINT, sigint_handler, NULL);
@ -426,46 +429,9 @@ int main_loop(void)
signal_set(&sigalrm_event, SIGALRM, sigalrm_handler, NULL); signal_set(&sigalrm_event, SIGALRM, sigalrm_handler, NULL);
signal_add(&sigalrm_event, NULL); signal_add(&sigalrm_event, NULL);
last_ping_check = time(NULL); if(event_loop(0) < 0) {
logger(LOG_ERR, _("Error while waiting for input: %s"), strerror(errno));
srand(time(NULL)); return 1;
running = true;
while(running) {
tv.tv_sec = 1;
tv.tv_usec = 0;
/* XXX: libevent transition: old timeout code in this loop */
timeout_set(&timeout, dummy, NULL);
timeout_add(&timeout, &tv);
r = build_fdset();
if(r < 0) {
logger(LOG_ERR, _("Error building fdset: %s"), strerror(errno));
cp_trace();
dump_connections();
return 1;
}
r = event_loop(EVLOOP_ONCE);
if(r < 0) {
logger(LOG_ERR, _("Error while waiting for input: %s"),
strerror(errno));
cp_trace();
dump_connections();
return 1;
}
/* XXX: more libevent transition */
timeout_del(&timeout);
/* Let's check if everybody is still alive */
if(last_ping_check + pingtimeout < time(NULL)) {
check_dead_connections();
last_ping_check = time(NULL);
}
} }
signal_del(&sighup_event); signal_del(&sighup_event);
@ -476,6 +442,7 @@ int main_loop(void)
signal_del(&sigusr2_event); signal_del(&sigusr2_event);
signal_del(&sigwinch_event); signal_del(&sigwinch_event);
signal_del(&sigalrm_event); signal_del(&sigalrm_event);
event_del(&timeout_event);
return 0; return 0;
} }

View file

@ -447,6 +447,7 @@ int main(int argc, char **argv)
/* Slllluuuuuuurrrrp! */ /* Slllluuuuuuurrrrp! */
srand(time(NULL));
RAND_load_file("/dev/urandom", 1024); RAND_load_file("/dev/urandom", 1024);
ENGINE_load_builtin_engines(); ENGINE_load_builtin_engines();