diff options
Diffstat (limited to 'src/transport/gnunet-service-tng.c')
-rw-r--r-- | src/transport/gnunet-service-tng.c | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/src/transport/gnunet-service-tng.c b/src/transport/gnunet-service-tng.c index 69dab525a..138d8ee3f 100644 --- a/src/transport/gnunet-service-tng.c +++ b/src/transport/gnunet-service-tng.c | |||
@@ -8626,7 +8626,7 @@ start_address_validation (const struct GNUNET_PeerIdentity *pid, | |||
8626 | } | 8626 | } |
8627 | return; | 8627 | return; |
8628 | } | 8628 | } |
8629 | now = GNUNET_TIME_absolute_get (); | 8629 | now = GNUNET_TIME_absolute_get_monotonic (GST_cfg); |
8630 | vs = GNUNET_new (struct ValidationState); | 8630 | vs = GNUNET_new (struct ValidationState); |
8631 | vs->pid = *pid; | 8631 | vs->pid = *pid; |
8632 | vs->valid_until = | 8632 | vs->valid_until = |
@@ -9009,6 +9009,19 @@ handle_validation_response ( | |||
9009 | vs->validated_until, | 9009 | vs->validated_until, |
9010 | GNUNET_TIME_relative_multiply (vs->validation_rtt, | 9010 | GNUNET_TIME_relative_multiply (vs->validation_rtt, |
9011 | VALIDATION_RTT_BUFFER_FACTOR)); | 9011 | VALIDATION_RTT_BUFFER_FACTOR)); |
9012 | if (GNUNET_TIME_absolute_cmp (vs->first_challenge_use, <, now)) | ||
9013 | { | ||
9014 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
9015 | "First challenge use is now %" PRIu64 " %s \n", | ||
9016 | vs->first_challenge_use.abs_value_us, | ||
9017 | GNUNET_sh2s (&vs->challenge.value)); | ||
9018 | vs->first_challenge_use = now; | ||
9019 | } | ||
9020 | else | ||
9021 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
9022 | "First challenge use is later %" PRIu64 " %s \n", | ||
9023 | vs->first_challenge_use.abs_value_us, | ||
9024 | GNUNET_sh2s (&vs->challenge.value)); | ||
9012 | vs->last_challenge_use = | 9025 | vs->last_challenge_use = |
9013 | GNUNET_TIME_UNIT_ZERO_ABS; /* challenge was not yet used */ | 9026 | GNUNET_TIME_UNIT_ZERO_ABS; /* challenge was not yet used */ |
9014 | update_next_challenge_time (vs, vs->first_challenge_use); | 9027 | update_next_challenge_time (vs, vs->first_challenge_use); |
@@ -10650,6 +10663,8 @@ validation_start_cb (void *cls) | |||
10650 | { | 10663 | { |
10651 | struct ValidationState *vs; | 10664 | struct ValidationState *vs; |
10652 | struct Queue *q; | 10665 | struct Queue *q; |
10666 | const struct GNUNET_TIME_Absolute now = GNUNET_TIME_absolute_get_monotonic ( | ||
10667 | GST_cfg); | ||
10653 | 10668 | ||
10654 | (void) cls; | 10669 | (void) cls; |
10655 | validation_task = NULL; | 10670 | validation_task = NULL; |
@@ -10673,6 +10688,13 @@ validation_start_cb (void *cls) | |||
10673 | happen if we're really a lonely peer */ | 10688 | happen if we're really a lonely peer */ |
10674 | } | 10689 | } |
10675 | q = find_queue (&vs->pid, vs->address); | 10690 | q = find_queue (&vs->pid, vs->address); |
10691 | if (GNUNET_TIME_absolute_cmp (vs->first_challenge_use, >, now)) | ||
10692 | { | ||
10693 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
10694 | "To early to start next address validation for challenge %s\n", | ||
10695 | GNUNET_sh2s (&vs->challenge.value)); | ||
10696 | return; | ||
10697 | } | ||
10676 | if (NULL == q) | 10698 | if (NULL == q) |
10677 | { | 10699 | { |
10678 | vs->awaiting_queue = GNUNET_YES; | 10700 | vs->awaiting_queue = GNUNET_YES; |