From: Guus Sliepen Date: Sat, 11 Nov 2006 22:44:15 +0000 (+0000) Subject: Nodes use events, so event system should be initialised first and destroyed last. X-Git-Tag: release-1.0.5~3 X-Git-Url: https://tinc-vpn.org/git/browse?p=tinc;a=commitdiff_plain;h=0714ac6c59099a398e67770ad9c72fcec615812b Nodes use events, so event system should be initialised first and destroyed last. --- diff --git a/src/event.c b/src/event.c index c58175a1..e7fbb882 100644 --- a/src/event.c +++ b/src/event.c @@ -96,7 +96,7 @@ event_t *get_expired_event(void) event = event_tree->head->data; if(event->time < now) { - avl_delete(event_tree, event); + event_del(event); return event; } } diff --git a/src/net.c b/src/net.c index 81a0d894..e834f923 100644 --- a/src/net.c +++ b/src/net.c @@ -424,7 +424,7 @@ int main_loop(void) while((event = get_expired_event())) { event->handler(event->data); - free(event); + free_event(event); } if(sigalrm) { diff --git a/src/net_packet.c b/src/net_packet.c index ffda5a12..20bee349 100644 --- a/src/net_packet.c +++ b/src/net_packet.c @@ -101,7 +101,7 @@ void send_mtu_probe(node_t *n) send_udppacket(n, &packet); } - n->mtuevent = xmalloc(sizeof(*n->mtuevent)); + n->mtuevent = new_event(); n->mtuevent->handler = (event_handler_t)send_mtu_probe; n->mtuevent->data = n; n->mtuevent->time = now + 1; diff --git a/src/net_setup.c b/src/net_setup.c index 4bac3f0b..ccd600b7 100644 --- a/src/net_setup.c +++ b/src/net_setup.c @@ -526,11 +526,11 @@ bool setup_network_connections(void) now = time(NULL); + init_events(); init_connections(); init_subnets(); init_nodes(); init_edges(); - init_events(); init_requests(); if(get_config_int(lookup_config(config_tree, "PingInterval"), &pinginterval)) { @@ -594,11 +594,11 @@ void close_network_connections(void) envp[4] = NULL; exit_requests(); - exit_events(); exit_edges(); exit_subnets(); exit_nodes(); exit_connections(); + exit_events(); execute_script("tinc-down", envp); diff --git a/src/node.c b/src/node.c index 5cf5d967..5dad0aaf 100644 --- a/src/node.c +++ b/src/node.c @@ -93,12 +93,6 @@ void free_node(node_t *n) if(n->queue) list_delete_list(n->queue); - if(n->name) - free(n->name); - - if(n->hostname) - free(n->hostname); - if(n->key) free(n->key); @@ -112,9 +106,17 @@ void free_node(node_t *n) EVP_CIPHER_CTX_cleanup(&n->packet_ctx); - if(n->mtuevent) + if(n->mtuevent) { event_del(n->mtuevent); + free_event(n->mtuevent); + } + if(n->hostname) + free(n->hostname); + + if(n->name) + free(n->name); + free(n); }