diff options
author | Christian Grothoff <christian@grothoff.org> | 2016-07-09 14:29:34 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2016-07-09 14:29:34 +0000 |
commit | 03374cc39814fa4bfb8d96e1165c688c44d8342f (patch) | |
tree | ed772250c49b39d82b9708ec8df0ee3e07e366d1 /src/namestore/test_namestore_api_zone_iteration_stop.c | |
parent | 0c13a1e6fb0baffd83d413f313742a5f2b420297 (diff) | |
download | gnunet-03374cc39814fa4bfb8d96e1165c688c44d8342f.tar.gz gnunet-03374cc39814fa4bfb8d96e1165c688c44d8342f.zip |
make namestore API less brittle/sublte to use
Diffstat (limited to 'src/namestore/test_namestore_api_zone_iteration_stop.c')
-rw-r--r-- | src/namestore/test_namestore_api_zone_iteration_stop.c | 125 |
1 files changed, 88 insertions, 37 deletions
diff --git a/src/namestore/test_namestore_api_zone_iteration_stop.c b/src/namestore/test_namestore_api_zone_iteration_stop.c index 36f527da0..a5f040150 100644 --- a/src/namestore/test_namestore_api_zone_iteration_stop.c +++ b/src/namestore/test_namestore_api_zone_iteration_stop.c | |||
@@ -156,6 +156,13 @@ end (void *cls) | |||
156 | 156 | ||
157 | 157 | ||
158 | static void | 158 | static void |
159 | fail_cb (void *cls) | ||
160 | { | ||
161 | GNUNET_assert (0); | ||
162 | } | ||
163 | |||
164 | |||
165 | static void | ||
159 | zone_proc (void *cls, | 166 | zone_proc (void *cls, |
160 | const struct GNUNET_CRYPTO_EcdsaPrivateKey *zone, | 167 | const struct GNUNET_CRYPTO_EcdsaPrivateKey *zone, |
161 | const char *label, | 168 | const char *label, |
@@ -163,20 +170,7 @@ zone_proc (void *cls, | |||
163 | const struct GNUNET_GNSRECORD_Data *rd) | 170 | const struct GNUNET_GNSRECORD_Data *rd) |
164 | { | 171 | { |
165 | int failed = GNUNET_NO; | 172 | int failed = GNUNET_NO; |
166 | if ((zone == NULL) && (label == NULL)) | 173 | |
167 | { | ||
168 | GNUNET_break (1 <= returned_records); | ||
169 | if (1 >= returned_records) | ||
170 | res = 1; /* Last iteraterator callback, we are done */ | ||
171 | else | ||
172 | res = 0; | ||
173 | zi = NULL; | ||
174 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
175 | "Received last result, iteration done after receing %u results\n", | ||
176 | returned_records ); | ||
177 | GNUNET_SCHEDULER_add_now (&end, NULL); | ||
178 | return; | ||
179 | } | ||
180 | GNUNET_assert (NULL != zone); | 174 | GNUNET_assert (NULL != zone); |
181 | if (0 == memcmp (zone, privkey, sizeof (struct GNUNET_CRYPTO_EcdsaPrivateKey))) | 175 | if (0 == memcmp (zone, privkey, sizeof (struct GNUNET_CRYPTO_EcdsaPrivateKey))) |
182 | { | 176 | { |
@@ -288,6 +282,22 @@ zone_proc (void *cls, | |||
288 | 282 | ||
289 | 283 | ||
290 | static void | 284 | static void |
285 | zone_proc_end (void *cls) | ||
286 | { | ||
287 | GNUNET_break (1 <= returned_records); | ||
288 | if (1 >= returned_records) | ||
289 | res = 1; /* Last iteraterator callback, we are done */ | ||
290 | else | ||
291 | res = 0; | ||
292 | zi = NULL; | ||
293 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
294 | "Received last result, iteration done after receing %u results\n", | ||
295 | returned_records); | ||
296 | GNUNET_SCHEDULER_add_now (&end, NULL); | ||
297 | } | ||
298 | |||
299 | |||
300 | static void | ||
291 | put_cont (void *cls, int32_t success, const char *emsg) | 301 | put_cont (void *cls, int32_t success, const char *emsg) |
292 | { | 302 | { |
293 | static int c = 0; | 303 | static int c = 0; |
@@ -312,14 +322,20 @@ put_cont (void *cls, int32_t success, const char *emsg) | |||
312 | { | 322 | { |
313 | res = 1; | 323 | res = 1; |
314 | returned_records = 0; | 324 | returned_records = 0; |
315 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "All records created, starting iteration over all zones \n"); | 325 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
316 | zi = GNUNET_NAMESTORE_zone_iteration_start(nsh, | 326 | "All records created, starting iteration over all zones \n"); |
317 | NULL, | 327 | zi = GNUNET_NAMESTORE_zone_iteration_start (nsh, |
318 | &zone_proc, | 328 | NULL, |
319 | NULL); | 329 | &fail_cb, |
330 | NULL, | ||
331 | &zone_proc, | ||
332 | NULL, | ||
333 | &zone_proc_end, | ||
334 | NULL); | ||
320 | if (zi == NULL) | 335 | if (zi == NULL) |
321 | { | 336 | { |
322 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Failed to create zone iterator\n"); | 337 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, |
338 | "Failed to create zone iterator\n"); | ||
323 | GNUNET_break (0); | 339 | GNUNET_break (0); |
324 | if (NULL != endbadly_task) | 340 | if (NULL != endbadly_task) |
325 | GNUNET_SCHEDULER_cancel (endbadly_task); | 341 | GNUNET_SCHEDULER_cancel (endbadly_task); |
@@ -362,7 +378,6 @@ empty_zone_proc (void *cls, | |||
362 | unsigned int rd_count, | 378 | unsigned int rd_count, |
363 | const struct GNUNET_GNSRECORD_Data *rd) | 379 | const struct GNUNET_GNSRECORD_Data *rd) |
364 | { | 380 | { |
365 | char *hostkey_file; | ||
366 | 381 | ||
367 | GNUNET_assert (nsh == cls); | 382 | GNUNET_assert (nsh == cls); |
368 | if (NULL != zone) | 383 | if (NULL != zone) |
@@ -385,42 +400,72 @@ empty_zone_proc (void *cls, | |||
385 | endbadly_task = GNUNET_SCHEDULER_add_now (&endbadly, NULL); | 400 | endbadly_task = GNUNET_SCHEDULER_add_now (&endbadly, NULL); |
386 | return; | 401 | return; |
387 | } | 402 | } |
403 | GNUNET_assert (0); | ||
404 | } | ||
405 | |||
388 | 406 | ||
407 | static void | ||
408 | empty_zone_proc_end (void *cls) | ||
409 | { | ||
410 | char *hostkey_file; | ||
411 | |||
412 | GNUNET_assert (nsh == cls); | ||
389 | zi = NULL; | 413 | zi = NULL; |
390 | GNUNET_asprintf(&hostkey_file,"zonefiles%s%s",DIR_SEPARATOR_STR, | 414 | GNUNET_asprintf(&hostkey_file, |
391 | "N0UJMP015AFUNR2BTNM3FKPBLG38913BL8IDMCO2H0A1LIB81960.zkey"); | 415 | "zonefiles%s%s", |
392 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Using zonekey file `%s' \n", hostkey_file); | 416 | DIR_SEPARATOR_STR, |
417 | "N0UJMP015AFUNR2BTNM3FKPBLG38913BL8IDMCO2H0A1LIB81960.zkey"); | ||
418 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
419 | "Using zonekey file `%s' \n", | ||
420 | hostkey_file); | ||
393 | privkey = GNUNET_CRYPTO_ecdsa_key_create_from_file(hostkey_file); | 421 | privkey = GNUNET_CRYPTO_ecdsa_key_create_from_file(hostkey_file); |
394 | GNUNET_free (hostkey_file); | 422 | GNUNET_free (hostkey_file); |
395 | GNUNET_assert (privkey != NULL); | 423 | GNUNET_assert (privkey != NULL); |
396 | 424 | ||
397 | GNUNET_asprintf(&hostkey_file,"zonefiles%s%s",DIR_SEPARATOR_STR, | 425 | GNUNET_asprintf (&hostkey_file, |
398 | "HGU0A0VCU334DN7F2I9UIUMVQMM7JMSD142LIMNUGTTV9R0CF4EG.zkey"); | 426 | "zonefiles%s%s", |
399 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Using zonekey file `%s' \n", hostkey_file); | 427 | DIR_SEPARATOR_STR, |
428 | "HGU0A0VCU334DN7F2I9UIUMVQMM7JMSD142LIMNUGTTV9R0CF4EG.zkey"); | ||
429 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | ||
430 | "Using zonekey file `%s'\n", | ||
431 | hostkey_file); | ||
400 | privkey2 = GNUNET_CRYPTO_ecdsa_key_create_from_file(hostkey_file); | 432 | privkey2 = GNUNET_CRYPTO_ecdsa_key_create_from_file(hostkey_file); |
401 | GNUNET_free (hostkey_file); | 433 | GNUNET_free (hostkey_file); |
402 | GNUNET_assert (privkey2 != NULL); | 434 | GNUNET_assert (privkey2 != NULL); |
403 | 435 | ||
404 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Created record 1\n"); | 436 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
437 | "Created record 1\n"); | ||
405 | 438 | ||
406 | GNUNET_asprintf(&s_name_1, "dummy1"); | 439 | GNUNET_asprintf(&s_name_1, |
440 | "dummy1"); | ||
407 | s_rd_1 = create_record(1); | 441 | s_rd_1 = create_record(1); |
408 | GNUNET_NAMESTORE_records_store(nsh, privkey, s_name_1, | 442 | GNUNET_NAMESTORE_records_store(nsh, privkey, s_name_1, |
409 | 1, s_rd_1, &put_cont, NULL); | 443 | 1, s_rd_1, &put_cont, NULL); |
410 | 444 | ||
411 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Created record 2 \n"); | 445 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
412 | GNUNET_asprintf(&s_name_2, "dummy2"); | 446 | "Created record 2 \n"); |
447 | GNUNET_asprintf(&s_name_2, | ||
448 | "dummy2"); | ||
413 | s_rd_2 = create_record(1); | 449 | s_rd_2 = create_record(1); |
414 | GNUNET_NAMESTORE_records_store(nsh, privkey, s_name_2, | 450 | GNUNET_NAMESTORE_records_store (nsh, |
415 | 1, s_rd_2, &put_cont, NULL); | 451 | privkey, |
452 | s_name_2, | ||
453 | 1, | ||
454 | s_rd_2, | ||
455 | &put_cont, NULL); | ||
416 | 456 | ||
417 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Created record 3\n"); | 457 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
458 | "Created record 3\n"); | ||
418 | 459 | ||
419 | /* name in different zone */ | 460 | /* name in different zone */ |
420 | GNUNET_asprintf(&s_name_3, "dummy3"); | 461 | GNUNET_asprintf(&s_name_3, "dummy3"); |
421 | s_rd_3 = create_record(1); | 462 | s_rd_3 = create_record(1); |
422 | GNUNET_NAMESTORE_records_store(nsh, privkey2, s_name_3, | 463 | GNUNET_NAMESTORE_records_store(nsh, |
423 | 1, s_rd_3, &put_cont, NULL); | 464 | privkey2, |
465 | s_name_3, | ||
466 | 1, | ||
467 | s_rd_3, | ||
468 | &put_cont, NULL); | ||
424 | } | 469 | } |
425 | 470 | ||
426 | 471 | ||
@@ -441,7 +486,13 @@ run (void *cls, | |||
441 | GNUNET_break (NULL != nsh); | 486 | GNUNET_break (NULL != nsh); |
442 | /* first, iterate over empty namestore */ | 487 | /* first, iterate over empty namestore */ |
443 | zi = GNUNET_NAMESTORE_zone_iteration_start(nsh, | 488 | zi = GNUNET_NAMESTORE_zone_iteration_start(nsh, |
444 | NULL, &empty_zone_proc, nsh); | 489 | NULL, |
490 | &fail_cb, | ||
491 | NULL, | ||
492 | &empty_zone_proc, | ||
493 | nsh, | ||
494 | &empty_zone_proc_end, | ||
495 | nsh); | ||
445 | if (NULL == zi) | 496 | if (NULL == zi) |
446 | { | 497 | { |
447 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, | 498 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, |