X-Git-Url: https://tinc-vpn.org/git/browse?p=tinc;a=blobdiff_plain;f=src%2Fnet_setup.c;h=f52afb046fc337b7ca9e17814bd0449b82659311;hp=ccd600b730c41816a49363f0e55464e74cd6f81d;hb=a7e793c94ec414eb71ec2aa3debc9e2e5ed5cfef;hpb=0714ac6c59099a398e67770ad9c72fcec615812b diff --git a/src/net_setup.c b/src/net_setup.c index ccd600b7..f52afb04 100644 --- a/src/net_setup.c +++ b/src/net_setup.c @@ -1,7 +1,7 @@ /* net_setup.c -- Setup. Copyright (C) 1998-2005 Ivo Timmermans, - 2000-2006 Guus Sliepen + 2000-2008 Guus Sliepen This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -286,7 +286,7 @@ bool setup_myself(void) if(get_config_bool(lookup_config(myself->connection->config_tree, "TCPOnly"), &choice) && choice) myself->options |= OPTION_TCPONLY; - if(get_config_bool(lookup_config(myself->connection->config_tree, "PMTUDiscovery"), &choice) && choice) + if(!get_config_bool(lookup_config(myself->connection->config_tree, "PMTUDiscovery"), &choice) || choice) myself->options |= OPTION_PMTU_DISCOVERY; if(myself->options & OPTION_TCPONLY) @@ -572,14 +572,21 @@ void close_network_connections(void) 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); } if(myself && myself->connection) { subnet_update(myself, NULL, false); terminate_connection(myself->connection, false); + free_connection(myself->connection); } for(i = 0; i < listen_sockets; i++) { @@ -602,6 +609,10 @@ void close_network_connections(void) execute_script("tinc-down", envp); + if(myport) free(myport); + + EVP_CIPHER_CTX_cleanup(&packet_ctx); + for(i = 0; i < 4; i++) free(envp[i]);