From c8ee6c3444ffe00fbe7c5257ed380c439b4ef117 Mon Sep 17 00:00:00 2001
From: ulfvonbelow <striness@tilde.club>
Date: Sun, 5 May 2024 00:59:06 -0500
Subject: [PATCH] transport: clean up SharedSecrets in gnunet-communicator-udp.

---
 src/service/transport/gnunet-communicator-udp.c | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/src/service/transport/gnunet-communicator-udp.c b/src/service/transport/gnunet-communicator-udp.c
index e9496c571..2a2f3a409 100644
--- a/src/service/transport/gnunet-communicator-udp.c
+++ b/src/service/transport/gnunet-communicator-udp.c
@@ -883,6 +883,8 @@ bi_destroy (struct BroadcastInterface *bi)
   GNUNET_free (bi);
 }
 
+static int
+secret_destroy (struct SharedSecret *ss);
 
 /**
  * Destroys a receiving state due to timeout or shutdown.
@@ -892,7 +894,7 @@ bi_destroy (struct BroadcastInterface *bi)
 static void
 receiver_destroy (struct ReceiverAddress *receiver)
 {
-
+  struct SharedSecret *ss;
   receiver->receiver_destroy_called = GNUNET_YES;
 
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
@@ -918,6 +920,10 @@ receiver_destroy (struct ReceiverAddress *receiver)
                          "# receivers active",
                          GNUNET_CONTAINER_multihashmap_size (receivers),
                          GNUNET_NO);
+  while (NULL != (ss = receiver->ss_head))
+  {
+    secret_destroy (ss);
+  }
   GNUNET_free (receiver->address);
   GNUNET_free (receiver->foreign_addr);
   GNUNET_free (receiver);
@@ -1065,6 +1071,7 @@ secret_destroy (struct SharedSecret *ss)
 static void
 sender_destroy (struct SenderAddress *sender)
 {
+  struct SharedSecret *ss;
   sender->sender_destroy_called = GNUNET_YES;
   GNUNET_assert (
     GNUNET_YES ==
@@ -1074,6 +1081,10 @@ sender_destroy (struct SenderAddress *sender)
                          "# senders active",
                          GNUNET_CONTAINER_multihashmap_size (senders),
                          GNUNET_NO);
+  while (NULL != (ss = sender->ss_head))
+  {
+    secret_destroy (ss);
+  }
   GNUNET_free (sender->address);
   GNUNET_free (sender);
 }
-- 
2.41.0

