gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r27993 - gnunet/src/mesh


From: gnunet
Subject: [GNUnet-SVN] r27993 - gnunet/src/mesh
Date: Sat, 13 Jul 2013 16:54:46 +0200

Author: bartpolot
Date: 2013-07-13 16:54:45 +0200 (Sat, 13 Jul 2013)
New Revision: 27993

Modified:
   gnunet/src/mesh/gnunet-service-mesh.c
Log:
 fixes

Modified: gnunet/src/mesh/gnunet-service-mesh.c
===================================================================
--- gnunet/src/mesh/gnunet-service-mesh.c       2013-07-13 12:09:33 UTC (rev 
27992)
+++ gnunet/src/mesh/gnunet-service-mesh.c       2013-07-13 14:54:45 UTC (rev 
27993)
@@ -2072,6 +2072,12 @@
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
               "send_fwd_data_ack for %llu\n",
               t->bck_rel->mid_recv - 1);
+
+  if (GNUNET_NO == t->reliable)
+  {
+    GNUNET_break_op (0);
+    return;
+  }
   msg.header.type = htons (GNUNET_MESSAGE_TYPE_MESH_UNICAST_ACK);
   msg.header.size = htons (sizeof (msg));
   msg.tid = htonl (t->id.tid);
@@ -2430,18 +2436,20 @@
 
   bitfield = msg->futures;
   mid = GNUNET_ntohll (msg->mid);
+  rel = t->fwd_rel;
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
               "free_sent_buffer %llu %llX\n",
               mid, bitfield);
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-              " rel %p, copy %p\n",
-              mid, bitfield);
-  rel = t->fwd_rel;
-  for (i = 0, copy = rel->head_recv;
+              " rel %p, head %p\n",
+              rel, rel->head_sent);
+  for (i = 0, copy = rel->head_sent;
        i < 64 && NULL != copy && 0 != bitfield;
-       i++, copy = next)
+       i++)
   {
-    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, " trying %u\n", i);
+    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                " trying bit %u (mid %llu)\n",
+                i, mid + i + 1);
     mask = 0x1LL << i;
     if (0 == (bitfield & mask))
      continue;
@@ -2468,15 +2476,16 @@
     if (copy->mid > target)
     {
      GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, " next copy %llu\n", copy->mid);
-     next = copy;
+     copy = copy->next;
      continue;
     }
 
     /* Now copy->mid == target, free it */
     GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "!!! Freeing %llu\n", target);
-    copy = copy->next;
+    next = copy->next;
     GNUNET_CONTAINER_DLL_remove (rel->head_sent, rel->tail_sent, copy);
     GNUNET_free (copy);
+    copy = next;
   }
   GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "free_sent_buffer END\n");
 }




reply via email to

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