Make sure resolved addressed for outgoing connections are freed, if there are any.
authorGuus Sliepen <guus@tinc-vpn.org>
Wed, 29 Nov 2006 16:57:46 +0000 (16:57 +0000)
committerGuus Sliepen <guus@tinc-vpn.org>
Wed, 29 Nov 2006 16:57:46 +0000 (16:57 +0000)
src/net.c
src/net_setup.c

index e834f92..31f1b0e 100644 (file)
--- a/src/net.c
+++ b/src/net.c
@@ -463,7 +463,8 @@ int main_loop(void)
                                
                                if(c->outgoing) {
                                        free(c->outgoing->name);
                                
                                if(c->outgoing) {
                                        free(c->outgoing->name);
-                                       freeaddrinfo(c->outgoing->ai);
+                                       if(c->outgoing->ai)
+                                               freeaddrinfo(c->outgoing->ai);
                                        free(c->outgoing);
                                        c->outgoing = NULL;
                                }
                                        free(c->outgoing);
                                        c->outgoing = NULL;
                                }
index ccd600b..f53127b 100644 (file)
@@ -572,8 +572,14 @@ void close_network_connections(void)
                next = node->next;
                c = node->data;
 
                next = node->next;
                c = node->data;
 
-               if(c->outgoing)
-                       free(c->outgoing->name), free(c->outgoing), c->outgoing = NULL;
+               if(c->outgoing) {
+                       if(c->outgoing->ai)
+                               freeaddrinfo(c->outgoing->ai);
+                       free(c->outgoing->name);
+                       free(c->outgoing);
+                       c->outgoing = NULL;
+               }
+
                terminate_connection(c, false);
        }
 
                terminate_connection(c, false);
        }