gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r36076 - gnunet/src/cadet


From: gnunet
Subject: [GNUnet-SVN] r36076 - gnunet/src/cadet
Date: Wed, 15 Jul 2015 13:45:12 +0200

Author: bartpolot
Date: 2015-07-15 13:45:12 +0200 (Wed, 15 Jul 2015)
New Revision: 36076

Modified:
   gnunet/src/cadet/gnunet-service-cadet_tunnel.c
Log:
- let one keepalive be queued at shutdown

Modified: gnunet/src/cadet/gnunet-service-cadet_tunnel.c
===================================================================
--- gnunet/src/cadet/gnunet-service-cadet_tunnel.c      2015-07-15 11:45:11 UTC 
(rev 36075)
+++ gnunet/src/cadet/gnunet-service-cadet_tunnel.c      2015-07-15 11:45:12 UTC 
(rev 36076)
@@ -3681,6 +3681,7 @@
   struct CadetTConnection *next_c;
   struct CadetTChannel *iter_ch;
   struct CadetTChannel *next_ch;
+  unsigned int keepalives_queued;
 
   if (NULL == t)
     return;
@@ -3702,16 +3703,28 @@
     GCCH_destroy (iter_ch->ch);
     /* Should only happen on shutdown, but it's ok. */
   }
+  keepalives_queued = 0;
   while (NULL != t->tq_head)
   {
     /* Should have been cleaned by destuction of channel. */
     struct GNUNET_MessageHeader *mh;
+    uint16_t type;
 
-    GNUNET_break (0);
     mh = (struct GNUNET_MessageHeader *) &t->tq_head[1];
-    LOG (GNUNET_ERROR_TYPE_WARNING,
-         "message left behind on tunnel shutdown: %s\n",
-         GC_m2s (ntohs (mh->type)));
+    type = ntohs (mh->type);
+    if (0 == keepalives_queued && GNUNET_MESSAGE_TYPE_CADET_KEEPALIVE == type)
+    {
+      keepalives_queued = 1;
+      LOG (GNUNET_ERROR_TYPE_DEBUG,
+           "one keepalive left behind on tunnel shutdown\n");
+    }
+    else
+    {
+      GNUNET_break (0);
+      LOG (GNUNET_ERROR_TYPE_WARNING,
+           "message left behind on tunnel shutdown: %s\n",
+           GC_m2s (ntohs (mh->type)));
+    }
     unqueue_data (t->tq_head);
   }
 




reply via email to

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