gnunet-svn
[Top][All Lists]
Advanced

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

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


From: gnunet
Subject: [GNUnet-SVN] r32653 - gnunet/src/mesh
Date: Fri, 14 Mar 2014 16:49:19 +0100

Author: bartpolot
Date: 2014-03-14 16:49:19 +0100 (Fri, 14 Mar 2014)
New Revision: 32653

Modified:
   gnunet/src/mesh/gnunet-mesh-profiler.c
Log:
- don't send duplicate pings when a pong is delayed

Modified: gnunet/src/mesh/gnunet-mesh-profiler.c
===================================================================
--- gnunet/src/mesh/gnunet-mesh-profiler.c      2014-03-14 15:49:18 UTC (rev 
32652)
+++ gnunet/src/mesh/gnunet-mesh-profiler.c      2014-03-14 15:49:19 UTC (rev 
32653)
@@ -376,8 +376,10 @@
   struct MeshPeer *peer = (struct MeshPeer *) cls;
 
   peer->ping_task = GNUNET_SCHEDULER_NO_TASK;
+
   if ((GNUNET_SCHEDULER_REASON_SHUTDOWN & tc->reason) != 0
-      || GNUNET_YES == test_finished)
+      || GNUNET_YES == test_finished
+      || 0 != peer->timestamp.abs_value_us)
     return;
 
   GNUNET_log (GNUNET_ERROR_TYPE_INFO, "%u -> %u\n",
@@ -505,13 +507,22 @@
   GNUNET_MESH_receive_done (channel);
   peer = &peers[n];
 
-  GNUNET_assert (0 != peer->timestamp.abs_value_us);
-  latency = GNUNET_TIME_absolute_get_duration (peer->incoming->timestamp);
-  FPRINTF (stderr, "%u -> %ld latency: %s\n",
-           get_index (peer->incoming), n,
-           GNUNET_STRINGS_relative_time_to_string (latency, GNUNET_NO));
-  peer->timestamp.abs_value_us = 0;
+  GNUNET_break (0 != peer->timestamp.abs_value_us);
+  latency = GNUNET_TIME_absolute_get_duration (peer->timestamp);
+  FPRINTF (stderr, "%ld latency: %s\n",
+           n, GNUNET_STRINGS_relative_time_to_string (latency, GNUNET_NO));
 
+  if (GNUNET_SCHEDULER_NO_TASK == peer->ping_task)
+  {
+    peer->timestamp = GNUNET_TIME_absolute_get ();
+    peer->ping_task = GNUNET_SCHEDULER_add_delayed (delay_ms_rnd (60 * 1000),
+                                                    &ping, peer);
+  }
+  else
+  {
+    peer->timestamp.abs_value_us = 0;
+  }
+
   return GNUNET_OK;
 }
 




reply via email to

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