diff options
author | Martin Schanzenbach <mschanzenbach@posteo.de> | 2013-10-17 22:14:37 +0000 |
---|---|---|
committer | Martin Schanzenbach <mschanzenbach@posteo.de> | 2013-10-17 22:14:37 +0000 |
commit | 82984b8268eb8f2d4098f1b78c75814f52af7d56 (patch) | |
tree | b27317917d8a61f77ad1c01f383cdde92e017505 /src | |
parent | 1994d12b754b9d988d3ab1bc4e0fe1200f21c36e (diff) | |
download | gnunet-82984b8268eb8f2d4098f1b78c75814f52af7d56.tar.gz gnunet-82984b8268eb8f2d4098f1b78c75814f52af7d56.zip |
dht zone put interval should never be longer than minimim relative expiration time of a record
Diffstat (limited to 'src')
-rw-r--r-- | src/gns/gnunet-service-gns.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/gns/gnunet-service-gns.c b/src/gns/gnunet-service-gns.c index 9f3623e8d..1d6bbd514 100644 --- a/src/gns/gnunet-service-gns.c +++ b/src/gns/gnunet-service-gns.c | |||
@@ -157,6 +157,12 @@ static unsigned long long num_public_records; | |||
157 | static unsigned long long last_num_public_records; | 157 | static unsigned long long last_num_public_records; |
158 | 158 | ||
159 | /** | 159 | /** |
160 | * Minimum relative expiration time | ||
161 | * of records seem during zone iteration | ||
162 | */ | ||
163 | static struct GNUNET_TIME_Relative min_relative_record_time; | ||
164 | |||
165 | /** | ||
160 | * Zone iteration PUT interval. | 166 | * Zone iteration PUT interval. |
161 | */ | 167 | */ |
162 | static struct GNUNET_TIME_Relative put_interval; | 168 | static struct GNUNET_TIME_Relative put_interval; |
@@ -364,6 +370,8 @@ put_gns_record (void *cls, | |||
364 | { | 370 | { |
365 | put_interval = GNUNET_TIME_relative_divide (zone_publish_time_window, | 371 | put_interval = GNUNET_TIME_relative_divide (zone_publish_time_window, |
366 | num_public_records); | 372 | num_public_records); |
373 | put_interval = GNUNET_TIME_relative_min (min_relative_record_time, | ||
374 | put_interval); | ||
367 | } | 375 | } |
368 | put_interval = GNUNET_TIME_relative_max (MINIMUM_ZONE_ITERATION_INTERVAL, | 376 | put_interval = GNUNET_TIME_relative_max (MINIMUM_ZONE_ITERATION_INTERVAL, |
369 | put_interval); | 377 | put_interval); |
@@ -404,6 +412,9 @@ put_gns_record (void *cls, | |||
404 | rd_public[rd_public_count] = rd[i]; | 412 | rd_public[rd_public_count] = rd[i]; |
405 | if (0 != (rd[i].flags & GNUNET_GNSRECORD_RF_RELATIVE_EXPIRATION)) | 413 | if (0 != (rd[i].flags & GNUNET_GNSRECORD_RF_RELATIVE_EXPIRATION)) |
406 | { | 414 | { |
415 | min_relative_record_time.rel_value_us = MIN | ||
416 | (rd_public[rd_public_count].expiration_time, | ||
417 | min_relative_record_time.rel_value_us); | ||
407 | rd_public[rd_public_count].flags &= ~GNUNET_GNSRECORD_RF_RELATIVE_EXPIRATION; | 418 | rd_public[rd_public_count].flags &= ~GNUNET_GNSRECORD_RF_RELATIVE_EXPIRATION; |
408 | rd_public[rd_public_count].expiration_time += now.abs_value_us; | 419 | rd_public[rd_public_count].expiration_time += now.abs_value_us; |
409 | } | 420 | } |