diff options
author | Christian Grothoff <christian@grothoff.org> | 2018-04-23 15:59:03 +0200 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2018-04-23 15:59:03 +0200 |
commit | 08795cc18190529e28a4ccc54e225534f55ed209 (patch) | |
tree | 992187d21a4ce155facd3fc5a8d2cb5860ced164 /src | |
parent | 3e2b9dc6d520b6be53a3c41a112f224df12d9f99 (diff) | |
download | gnunet-08795cc18190529e28a4ccc54e225534f55ed209.tar.gz gnunet-08795cc18190529e28a4ccc54e225534f55ed209.zip |
fix transition to multi-server in cmd line for gnunet-zoneimport
Diffstat (limited to 'src')
-rw-r--r-- | src/gnsrecord/gnsrecord_misc.c | 18 | ||||
-rw-r--r-- | src/namestore/gnunet-service-namestore.c | 68 | ||||
-rw-r--r-- | src/namestore/gnunet-zoneimport.c | 15 |
3 files changed, 53 insertions, 48 deletions
diff --git a/src/gnsrecord/gnsrecord_misc.c b/src/gnsrecord/gnsrecord_misc.c index 3c1ead437..05f56cf70 100644 --- a/src/gnsrecord/gnsrecord_misc.c +++ b/src/gnsrecord/gnsrecord_misc.c | |||
@@ -152,8 +152,6 @@ struct GNUNET_TIME_Absolute | |||
152 | GNUNET_GNSRECORD_record_get_expiration_time (unsigned int rd_count, | 152 | GNUNET_GNSRECORD_record_get_expiration_time (unsigned int rd_count, |
153 | const struct GNUNET_GNSRECORD_Data *rd) | 153 | const struct GNUNET_GNSRECORD_Data *rd) |
154 | { | 154 | { |
155 | unsigned int c; | ||
156 | unsigned int c2; | ||
157 | struct GNUNET_TIME_Absolute expire; | 155 | struct GNUNET_TIME_Absolute expire; |
158 | struct GNUNET_TIME_Absolute at; | 156 | struct GNUNET_TIME_Absolute at; |
159 | struct GNUNET_TIME_Relative rt; | 157 | struct GNUNET_TIME_Relative rt; |
@@ -163,7 +161,7 @@ GNUNET_GNSRECORD_record_get_expiration_time (unsigned int rd_count, | |||
163 | if (NULL == rd) | 161 | if (NULL == rd) |
164 | return GNUNET_TIME_UNIT_ZERO_ABS; | 162 | return GNUNET_TIME_UNIT_ZERO_ABS; |
165 | expire = GNUNET_TIME_UNIT_FOREVER_ABS; | 163 | expire = GNUNET_TIME_UNIT_FOREVER_ABS; |
166 | for (c = 0; c < rd_count; c++) | 164 | for (unsigned int c = 0; c < rd_count; c++) |
167 | { | 165 | { |
168 | if (0 != (rd[c].flags & GNUNET_GNSRECORD_RF_RELATIVE_EXPIRATION)) | 166 | if (0 != (rd[c].flags & GNUNET_GNSRECORD_RF_RELATIVE_EXPIRATION)) |
169 | { | 167 | { |
@@ -175,12 +173,12 @@ GNUNET_GNSRECORD_record_get_expiration_time (unsigned int rd_count, | |||
175 | at.abs_value_us = rd[c].expiration_time; | 173 | at.abs_value_us = rd[c].expiration_time; |
176 | } | 174 | } |
177 | 175 | ||
178 | for (c2 = 0; c2 < rd_count; c2++) | 176 | for (unsigned int c2 = 0; c2 < rd_count; c2++) |
179 | { | 177 | { |
180 | /* Check for shadow record */ | 178 | /* Check for shadow record */ |
181 | if ((c == c2) || | 179 | if ( (c == c2) || |
182 | (rd[c].record_type != rd[c2].record_type) || | 180 | (rd[c].record_type != rd[c2].record_type) || |
183 | (0 == (rd[c2].flags & GNUNET_GNSRECORD_RF_SHADOW_RECORD))) | 181 | (0 == (rd[c2].flags & GNUNET_GNSRECORD_RF_SHADOW_RECORD)) ) |
184 | continue; | 182 | continue; |
185 | /* We have a shadow record */ | 183 | /* We have a shadow record */ |
186 | if (0 != (rd[c2].flags & GNUNET_GNSRECORD_RF_RELATIVE_EXPIRATION)) | 184 | if (0 != (rd[c2].flags & GNUNET_GNSRECORD_RF_RELATIVE_EXPIRATION)) |
@@ -192,9 +190,11 @@ GNUNET_GNSRECORD_record_get_expiration_time (unsigned int rd_count, | |||
192 | { | 190 | { |
193 | at_shadow.abs_value_us = rd[c2].expiration_time; | 191 | at_shadow.abs_value_us = rd[c2].expiration_time; |
194 | } | 192 | } |
195 | at = GNUNET_TIME_absolute_max (at, at_shadow); | 193 | at = GNUNET_TIME_absolute_max (at, |
194 | at_shadow); | ||
196 | } | 195 | } |
197 | expire = GNUNET_TIME_absolute_min (at, expire); | 196 | expire = GNUNET_TIME_absolute_min (at, |
197 | expire); | ||
198 | } | 198 | } |
199 | LOG (GNUNET_ERROR_TYPE_DEBUG, | 199 | LOG (GNUNET_ERROR_TYPE_DEBUG, |
200 | "Determined expiration time for block with %u records to be %s\n", | 200 | "Determined expiration time for block with %u records to be %s\n", |
diff --git a/src/namestore/gnunet-service-namestore.c b/src/namestore/gnunet-service-namestore.c index 3685c93af..3ba4f9ec3 100644 --- a/src/namestore/gnunet-service-namestore.c +++ b/src/namestore/gnunet-service-namestore.c | |||
@@ -439,9 +439,24 @@ get_nick_record (const struct GNUNET_CRYPTO_EcdsaPrivateKey *zone) | |||
439 | } | 439 | } |
440 | 440 | ||
441 | 441 | ||
442 | /** | ||
443 | * Merge the nick record @a nick_rd with the rest of the | ||
444 | * record set given in @a rd2. Store the result in @a rdc_res | ||
445 | * and @a rd_res. The @a nick_rd's expiration time is set to | ||
446 | * the maximum expiration time of all of the records in @a rd2. | ||
447 | * | ||
448 | * @param nick_rd the nick record to integrate | ||
449 | * @param rd2_length length of the @a rd2 array | ||
450 | * @param rd2 array of records | ||
451 | * @param rdc_res[out] length of the resulting @a rd_res array | ||
452 | * @param rd_res[out] set to an array of records, | ||
453 | * including @a nick_rd and @a rd2; | ||
454 | * all of the variable-size 'data' fields in @a rd2 are | ||
455 | * allocated in the same chunk of memory! | ||
456 | */ | ||
442 | static void | 457 | static void |
443 | merge_with_nick_records (const struct GNUNET_GNSRECORD_Data *nick_rd, | 458 | merge_with_nick_records (const struct GNUNET_GNSRECORD_Data *nick_rd, |
444 | unsigned int rdc2, | 459 | unsigned int rd2_length, |
445 | const struct GNUNET_GNSRECORD_Data *rd2, | 460 | const struct GNUNET_GNSRECORD_Data *rd2, |
446 | unsigned int *rdc_res, | 461 | unsigned int *rdc_res, |
447 | struct GNUNET_GNSRECORD_Data **rd_res) | 462 | struct GNUNET_GNSRECORD_Data **rd_res) |
@@ -452,24 +467,22 @@ merge_with_nick_records (const struct GNUNET_GNSRECORD_Data *nick_rd, | |||
452 | int record_offset; | 467 | int record_offset; |
453 | size_t data_offset; | 468 | size_t data_offset; |
454 | 469 | ||
455 | (*rdc_res) = 1 + rdc2; | 470 | (*rdc_res) = 1 + rd2_length; |
456 | if (0 == 1 + rdc2) | 471 | if (0 == 1 + rd2_length) |
457 | { | 472 | { |
458 | (*rd_res) = NULL; | 473 | (*rd_res) = NULL; |
459 | return; | 474 | return; |
460 | } | 475 | } |
461 | |||
462 | req = 0; | 476 | req = 0; |
463 | for (unsigned int c=0; c< 1; c++) | 477 | for (unsigned int c=0; c< 1; c++) |
464 | req += sizeof (struct GNUNET_GNSRECORD_Data) + nick_rd[c].data_size; | 478 | req += sizeof (struct GNUNET_GNSRECORD_Data) + nick_rd[c].data_size; |
465 | for (unsigned int c=0; c< rdc2; c++) | 479 | for (unsigned int c=0; c< rd2_length; c++) |
466 | req += sizeof (struct GNUNET_GNSRECORD_Data) + rd2[c].data_size; | 480 | req += sizeof (struct GNUNET_GNSRECORD_Data) + rd2[c].data_size; |
467 | (*rd_res) = GNUNET_malloc (req); | 481 | (*rd_res) = GNUNET_malloc (req); |
468 | data = (char *) &(*rd_res)[1 + rdc2]; | 482 | data = (char *) &(*rd_res)[1 + rd2_length]; |
469 | data_offset = 0; | 483 | data_offset = 0; |
470 | latest_expiration = 0; | 484 | latest_expiration = 0; |
471 | 485 | for (unsigned int c=0; c< rd2_length; c++) | |
472 | for (unsigned int c=0; c< rdc2; c++) | ||
473 | { | 486 | { |
474 | if (0 != (rd2[c].flags & GNUNET_GNSRECORD_RF_RELATIVE_EXPIRATION)) | 487 | if (0 != (rd2[c].flags & GNUNET_GNSRECORD_RF_RELATIVE_EXPIRATION)) |
475 | { | 488 | { |
@@ -486,17 +499,15 @@ merge_with_nick_records (const struct GNUNET_GNSRECORD_Data *nick_rd, | |||
486 | rd2[c].data_size); | 499 | rd2[c].data_size); |
487 | data_offset += (*rd_res)[c].data_size; | 500 | data_offset += (*rd_res)[c].data_size; |
488 | } | 501 | } |
489 | record_offset = rdc2; | 502 | /* append nick */ |
490 | for (unsigned int c=0; c< 1; c++) | 503 | record_offset = rd2_length; |
491 | { | 504 | (*rd_res)[record_offset] = *nick_rd; |
492 | (*rd_res)[c+record_offset] = nick_rd[c]; | 505 | (*rd_res)[record_offset].expiration_time = latest_expiration; |
493 | (*rd_res)[c+record_offset].expiration_time = latest_expiration; | 506 | (*rd_res)[record_offset].data = (void *) &data[data_offset]; |
494 | (*rd_res)[c+record_offset].data = (void *) &data[data_offset]; | 507 | GNUNET_memcpy ((void *) (*rd_res)[record_offset].data, |
495 | GNUNET_memcpy ((void *) (*rd_res)[c+record_offset].data, | 508 | nick_rd->data, |
496 | nick_rd[c].data, | 509 | nick_rd->data_size); |
497 | nick_rd[c].data_size); | 510 | data_offset += (*rd_res)[record_offset].data_size; |
498 | data_offset += (*rd_res)[c+record_offset].data_size; | ||
499 | } | ||
500 | GNUNET_assert (req == (sizeof (struct GNUNET_GNSRECORD_Data)) * (*rdc_res) + data_offset); | 511 | GNUNET_assert (req == (sizeof (struct GNUNET_GNSRECORD_Data)) * (*rdc_res) + data_offset); |
501 | } | 512 | } |
502 | 513 | ||
@@ -531,7 +542,9 @@ send_lookup_response (struct NamestoreClient *nc, | |||
531 | char *rd_ser; | 542 | char *rd_ser; |
532 | 543 | ||
533 | nick = get_nick_record (zone_key); | 544 | nick = get_nick_record (zone_key); |
534 | if ((NULL != nick) && (0 != strcmp(name, GNUNET_GNS_EMPTY_LABEL_AT))) | 545 | if ( (NULL != nick) && |
546 | (0 != strcmp (name, | ||
547 | GNUNET_GNS_EMPTY_LABEL_AT))) | ||
535 | { | 548 | { |
536 | nick->flags = (nick->flags | GNUNET_GNSRECORD_RF_PRIVATE) ^ GNUNET_GNSRECORD_RF_PRIVATE; | 549 | nick->flags = (nick->flags | GNUNET_GNSRECORD_RF_PRIVATE) ^ GNUNET_GNSRECORD_RF_PRIVATE; |
537 | merge_with_nick_records (nick, | 550 | merge_with_nick_records (nick, |
@@ -677,13 +690,15 @@ refresh_block (struct NamestoreClient *nc, | |||
677 | block = GNUNET_GNSRECORD_block_create (zone_key, | 690 | block = GNUNET_GNSRECORD_block_create (zone_key, |
678 | GNUNET_TIME_UNIT_ZERO_ABS, | 691 | GNUNET_TIME_UNIT_ZERO_ABS, |
679 | name, | 692 | name, |
680 | res, rd_count); | 693 | res, |
694 | rd_count); | ||
681 | else | 695 | else |
682 | block = GNUNET_GNSRECORD_block_create (zone_key, | 696 | block = GNUNET_GNSRECORD_block_create (zone_key, |
683 | GNUNET_GNSRECORD_record_get_expiration_time (res_count, | 697 | GNUNET_GNSRECORD_record_get_expiration_time (res_count, |
684 | res), | 698 | res), |
685 | name, | 699 | name, |
686 | res, res_count); | 700 | res, |
701 | res_count); | ||
687 | GNUNET_assert (NULL != block); | 702 | GNUNET_assert (NULL != block); |
688 | GNUNET_CRYPTO_ecdsa_key_get_public (zone_key, | 703 | GNUNET_CRYPTO_ecdsa_key_get_public (zone_key, |
689 | &pkey); | 704 | &pkey); |
@@ -773,9 +788,10 @@ lookup_it (void *cls, | |||
773 | rdc_res = 0; | 788 | rdc_res = 0; |
774 | rlc->nick->flags = (rlc->nick->flags | GNUNET_GNSRECORD_RF_PRIVATE) ^ GNUNET_GNSRECORD_RF_PRIVATE; | 789 | rlc->nick->flags = (rlc->nick->flags | GNUNET_GNSRECORD_RF_PRIVATE) ^ GNUNET_GNSRECORD_RF_PRIVATE; |
775 | merge_with_nick_records (rlc->nick, | 790 | merge_with_nick_records (rlc->nick, |
776 | rd_count, rd, | 791 | rd_count, |
777 | &rdc_res, &rd_res); | 792 | rd, |
778 | 793 | &rdc_res, | |
794 | &rd_res); | ||
779 | rlc->rd_ser_len = GNUNET_GNSRECORD_records_get_size (rdc_res, | 795 | rlc->rd_ser_len = GNUNET_GNSRECORD_records_get_size (rdc_res, |
780 | rd_res); | 796 | rd_res); |
781 | rlc->res_rd_count = rdc_res; | 797 | rlc->res_rd_count = rdc_res; |
diff --git a/src/namestore/gnunet-zoneimport.c b/src/namestore/gnunet-zoneimport.c index 2926fe9bd..4fd0f3aef 100644 --- a/src/namestore/gnunet-zoneimport.c +++ b/src/namestore/gnunet-zoneimport.c | |||
@@ -268,11 +268,6 @@ static struct Request *req_tail; | |||
268 | static struct GNUNET_SCHEDULER_Task *t; | 268 | static struct GNUNET_SCHEDULER_Task *t; |
269 | 269 | ||
270 | /** | 270 | /** |
271 | * Which DNS server do we use for queries? | ||
272 | */ | ||
273 | static char *dns_server; | ||
274 | |||
275 | /** | ||
276 | * Head of list of zones we are managing. | 271 | * Head of list of zones we are managing. |
277 | */ | 272 | */ |
278 | static struct Zone *zone_head; | 273 | static struct Zone *zone_head; |
@@ -1454,13 +1449,13 @@ run (void *cls, | |||
1454 | "Failed to initialize GNUnet DNS STUB\n"); | 1449 | "Failed to initialize GNUnet DNS STUB\n"); |
1455 | return; | 1450 | return; |
1456 | } | 1451 | } |
1457 | if (NULL == args[1]) | 1452 | if (NULL == args[0]) |
1458 | { | 1453 | { |
1459 | fprintf (stderr, | 1454 | fprintf (stderr, |
1460 | "You must provide a list of DNS resolvers on the command line\n"); | 1455 | "You must provide a list of DNS resolvers on the command line\n"); |
1461 | return; | 1456 | return; |
1462 | } | 1457 | } |
1463 | for (unsigned int i=1;NULL != args[i];i++) | 1458 | for (unsigned int i=0;NULL != args[i];i++) |
1464 | { | 1459 | { |
1465 | if (GNUNET_OK != | 1460 | if (GNUNET_OK != |
1466 | GNUNET_DNSSTUB_add_dns_ip (ctx, | 1461 | GNUNET_DNSSTUB_add_dns_ip (ctx, |
@@ -1500,12 +1495,6 @@ main (int argc, | |||
1500 | char *const*argv) | 1495 | char *const*argv) |
1501 | { | 1496 | { |
1502 | struct GNUNET_GETOPT_CommandLineOption options[] = { | 1497 | struct GNUNET_GETOPT_CommandLineOption options[] = { |
1503 | GNUNET_GETOPT_option_mandatory | ||
1504 | (GNUNET_GETOPT_option_string ('s', | ||
1505 | "server", | ||
1506 | "IP", | ||
1507 | "which DNS server should be used", | ||
1508 | &dns_server)), | ||
1509 | GNUNET_GETOPT_OPTION_END | 1498 | GNUNET_GETOPT_OPTION_END |
1510 | }; | 1499 | }; |
1511 | 1500 | ||