gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r33857 - gnunet/src/transport


From: gnunet
Subject: [GNUnet-SVN] r33857 - gnunet/src/transport
Date: Thu, 26 Jun 2014 13:32:08 +0200

Author: wachs
Date: 2014-06-26 13:32:07 +0200 (Thu, 26 Jun 2014)
New Revision: 33857

Modified:
   gnunet/src/transport/gnunet-service-transport_validation.c
Log:
make delay computation readable
perform validation only if plugin is available, otherwise reschedule


Modified: gnunet/src/transport/gnunet-service-transport_validation.c
===================================================================
--- gnunet/src/transport/gnunet-service-transport_validation.c  2014-06-26 
11:21:21 UTC (rev 33856)
+++ gnunet/src/transport/gnunet-service-transport_validation.c  2014-06-26 
11:32:07 UTC (rev 33857)
@@ -656,11 +656,13 @@
   ve->revalidation_task = GNUNET_SCHEDULER_NO_TASK;
   delay = GNUNET_TIME_absolute_get_remaining (ve->revalidation_block);
   /* How long until we can possibly permit the next PING? */
-  canonical_delay =
-      (ve->in_use ==
-       GNUNET_YES) ? CONNECTED_PING_FREQUENCY
-      : ((GNUNET_TIME_absolute_get_remaining (ve->valid_until).rel_value_us >
-          0) ? VALIDATED_PING_FREQUENCY : UNVALIDATED_PING_KEEPALIVE);
+  if (GNUNET_YES == ve->in_use)
+    canonical_delay = CONNECTED_PING_FREQUENCY;
+  else if (GNUNET_TIME_absolute_get_remaining (ve->valid_until).rel_value_us > 
0)
+    canonical_delay = VALIDATED_PING_FREQUENCY;
+  else
+    canonical_delay = UNVALIDATED_PING_KEEPALIVE;
+
   if (delay.rel_value_us > canonical_delay.rel_value_us * 2)
   {
     /* situation changed, recalculate delay */
@@ -1252,7 +1254,9 @@
                            struct GNUNET_TIME_Absolute expiration)
 {
   const struct ValidateAddressContext *vac = cls;
+  struct GNUNET_TRANSPORT_PluginFunctions * papi;
   struct ValidationEntry *ve;
+  struct GNUNET_TIME_Relative canonical_delay;
 
   if (0 == GNUNET_TIME_absolute_get_remaining (expiration).rel_value_us)
   {
@@ -1261,6 +1265,29 @@
     return GNUNET_OK;           /* expired */
   }
   ve = find_validation_entry (&vac->public_key, address);
+
+  papi = GST_plugins_find (ve->address->transport_name);
+  if (papi == NULL)
+  {
+    /* This plugin is currently unvailable ... retry later */
+    if (GNUNET_SCHEDULER_NO_TASK == ve->revalidation_task)
+    {
+      if (ve->in_use == GNUNET_YES)
+      {
+        if (GNUNET_YES == ve->in_use)
+          canonical_delay = CONNECTED_PING_FREQUENCY;
+        else if (GNUNET_TIME_absolute_get_remaining 
(ve->valid_until).rel_value_us > 0)
+          canonical_delay = VALIDATED_PING_FREQUENCY;
+        else
+          canonical_delay = UNVALIDATED_PING_KEEPALIVE;
+      }
+      ve->revalidation_task = GNUNET_SCHEDULER_add_delayed (canonical_delay,
+          &revalidate_address, ve);
+    }
+    return GNUNET_OK;
+  }
+
+
   if (GNUNET_SCHEDULER_NO_TASK == ve->revalidation_task)
   {
     GNUNET_log (GNUNET_ERROR_TYPE_INFO,




reply via email to

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