Nodes use events, so event system should be initialised first and destroyed last.
authorGuus Sliepen <guus@tinc-vpn.org>
Sat, 11 Nov 2006 22:44:15 +0000 (22:44 +0000)
committerGuus Sliepen <guus@tinc-vpn.org>
Sat, 11 Nov 2006 22:44:15 +0000 (22:44 +0000)
src/event.c
src/net.c
src/net_packet.c
src/net_setup.c
src/node.c

index c58175a..e7fbb88 100644 (file)
@@ -96,7 +96,7 @@ event_t *get_expired_event(void)
                event = event_tree->head->data;
 
                if(event->time < now) {
                event = event_tree->head->data;
 
                if(event->time < now) {
-                       avl_delete(event_tree, event);
+                       event_del(event);
                        return event;
                }
        }
                        return event;
                }
        }
index 81a0d89..e834f92 100644 (file)
--- 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);
 
                while((event = get_expired_event())) {
                        event->handler(event->data);
-                       free(event);
+                       free_event(event);
                }
 
                if(sigalrm) {
                }
 
                if(sigalrm) {
index ffda5a1..20bee34 100644 (file)
@@ -101,7 +101,7 @@ void send_mtu_probe(node_t *n)
                send_udppacket(n, &packet);
        }
 
                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;
        n->mtuevent->handler = (event_handler_t)send_mtu_probe;
        n->mtuevent->data = n;
        n->mtuevent->time = now + 1;
index 4bac3f0..ccd600b 100644 (file)
@@ -526,11 +526,11 @@ bool setup_network_connections(void)
 
        now = time(NULL);
 
 
        now = time(NULL);
 
+       init_events();
        init_connections();
        init_subnets();
        init_nodes();
        init_edges();
        init_connections();
        init_subnets();
        init_nodes();
        init_edges();
-       init_events();
        init_requests();
 
        if(get_config_int(lookup_config(config_tree, "PingInterval"), &pinginterval)) {
        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();
        envp[4] = NULL;
 
        exit_requests();
-       exit_events();
        exit_edges();
        exit_subnets();
        exit_nodes();
        exit_connections();
        exit_edges();
        exit_subnets();
        exit_nodes();
        exit_connections();
+       exit_events();
 
        execute_script("tinc-down", envp);
 
 
        execute_script("tinc-down", envp);
 
index 5cf5d96..5dad0aa 100644 (file)
@@ -93,12 +93,6 @@ void free_node(node_t *n)
        if(n->queue)
                list_delete_list(n->queue);
 
        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);
 
        if(n->key)
                free(n->key);
 
@@ -112,9 +106,17 @@ void free_node(node_t *n)
 
        EVP_CIPHER_CTX_cleanup(&n->packet_ctx);
 
 
        EVP_CIPHER_CTX_cleanup(&n->packet_ctx);
 
-       if(n->mtuevent)
+       if(n->mtuevent) {
                event_del(n->mtuevent);
                event_del(n->mtuevent);
+               free_event(n->mtuevent);
+       }
        
        
+       if(n->hostname)
+               free(n->hostname);
+
+       if(n->name)
+               free(n->name);
+
        free(n);
 }
 
        free(n);
 }