- test for external iterator
[oweals/gnunet.git] / src / util / mq.c
index 04129a7b45006429c8818ed1186c9260af2405cd..c215de187f1a88049abd57f58991c9a7e32d4291 100644 (file)
@@ -690,9 +690,7 @@ GNUNET_MQ_assoc_remove (struct GNUNET_MQ_Handle *mq, uint32_t request_id)
   if (NULL == mq->assoc_map)
     return NULL;
   val = GNUNET_CONTAINER_multihashmap32_get (mq->assoc_map, request_id);
-  GNUNET_assert (NULL != val);
-  GNUNET_assert (GNUNET_YES ==
-                GNUNET_CONTAINER_multihashmap32_remove (mq->assoc_map, request_id, val));
+  GNUNET_CONTAINER_multihashmap32_remove_all (mq->assoc_map, request_id);
   return val;
 }
 
@@ -719,8 +717,8 @@ GNUNET_MQ_destroy (struct GNUNET_MQ_Handle *mq)
   {
     struct GNUNET_MQ_Envelope *ev;
     ev = mq->envelope_head;
-    GNUNET_MQ_discard (ev);
     GNUNET_CONTAINER_DLL_remove (mq->envelope_head, mq->envelope_tail, ev);
+    GNUNET_MQ_discard (ev);
   }
 
   if (NULL != mq->current_envelope)
@@ -729,6 +727,12 @@ GNUNET_MQ_destroy (struct GNUNET_MQ_Handle *mq)
     mq->current_envelope = NULL;
   }
 
+  if (NULL != mq->assoc_map)
+  {
+    GNUNET_CONTAINER_multihashmap32_destroy (mq->assoc_map);
+    mq->assoc_map = NULL;
+  }
+
   GNUNET_free (mq);
 }