X-Git-Url: https://tinc-vpn.org/git/browse?a=blobdiff_plain;f=src%2Fconnection.c;h=9587819d03e3d8bedf04890b8ad3bc526b9631ac;hb=3fba80174dbe29bcfe0d121a2a1d2e61be5ee57b;hp=62bfccb64c852d5537f992904b13d81f9548096f;hpb=79e9a4f743b7b59fed968575f6b36171cf4a0063;p=tinc diff --git a/src/connection.c b/src/connection.c index 62bfccb6..9587819d 100644 --- a/src/connection.c +++ b/src/connection.c @@ -32,7 +32,7 @@ #include "xalloc.h" splay_tree_t *connection_tree; /* Meta connections */ -connection_t *broadcast; +connection_t *everyone; static int connection_compare(const connection_t *a, const connection_t *b) { return a < b ? -1 : a == b ? 0 : 1; @@ -40,14 +40,14 @@ static int connection_compare(const connection_t *a, const connection_t *b) { void init_connections(void) { connection_tree = splay_alloc_tree((splay_compare_t) connection_compare, (splay_action_t) free_connection); - broadcast = new_connection(); - broadcast->name = xstrdup("everyone"); - broadcast->hostname = xstrdup("BROADCAST"); + everyone = new_connection(); + everyone->name = xstrdup("everyone"); + everyone->hostname = xstrdup("BROADCAST"); } void exit_connections(void) { splay_delete_tree(connection_tree); - free_connection(broadcast); + free_connection(everyone); } connection_t *new_connection(void) { @@ -69,6 +69,10 @@ void free_connection(connection_t *c) { cipher_close(&c->outcipher); digest_close(&c->outdigest); + ecdh_free(&c->ecdh); + ecdsa_free(&c->ecdsa); + rsa_free(&c->rsa); + if(c->hischallenge) free(c->hischallenge); @@ -84,6 +88,9 @@ void free_connection(connection_t *c) { if(event_initialized(&c->outevent)) event_del(&c->outevent); + if(c->socket > 0) + closesocket(c->socket); + free(c); }