gnunet-svn
[Top][All Lists]
Advanced

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

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


From: gnunet
Subject: [GNUnet-SVN] r35654 - gnunet/src/cadet
Date: Mon, 27 Apr 2015 21:16:01 +0200

Author: bartpolot
Date: 2015-04-27 21:16:01 +0200 (Mon, 27 Apr 2015)
New Revision: 35654

Modified:
   gnunet/src/cadet/gnunet-service-cadet_channel.c
Log:
- skip checking all messages that are not there, no matter what the bitfield 
says

Modified: gnunet/src/cadet/gnunet-service-cadet_channel.c
===================================================================
--- gnunet/src/cadet/gnunet-service-cadet_channel.c     2015-04-27 19:15:59 UTC 
(rev 35653)
+++ gnunet/src/cadet/gnunet-service-cadet_channel.c     2015-04-27 19:16:01 UTC 
(rev 35654)
@@ -1060,15 +1060,18 @@
     /* Did we run out of copies? (previously freed, it's ok) */
     if (NULL == copy)
     {
-     LOG (GNUNET_ERROR_TYPE_DEBUG, "run out of copies...\n");
-     return;
+      LOG (GNUNET_ERROR_TYPE_DEBUG, "run out of copies...\n");
+      return;
     }
 
     /* Did we overshoot the target? (previously freed, it's ok) */
     if (GC_is_pid_bigger (copy->mid, target))
     {
-     LOG (GNUNET_ERROR_TYPE_DEBUG, " next copy %u\n", copy->mid);
-     continue;
+      LOG (GNUNET_ERROR_TYPE_DEBUG, " next copy %u\n", copy->mid);
+      i += copy->mid - target - 1;   /* MID: 90, t = 85, i += 4 (i++ later) */
+      mask = (0x1LL << (i + 1)) - 1; /* Mask = i-th bit and all before */
+      bitfield &= ~mask;
+      continue;
     }
 
     /* Now copy->mid == target, free it */




reply via email to

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