+ last_config_check = time(NULL);
+
+ return 0;
+}
+
+void retry(void) {
+ for list_each(connection_t, c, connection_list) {
+ if(c->outgoing && !c->node) {
+ timeout_del(&c->outgoing->ev);
+ if(c->status.connecting)
+ close(c->socket);
+ c->outgoing->timeout = 0;
+ terminate_connection(c, c->status.active);
+ }
+ }
+}
+
+/*
+ this is where it all happens...
+*/
+int main_loop(void) {
+ timeout_t pingtimer = {{0}};
+ timeout_t periodictimer = {{0}};
+
+ timeout_add(&pingtimer, timeout_handler, &pingtimer, &(struct timeval){pingtimeout, rand() % 100000});
+ timeout_add(&periodictimer, periodic_handler, &periodictimer, &(struct timeval){pingtimeout, rand() % 100000});
+
+#ifndef HAVE_MINGW
+ signal_t sighup = {0};
+ signal_t sigterm = {0};
+ signal_t sigquit = {0};
+ signal_t sigalrm = {0};
+
+ signal_add(&sighup, sighup_handler, &sighup, SIGHUP);
+ signal_add(&sigterm, sigterm_handler, &sigterm, SIGTERM);
+ signal_add(&sigquit, sigterm_handler, &sigquit, SIGQUIT);
+ signal_add(&sigalrm, sigalrm_handler, &sigalrm, SIGALRM);
+#endif
+
+ if(!event_loop()) {
+ logger(DEBUG_ALWAYS, LOG_ERR, "Error while waiting for input: %s", strerror(errno));
+ return 1;
+ }
+
+#ifndef HAVE_MINGW
+ signal_del(&sighup);
+ signal_del(&sigalrm);
+ signal_del(&sigquit);
+ signal_del(&sigterm);
+#endif
+
+ timeout_del(&periodictimer);
+ timeout_del(&pingtimer);
+