From d2e0bd0a9b3b88116d90eca913e4f893ad053f5e Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Thu, 14 Jul 2011 17:37:30 +0000 Subject: [PATCH] never discard current mc --- src/fragmentation/defragmentation.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/fragmentation/defragmentation.c b/src/fragmentation/defragmentation.c index 1d62484b5..34db0db3a 100644 --- a/src/fragmentation/defragmentation.c +++ b/src/fragmentation/defragmentation.c @@ -393,7 +393,10 @@ discard_oldest_mc (struct GNUNET_DEFRAGMENT_Context *dc) old); dc->list_size--; if (GNUNET_SCHEDULER_NO_TASK != old->ack_task) - GNUNET_SCHEDULER_cancel (old->ack_task); + { + GNUNET_SCHEDULER_cancel (old->ack_task); + old->ack_task = GNUNET_SCHEDULER_NO_TASK; + } GNUNET_free (old); } @@ -483,12 +486,12 @@ GNUNET_DEFRAGMENT_process_fragment (struct GNUNET_DEFRAGMENT_Context *dc, mc->bits = UINT64_MAX; /* set all 64 bit */ else mc->bits = (1LL << n) - 1; /* set lowest 'bits' bit */ + if (dc->list_size >= dc->num_msgs) + discard_oldest_mc (dc); GNUNET_CONTAINER_DLL_insert (dc->head, dc->tail, mc); dc->list_size++; - if (dc->list_size > dc->num_msgs) - discard_oldest_mc (dc); } /* copy data to 'mc' */ -- 2.25.1