- fix shutdown memleak
[oweals/gnunet.git] / src / cadet / gnunet-service-cadet_tunnel.c
index fc095bfddec6e40fe908260ad9c056214db73ae1..5f0f660b48f0352de0afe40a8091589dbef8ff71 100644 (file)
@@ -44,6 +44,7 @@
 #endif
 
 #define MIN_TUNNEL_BUFFER       8
+#define MAX_TUNNEL_BUFFER       64
 #define MAX_SKIPPED_KEYS        64
 #define MAX_KEY_GAP             256
 #define AX_HEADER_SIZE (sizeof (uint32_t) * 2\
@@ -3653,6 +3654,9 @@ GCT_destroy (struct CadetTunnel *t)
                 GNUNET_CONTAINER_multipeermap_remove (tunnels,
                                                       GCP_get_id (t->peer), t));
 
+  while (NULL != t->tq_head)
+    unqueue_data (t->tq_head);
+
   for (iter_c = t->connection_head; NULL != iter_c; iter_c = next_c)
   {
     next_c = iter_c->next;
@@ -3889,6 +3893,12 @@ GCT_get_channels_buffer (struct CadetTunnel *t)
   }
   if (MIN_TUNNEL_BUFFER > buffer)
     return MIN_TUNNEL_BUFFER;
+
+  if (MAX_TUNNEL_BUFFER < buffer)
+  {
+    GNUNET_break (0);
+    return MAX_TUNNEL_BUFFER;
+  }
   return buffer;
 }
 
@@ -4118,6 +4128,7 @@ GCT_cancel (struct CadetTunnelQueue *q)
 {
   if (NULL != q->cq)
   {
+    GNUNET_assert (NULL == q->tqd);
     GCC_cancel (q->cq);
     /* tun_message_sent() will be called and free q */
   }