aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMartin Schanzenbach <mschanzenbach@posteo.de>2013-10-17 22:14:37 +0000
committerMartin Schanzenbach <mschanzenbach@posteo.de>2013-10-17 22:14:37 +0000
commit82984b8268eb8f2d4098f1b78c75814f52af7d56 (patch)
treeb27317917d8a61f77ad1c01f383cdde92e017505 /src
parent1994d12b754b9d988d3ab1bc4e0fe1200f21c36e (diff)
downloadgnunet-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.c11
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;
157static unsigned long long last_num_public_records; 157static unsigned long long last_num_public_records;
158 158
159/** 159/**
160 * Minimum relative expiration time
161 * of records seem during zone iteration
162 */
163static struct GNUNET_TIME_Relative min_relative_record_time;
164
165/**
160 * Zone iteration PUT interval. 166 * Zone iteration PUT interval.
161 */ 167 */
162static struct GNUNET_TIME_Relative put_interval; 168static 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 }