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 */