[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,
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r33857 - gnunet/src/transport,
gnunet <=