From 038c244407111e3f851782f9b8a9a3103e168d71 Mon Sep 17 00:00:00 2001 From: Hamish Coleman Date: Sun, 8 May 2022 17:28:05 +0100 Subject: [PATCH] Fix supernode memory leak on exit path --- src/edge_utils.c | 1 + src/n2n.c | 3 +++ 2 files changed, 4 insertions(+) diff --git a/src/edge_utils.c b/src/edge_utils.c index 519e621..29c3c10 100644 --- a/src/edge_utils.c +++ b/src/edge_utils.c @@ -2994,6 +2994,7 @@ void edge_term (n2n_edge_t * eee) { clear_peer_list(&eee->pending_peers); clear_peer_list(&eee->known_peers); + clear_peer_list(&eee->conf.supernodes); eee->transop.deinit(&eee->transop); eee->transop_lzo.deinit(&eee->transop_lzo); diff --git a/src/n2n.c b/src/n2n.c index b57a43b..f53585f 100644 --- a/src/n2n.c +++ b/src/n2n.c @@ -653,6 +653,9 @@ size_t clear_peer_list (struct peer_info ** peer_list) { size_t retval = 0; HASH_ITER(hh, *peer_list, scan, tmp) { + if (scan->purgeable == SN_UNPURGEABLE && scan->ip_addr) { + free(scan->ip_addr); + } HASH_DEL(*peer_list, scan); mgmt_event_post(N2N_EVENT_PEER,N2N_EVENT_PEER_CLEAR,scan); /* FIXME: generates events for more than just p2p */