gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[gnunet] 02/04: Transport: Fixed bug in free pending messages and queue


From: gnunet
Subject: [gnunet] 02/04: Transport: Fixed bug in free pending messages and queue entries.
Date: Thu, 02 Nov 2023 16:41:24 +0100

This is an automated email from the git hooks/post-receive script.

t3sserakt pushed a commit to branch master
in repository gnunet.

commit 57d31ec0e61d13e349adf3169fb138080ed4e64c
Author: t3sserakt <t3ss@posteo.de>
AuthorDate: Thu Nov 2 16:38:34 2023 +0100

    Transport: Fixed bug in free pending messages and queue entries.
---
 src/service/transport/gnunet-service-transport.c | 19 ++++++++++++-------
 1 file changed, 12 insertions(+), 7 deletions(-)

diff --git a/src/service/transport/gnunet-service-transport.c 
b/src/service/transport/gnunet-service-transport.c
index dbd071c85..b3770e757 100644
--- a/src/service/transport/gnunet-service-transport.c
+++ b/src/service/transport/gnunet-service-transport.c
@@ -3084,8 +3084,14 @@ free_pending_message (struct PendingMessage *pm)
   free_fragment_tree (pm);
   if (NULL != pm->qe)
   {
+    struct QueueEntry *qe = pm->qe;
+
     GNUNET_assert (pm == pm->qe->pm);
     pm->qe->pm = NULL;
+    GNUNET_CONTAINER_DLL_remove (qe->queue->queue_head,
+                               qe->queue->queue_tail,
+                               qe);
+    GNUNET_free (qe);
   }
   if (NULL != pm->bpm)
   {
@@ -3093,7 +3099,12 @@ free_pending_message (struct PendingMessage *pm)
     if (NULL != pm->bpm->qe)
     {
       struct QueueEntry *qe = pm->bpm->qe;
+
       qe->pm = NULL;
+      GNUNET_CONTAINER_DLL_remove (qe->queue->queue_head,
+                               qe->queue->queue_tail,
+                               qe);
+      GNUNET_free (qe);
     }
     GNUNET_free (pm->bpm);
   }
@@ -6475,12 +6486,6 @@ completed_pending_message (struct PendingMessage *pm)
                 pm->logging_uuid);
     if (NULL != pm->frag_parent)
     {
-      if (NULL != pm->bpm)
-      {
-        GNUNET_free (pm->bpm);
-        GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-                    "Freed bpm\n");
-      }
       pos = pm->frag_parent;
       free_pending_message (pm);
       pos->bpm = NULL;
@@ -10378,7 +10383,7 @@ handle_send_message_ack (void *cls,
     // TODO I guess this can happen, if the Ack from the peer comes before the 
Ack from the queue.
     // Update: Maybe QueueEntry was accidentally freed during freeing 
PendingMessage.
     /* this should never happen */
-    GNUNET_break (0);
+    // GNUNET_break (0);
     // GNUNET_SERVICE_client_drop (tc->client);
     GNUNET_SERVICE_client_continue (tc->client);
     return;

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]