[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.