@@ -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;
}
@@ -424,7 +424,7 @@ int main_loop(void)
while((event = get_expired_event())) {
event->handler(event->data);
- free(event);
+ free_event(event);
if(sigalrm) {
@@ -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;
@@ -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);
@@ -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);