X-Git-Url: https://tinc-vpn.org/git/browse?a=blobdiff_plain;f=src%2Fnet_setup.c;h=4407cd4f7353235b0237e8f1a85806cd44e6e52a;hb=bc0a24ec810cb911610ae7aafa245e47d1268cd2;hp=327cdcc4e84df863f88683ec83bdf430b416e7db;hpb=f02d3ed3e135b5326003e7f69f8331ff6a3cc219;p=tinc diff --git a/src/net_setup.c b/src/net_setup.c index 327cdcc4..4407cd4f 100644 --- a/src/net_setup.c +++ b/src/net_setup.c @@ -28,9 +28,10 @@ #include #include -#include "avl_tree.h" +#include "splay_tree.h" #include "conf.h" #include "connection.h" +#include "control.h" #include "device.h" #include "graph.h" #include "logger.h" @@ -525,10 +526,8 @@ bool setup_myself(void) { EV_READ|EV_PERSIST, handle_new_meta_connection, NULL); if(event_add(&listen_socket[listen_sockets].ev_tcp, NULL) < 0) { - logger(LOG_WARNING, _("event_add failed: %s"), strerror(errno)); - close(listen_socket[listen_sockets].tcp); - close(listen_socket[listen_sockets].udp); - continue; + logger(LOG_EMERG, _("event_add failed: %s"), strerror(errno)); + abort(); } event_set(&listen_socket[listen_sockets].ev_udp, @@ -536,11 +535,8 @@ bool setup_myself(void) { EV_READ|EV_PERSIST, handle_incoming_vpn_data, NULL); if(event_add(&listen_socket[listen_sockets].ev_udp, NULL) < 0) { - logger(LOG_WARNING, _("event_add failed: %s"), strerror(errno)); - close(listen_socket[listen_sockets].tcp); - close(listen_socket[listen_sockets].udp); - event_del(&listen_socket[listen_sockets].ev_tcp); - continue; + logger(LOG_EMERG, _("event_add failed: %s"), strerror(errno)); + abort(); } ifdebug(CONNECTIONS) { @@ -581,6 +577,7 @@ bool setup_network_connections(void) { init_nodes(); init_edges(); init_requests(); + init_control(); if(get_config_int(lookup_config(config_tree, "PingInterval"), &pinginterval)) { if(pinginterval < 1) { @@ -609,7 +606,7 @@ bool setup_network_connections(void) { close all open network connections */ void close_network_connections(void) { - avl_node_t *node, *next; + splay_node_t *node, *next; connection_t *c; char *envp[5]; int i; @@ -649,6 +646,7 @@ void close_network_connections(void) { asprintf(&envp[3], "NAME=%s", myself->name); envp[4] = NULL; + exit_control(); exit_requests(); exit_edges(); exit_subnets();