aboutsummaryrefslogtreecommitdiff
path: root/src/reclaim/gnunet-service-reclaim_tickets.c
diff options
context:
space:
mode:
authorSchanzenbach, Martin <mschanzenbach@posteo.de>2019-04-13 22:57:06 +0200
committerSchanzenbach, Martin <mschanzenbach@posteo.de>2019-04-14 10:01:24 +0200
commitaf90492d9f86b3bcce93a8459383744939318bc3 (patch)
treef1302668151763b247f0044691516343f3508209 /src/reclaim/gnunet-service-reclaim_tickets.c
parent38f1f248ac9666bd24655ef4b55ec38b909715ad (diff)
downloadgnunet-af90492d9f86b3bcce93a8459383744939318bc3.tar.gz
gnunet-af90492d9f86b3bcce93a8459383744939318bc3.zip
RECLAIM: refactor revoke
Diffstat (limited to 'src/reclaim/gnunet-service-reclaim_tickets.c')
-rw-r--r--src/reclaim/gnunet-service-reclaim_tickets.c539
1 files changed, 508 insertions, 31 deletions
diff --git a/src/reclaim/gnunet-service-reclaim_tickets.c b/src/reclaim/gnunet-service-reclaim_tickets.c
index 33b58280a..5a3190c7f 100644
--- a/src/reclaim/gnunet-service-reclaim_tickets.c
+++ b/src/reclaim/gnunet-service-reclaim_tickets.c
@@ -24,6 +24,8 @@
24 * @brief reclaim tickets 24 * @brief reclaim tickets
25 * 25 *
26 */ 26 */
27#include <inttypes.h>
28
27#include "gnunet-service-reclaim_tickets.h" 29#include "gnunet-service-reclaim_tickets.h"
28 30
29struct ParallelLookup; 31struct ParallelLookup;
@@ -227,6 +229,128 @@ struct RECLAIM_TICKETS_Iterator {
227 struct TicketReference *tickets_tail; 229 struct TicketReference *tickets_tail;
228}; 230};
229 231
232
233struct RevokedAttributeEntry {
234 /**
235 * DLL
236 */
237 struct RevokedAttributeEntry *next;
238
239 /**
240 * DLL
241 */
242 struct RevokedAttributeEntry *prev;
243
244 /**
245 * Old ID of the attribute
246 */
247 uint64_t old_id;
248
249 /**
250 * New ID of the attribute
251 */
252 uint64_t new_id;
253};
254
255
256struct TicketRecordsEntry {
257 /**
258 * DLL
259 */
260 struct TicketRecordsEntry *next;
261
262 /**
263 * DLL
264 */
265 struct TicketRecordsEntry *prev;
266
267 /**
268 * Record count
269 */
270 unsigned int rd_count;
271
272 /**
273 * Data
274 */
275 char *data;
276
277 /**
278 * Data size
279 */
280 size_t data_size;
281
282 /**
283 * Label
284 */
285 char *label;
286};
287
288/**
289 * Ticket revocation request handle
290 */
291struct RECLAIM_TICKETS_RevokeHandle {
292 /**
293 * Issuer Key
294 */
295 struct GNUNET_CRYPTO_EcdsaPrivateKey identity;
296
297 /**
298 * Callback
299 */
300 RECLAIM_TICKETS_RevokeCallback cb;
301
302 /**
303 * Callback cls
304 */
305 void *cb_cls;
306
307 /**
308 * Ticket to issue
309 */
310 struct GNUNET_RECLAIM_Ticket ticket;
311
312 /**
313 * QueueEntry
314 */
315 struct GNUNET_NAMESTORE_QueueEntry *ns_qe;
316
317 /**
318 * Namestore iterator
319 */
320 struct GNUNET_NAMESTORE_ZoneIterator *ns_it;
321
322 /**
323 * Revoked attributes
324 */
325 struct RevokedAttributeEntry *attrs_head;
326
327 /**
328 * Revoked attributes
329 */
330 struct RevokedAttributeEntry *attrs_tail;
331
332 /**
333 * Current attribute to move
334 */
335 struct RevokedAttributeEntry *move_attr;
336
337 /**
338 * Number of attributes in ticket
339 */
340 unsigned int ticket_attrs;
341
342 /**
343 * Tickets to update
344 */
345 struct TicketRecordsEntry *tickets_to_update_head;
346
347 /**
348 * Tickets to update
349 */
350 struct TicketRecordsEntry *tickets_to_update_tail;
351};
352
353
230/* Namestore handle */ 354/* Namestore handle */
231static struct GNUNET_NAMESTORE_Handle *nsh; 355static struct GNUNET_NAMESTORE_Handle *nsh;
232 356
@@ -236,12 +360,349 @@ static struct GNUNET_GNS_Handle *gns;
236/* Handle to the statistics service */ 360/* Handle to the statistics service */
237static struct GNUNET_STATISTICS_Handle *stats; 361static struct GNUNET_STATISTICS_Handle *stats;
238 362
363static void
364move_attrs (struct RECLAIM_TICKETS_RevokeHandle *rh);
365
366static void
367move_attrs_cont (void *cls)
368{
369 move_attrs ((struct RECLAIM_TICKETS_RevokeHandle *)cls);
370}
371
372/**
373 * Cleanup revoke handle
374 *
375 * @param rh the ticket revocation handle
376 */
377static void
378cleanup_rvk (struct RECLAIM_TICKETS_RevokeHandle *rh)
379{
380 struct RevokedAttributeEntry *ae;
381 struct TicketRecordsEntry *le;
382 if (NULL != rh->ns_qe)
383 GNUNET_NAMESTORE_cancel (rh->ns_qe);
384 if (NULL != rh->ns_it)
385 GNUNET_NAMESTORE_zone_iteration_stop (rh->ns_it);
386 while (NULL != (ae = rh->attrs_head)) {
387 GNUNET_CONTAINER_DLL_remove (rh->attrs_head, rh->attrs_tail, ae);
388 GNUNET_free (ae);
389 }
390 while (NULL != (le = rh->tickets_to_update_head)) {
391 GNUNET_CONTAINER_DLL_remove (rh->tickets_to_update_head,
392 rh->tickets_to_update_head, le);
393 if (NULL != le->data)
394 GNUNET_free (le->data);
395 if (NULL != le->label)
396 GNUNET_free (le->label);
397 GNUNET_free (le);
398 }
399 GNUNET_free (rh);
400}
401
402static void
403del_attr_finished (void *cls, int32_t success, const char *emsg)
404{
405 struct RECLAIM_TICKETS_RevokeHandle *rvk = cls;
406 rvk->ns_qe = NULL;
407 if (GNUNET_SYSERR == success) {
408 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Error removing attribute: %s\n",
409 emsg);
410 rvk->cb (rvk->cb_cls, GNUNET_SYSERR);
411 cleanup_rvk (rvk);
412 return;
413 }
414 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Continuing\n");
415 rvk->move_attr = rvk->move_attr->next;
416 GNUNET_SCHEDULER_add_now (&move_attrs_cont, rvk);
417}
418
419static void
420move_attr_finished (void *cls, int32_t success, const char *emsg)
421{
422 struct RECLAIM_TICKETS_RevokeHandle *rvk = cls;
423 char *label;
424 rvk->ns_qe = NULL;
425 if (GNUNET_SYSERR == success) {
426 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Error moving attribute: %s\n", emsg);
427 rvk->cb (rvk->cb_cls, GNUNET_SYSERR);
428 cleanup_rvk (rvk);
429 return;
430 }
431 label = GNUNET_STRINGS_data_to_string_alloc (&rvk->move_attr->old_id,
432 sizeof (uint64_t));
433 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Removing attribute %s\n", label);
434 rvk->ns_qe = GNUNET_NAMESTORE_records_store (nsh, &rvk->identity, label, 0,
435 NULL, &del_attr_finished, rvk);
436}
437
438
439static void
440rvk_move_attr_cb (void *cls, const struct GNUNET_CRYPTO_EcdsaPrivateKey *zone,
441 const char *label, unsigned int rd_count,
442 const struct GNUNET_GNSRECORD_Data *rd)
443{
444 struct RECLAIM_TICKETS_RevokeHandle *rvk = cls;
445 struct RevokedAttributeEntry *le;
446 char *new_label;
447 rvk->ns_qe = NULL;
448 if (0 == rd_count) {
449 GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
450 "The attribute %s no longer exists!\n", label);
451 le = rvk->move_attr;
452 rvk->move_attr = le->next;
453 GNUNET_CONTAINER_DLL_remove (rvk->attrs_head, rvk->attrs_tail, le);
454 GNUNET_free (le);
455 GNUNET_SCHEDULER_add_now (&move_attrs_cont, rvk);
456 return;
457 }
458 /** find a new place for this attribute **/
459 rvk->move_attr->new_id =
460 GNUNET_CRYPTO_random_u64 (GNUNET_CRYPTO_QUALITY_STRONG, UINT64_MAX);
461 new_label = GNUNET_STRINGS_data_to_string_alloc (&rvk->move_attr->new_id,
462 sizeof (uint64_t));
463 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Adding attribute %s\n", new_label);
464 rvk->ns_qe = GNUNET_NAMESTORE_records_store (nsh, &rvk->identity, new_label,
465 1, rd, &move_attr_finished, rvk);
466 GNUNET_free (new_label);
467}
468
469
470static void
471rvk_ticket_update (void *cls, const struct GNUNET_CRYPTO_EcdsaPrivateKey *zone,
472 const char *label, unsigned int rd_count,
473 const struct GNUNET_GNSRECORD_Data *rd)
474{
475 struct RECLAIM_TICKETS_RevokeHandle *rvk = cls;
476 struct TicketRecordsEntry *le;
477 struct RevokedAttributeEntry *ae;
478 int has_changed = GNUNET_NO;
479
480 /** Let everything point to the old record **/
481 for (int i = 0; i < rd_count; i++) {
482 if (GNUNET_GNSRECORD_TYPE_RECLAIM_ATTR_REF != rd[i].record_type)
483 continue;
484 for (ae = rvk->attrs_head; NULL != ae; ae = ae->next) {
485 if (0 != memcmp (rd[i].data, &ae->old_id, sizeof (uint64_t)))
486 continue;
487 has_changed = GNUNET_YES;
488 break;
489 }
490 if (GNUNET_YES == has_changed)
491 break;
492 }
493 if (GNUNET_YES == has_changed) {
494 le = GNUNET_new (struct TicketRecordsEntry);
495 le->data_size = GNUNET_GNSRECORD_records_get_size (rd_count, rd);
496 le->data = GNUNET_malloc (le->data_size);
497 le->rd_count = rd_count;
498 le->label = GNUNET_strdup (label);
499 GNUNET_GNSRECORD_records_serialize (rd_count, rd, le->data_size, le->data);
500 GNUNET_CONTAINER_DLL_insert (rvk->tickets_to_update_head,
501 rvk->tickets_to_update_tail, le);
502 }
503 GNUNET_NAMESTORE_zone_iterator_next (rvk->ns_it, 1);
504}
505
506
507static void
508process_tickets (void *cls);
509
510
511static void
512ticket_processed (void *cls, int32_t success, const char *emsg)
513{
514 struct RECLAIM_TICKETS_RevokeHandle *rvk = cls;
515 rvk->ns_qe = NULL;
516 GNUNET_SCHEDULER_add_now (&process_tickets, rvk);
517}
518
519static void
520process_tickets (void *cls)
521{
522 struct RECLAIM_TICKETS_RevokeHandle *rvk = cls;
523 struct TicketRecordsEntry *le;
524 struct RevokedAttributeEntry *ae;
525 if (NULL == rvk->tickets_to_update_head) {
526 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
527 "Finished updatding tickets, success\n");
528 rvk->cb (rvk->cb_cls, GNUNET_OK);
529 cleanup_rvk (rvk);
530 return;
531 }
532 le = rvk->tickets_to_update_head;
533 GNUNET_CONTAINER_DLL_remove (rvk->tickets_to_update_head,
534 rvk->tickets_to_update_tail, le);
535 struct GNUNET_GNSRECORD_Data rd[le->rd_count];
536 GNUNET_GNSRECORD_records_deserialize (le->data_size, le->data, le->rd_count,
537 rd);
538 for (int i = 0; i < le->rd_count; i++) {
539 if (GNUNET_GNSRECORD_TYPE_RECLAIM_ATTR_REF != rd[i].record_type)
540 continue;
541 for (ae = rvk->attrs_head; NULL != ae; ae = ae->next) {
542 if (0 != memcmp (rd[i].data, &ae->old_id, sizeof (uint64_t)))
543 continue;
544 rd[i].data = &ae->new_id;
545 }
546 }
547 rvk->ns_qe = GNUNET_NAMESTORE_records_store (
548 nsh, &rvk->identity, le->label, le->rd_count, rd, &ticket_processed, rvk);
549 GNUNET_free (le->label);
550 GNUNET_free (le->data);
551 GNUNET_free (le);
552}
553
554static void
555rvk_ticket_update_finished (void *cls)
556{
557 struct RECLAIM_TICKETS_RevokeHandle *rvk = cls;
558 rvk->ns_it = NULL;
559 GNUNET_SCHEDULER_add_now (&process_tickets, rvk);
560}
561
562
563static void
564rvk_ns_iter_err (void *cls)
565{
566 struct RECLAIM_TICKETS_RevokeHandle *rvk = cls;
567 rvk->ns_it = NULL;
568 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
569 "Namestore error on revocation (id=%" PRIu64 "\n",
570 rvk->move_attr->old_id);
571 rvk->cb (rvk->cb_cls, GNUNET_SYSERR);
572 cleanup_rvk (rvk);
573}
574
575
576static void
577rvk_ns_err (void *cls)
578{
579 struct RECLAIM_TICKETS_RevokeHandle *rvk = cls;
580 rvk->ns_qe = NULL;
581 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
582 "Namestore error on revocation (id=%" PRIu64 "\n",
583 rvk->move_attr->old_id);
584 rvk->cb (rvk->cb_cls, GNUNET_SYSERR);
585 cleanup_rvk (rvk);
586}
587
588
589static void
590move_attrs (struct RECLAIM_TICKETS_RevokeHandle *rvk)
591{
592 char *label;
593
594 if (NULL == rvk->move_attr) {
595 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Finished moving attributes\n");
596 rvk->ns_it = GNUNET_NAMESTORE_zone_iteration_start (
597 nsh, &rvk->identity, &rvk_ns_iter_err, rvk, &rvk_ticket_update, rvk,
598 &rvk_ticket_update_finished, rvk);
599 return;
600 }
601 label = GNUNET_STRINGS_data_to_string_alloc (&rvk->move_attr->old_id,
602 sizeof (uint64_t));
603 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Moving attribute %s\n", label);
604
605 rvk->ns_qe = GNUNET_NAMESTORE_records_lookup (
606 nsh, &rvk->identity, label, &rvk_ns_err, rvk, &rvk_move_attr_cb, rvk);
607 GNUNET_free (label);
608}
609
610
611static void
612remove_ticket_cont (void *cls, int32_t success, const char *emsg)
613{
614 struct RECLAIM_TICKETS_RevokeHandle *rvk = cls;
615 rvk->ns_qe = NULL;
616 if (GNUNET_SYSERR == success) {
617 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "%s\n", emsg);
618 rvk->cb (rvk->cb_cls, GNUNET_SYSERR);
619 cleanup_rvk (rvk);
620 return;
621 }
622 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Deleted ticket\n");
623 if (0 == rvk->ticket_attrs) {
624 GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
625 "No attributes to move... strange\n");
626 rvk->cb (rvk->cb_cls, GNUNET_OK);
627 cleanup_rvk (rvk);
628 return;
629 }
630 rvk->move_attr = rvk->attrs_head;
631 move_attrs (rvk);
632}
633
634
635static void
636revoke_attrs_cb (void *cls, const struct GNUNET_CRYPTO_EcdsaPrivateKey *zone,
637 const char *label, unsigned int rd_count,
638 const struct GNUNET_GNSRECORD_Data *rd)
639
640{
641 struct RECLAIM_TICKETS_RevokeHandle *rvk = cls;
642 struct RevokedAttributeEntry *le;
643 rvk->ns_qe = NULL;
644 for (int i = 0; i < rd_count; i++) {
645 if (GNUNET_GNSRECORD_TYPE_RECLAIM_ATTR_REF != rd[i].record_type)
646 continue;
647 le = GNUNET_new (struct RevokedAttributeEntry);
648 le->old_id = *((uint64_t *)rd[i].data);
649 GNUNET_CONTAINER_DLL_insert (rvk->attrs_head, rvk->attrs_tail, le);
650 rvk->ticket_attrs++;
651 }
652
653 /** Now, remove ticket **/
654 rvk->ns_qe = GNUNET_NAMESTORE_records_store (nsh, &rvk->identity, label, 0,
655 NULL, &remove_ticket_cont, rvk);
656}
657
658
659static void
660rvk_attrs_err_cb (void *cls)
661{
662 struct RECLAIM_TICKETS_RevokeHandle *rvk = cls;
663 rvk->cb (rvk->cb_cls, GNUNET_SYSERR);
664 cleanup_rvk (rvk);
665}
666
667
668struct RECLAIM_TICKETS_RevokeHandle *
669RECLAIM_TICKETS_revoke (const struct GNUNET_RECLAIM_Ticket *ticket,
670 const struct GNUNET_CRYPTO_EcdsaPrivateKey *identity,
671 RECLAIM_TICKETS_RevokeCallback cb, void *cb_cls)
672{
673 struct RECLAIM_TICKETS_RevokeHandle *rvk;
674 char *label;
675
676 rvk = GNUNET_new (struct RECLAIM_TICKETS_RevokeHandle);
677 rvk->cb = cb;
678 rvk->cb_cls = cb_cls;
679 rvk->identity = *identity;
680 rvk->ticket = *ticket;
681 GNUNET_CRYPTO_ecdsa_key_get_public (&rvk->identity, &rvk->ticket.identity);
682 /** Get shared attributes **/
683 label = GNUNET_STRINGS_data_to_string_alloc (&ticket->rnd, sizeof (uint64_t));
684
685 rvk->ns_qe = GNUNET_NAMESTORE_records_lookup (
686 nsh, identity, label, &rvk_attrs_err_cb, rvk, &revoke_attrs_cb, rvk);
687 return rvk;
688}
689
690
691void
692RECLAIM_TICKETS_revoke_cancel (struct RECLAIM_TICKETS_RevokeHandle *rh)
693{
694 cleanup_rvk (rh);
695}
696/*******************************
697 * Ticket consume
698 *******************************/
239 699
240/** 700/**
241 * Cleanup ticket consume handle 701 * Cleanup ticket consume handle
242 * @param cth the handle to clean up 702 * @param cth the handle to clean up
243 */ 703 */
244static void cleanup_cth (struct RECLAIM_TICKETS_ConsumeHandle *cth) 704static void
705cleanup_cth (struct RECLAIM_TICKETS_ConsumeHandle *cth)
245{ 706{
246 struct ParallelLookup *lu; 707 struct ParallelLookup *lu;
247 struct ParallelLookup *tmp; 708 struct ParallelLookup *tmp;
@@ -305,7 +766,8 @@ process_parallel_lookup_result (void *cls, uint32_t rd_count,
305} 766}
306 767
307 768
308static void abort_parallel_lookups (void *cls) 769static void
770abort_parallel_lookups (void *cls)
309{ 771{
310 struct RECLAIM_TICKETS_ConsumeHandle *cth = cls; 772 struct RECLAIM_TICKETS_ConsumeHandle *cth = cls;
311 struct ParallelLookup *lu; 773 struct ParallelLookup *lu;
@@ -325,8 +787,9 @@ static void abort_parallel_lookups (void *cls)
325} 787}
326 788
327 789
328static void lookup_authz_cb (void *cls, uint32_t rd_count, 790static void
329 const struct GNUNET_GNSRECORD_Data *rd) 791lookup_authz_cb (void *cls, uint32_t rd_count,
792 const struct GNUNET_GNSRECORD_Data *rd)
330{ 793{
331 struct RECLAIM_TICKETS_ConsumeHandle *cth = cls; 794 struct RECLAIM_TICKETS_ConsumeHandle *cth = cls;
332 struct ParallelLookup *parallel_lookup; 795 struct ParallelLookup *parallel_lookup;
@@ -388,7 +851,8 @@ RECLAIM_TICKETS_consume (const struct GNUNET_CRYPTO_EcdsaPrivateKey *id,
388 return cth; 851 return cth;
389} 852}
390 853
391void RECLAIM_TICKETS_consume_cancel (struct RECLAIM_TICKETS_ConsumeHandle *cth) 854void
855RECLAIM_TICKETS_consume_cancel (struct RECLAIM_TICKETS_ConsumeHandle *cth)
392{ 856{
393 cleanup_cth (cth); 857 cleanup_cth (cth);
394 return; 858 return;
@@ -403,7 +867,8 @@ void RECLAIM_TICKETS_consume_cancel (struct RECLAIM_TICKETS_ConsumeHandle *cth)
403 * Cleanup ticket consume handle 867 * Cleanup ticket consume handle
404 * @param handle the handle to clean up 868 * @param handle the handle to clean up
405 */ 869 */
406static void cleanup_issue_handle (struct TicketIssueHandle *handle) 870static void
871cleanup_issue_handle (struct TicketIssueHandle *handle)
407{ 872{
408 struct TicketReference *tr; 873 struct TicketReference *tr;
409 struct TicketReference *tr_tmp; 874 struct TicketReference *tr_tmp;
@@ -422,8 +887,8 @@ static void cleanup_issue_handle (struct TicketIssueHandle *handle)
422} 887}
423 888
424 889
425static void store_ticket_refs_cont (void *cls, int32_t success, 890static void
426 const char *emsg) 891store_ticket_refs_cont (void *cls, int32_t success, const char *emsg)
427{ 892{
428 struct TicketIssueHandle *handle = cls; 893 struct TicketIssueHandle *handle = cls;
429 handle->ns_qe = NULL; 894 handle->ns_qe = NULL;
@@ -438,7 +903,8 @@ static void store_ticket_refs_cont (void *cls, int32_t success,
438} 903}
439 904
440 905
441static void update_ticket_refs (void *cls) 906static void
907update_ticket_refs (void *cls)
442{ 908{
443 struct TicketIssueHandle *handle = cls; 909 struct TicketIssueHandle *handle = cls;
444 struct GNUNET_GNSRECORD_Data refs_rd[handle->ticket_ref_num]; 910 struct GNUNET_GNSRECORD_Data refs_rd[handle->ticket_ref_num];
@@ -461,10 +927,10 @@ static void update_ticket_refs (void *cls)
461} 927}
462 928
463 929
464static void ticket_lookup_cb (void *cls, 930static void
465 const struct GNUNET_CRYPTO_EcdsaPrivateKey *zone, 931ticket_lookup_cb (void *cls, const struct GNUNET_CRYPTO_EcdsaPrivateKey *zone,
466 const char *label, unsigned int rd_count, 932 const char *label, unsigned int rd_count,
467 const struct GNUNET_GNSRECORD_Data *rd) 933 const struct GNUNET_GNSRECORD_Data *rd)
468{ 934{
469 struct TicketIssueHandle *handle = cls; 935 struct TicketIssueHandle *handle = cls;
470 struct TicketReference *tr; 936 struct TicketReference *tr;
@@ -500,7 +966,8 @@ static void ticket_lookup_cb (void *cls,
500/** 966/**
501 * TODO maybe we should cleanup the ATTRREFS here? 967 * TODO maybe we should cleanup the ATTRREFS here?
502 */ 968 */
503static void ticket_lookup_error_cb (void *cls) 969static void
970ticket_lookup_error_cb (void *cls)
504{ 971{
505 struct TicketIssueHandle *handle = cls; 972 struct TicketIssueHandle *handle = cls;
506 handle->ns_qe = NULL; 973 handle->ns_qe = NULL;
@@ -509,8 +976,8 @@ static void ticket_lookup_error_cb (void *cls)
509 cleanup_issue_handle (handle); 976 cleanup_issue_handle (handle);
510} 977}
511 978
512static void store_ticket_issue_cont (void *cls, int32_t success, 979static void
513 const char *emsg) 980store_ticket_issue_cont (void *cls, int32_t success, const char *emsg)
514{ 981{
515 struct TicketIssueHandle *handle = cls; 982 struct TicketIssueHandle *handle = cls;
516 983
@@ -527,7 +994,8 @@ static void store_ticket_issue_cont (void *cls, int32_t success,
527} 994}
528 995
529 996
530static void issue_ticket (struct TicketIssueHandle *ih) 997static void
998issue_ticket (struct TicketIssueHandle *ih)
531{ 999{
532 struct GNUNET_RECLAIM_ATTRIBUTE_ClaimListEntry *le; 1000 struct GNUNET_RECLAIM_ATTRIBUTE_ClaimListEntry *le;
533 struct GNUNET_GNSRECORD_Data *attrs_record; 1001 struct GNUNET_GNSRECORD_Data *attrs_record;
@@ -561,11 +1029,11 @@ static void issue_ticket (struct TicketIssueHandle *ih)
561} 1029}
562 1030
563 1031
564void RECLAIM_TICKETS_issue ( 1032void
565 const struct GNUNET_CRYPTO_EcdsaPrivateKey *identity, 1033RECLAIM_TICKETS_issue (const struct GNUNET_CRYPTO_EcdsaPrivateKey *identity,
566 const struct GNUNET_RECLAIM_ATTRIBUTE_ClaimList *attrs, 1034 const struct GNUNET_RECLAIM_ATTRIBUTE_ClaimList *attrs,
567 const struct GNUNET_CRYPTO_EcdsaPublicKey *audience, 1035 const struct GNUNET_CRYPTO_EcdsaPublicKey *audience,
568 RECLAIM_TICKETS_TicketResult cb, void *cb_cls) 1036 RECLAIM_TICKETS_TicketResult cb, void *cb_cls)
569{ 1037{
570 struct TicketIssueHandle *tih; 1038 struct TicketIssueHandle *tih;
571 tih = GNUNET_new (struct TicketIssueHandle); 1039 tih = GNUNET_new (struct TicketIssueHandle);
@@ -584,7 +1052,8 @@ void RECLAIM_TICKETS_issue (
584 * Ticket iteration 1052 * Ticket iteration
585 ************************************/ 1053 ************************************/
586 1054
587static void cleanup_iter (struct RECLAIM_TICKETS_Iterator *iter) 1055static void
1056cleanup_iter (struct RECLAIM_TICKETS_Iterator *iter)
588{ 1057{
589 struct TicketReference *tr; 1058 struct TicketReference *tr;
590 struct TicketReference *tr_tmp; 1059 struct TicketReference *tr_tmp;
@@ -600,7 +1069,8 @@ static void cleanup_iter (struct RECLAIM_TICKETS_Iterator *iter)
600 GNUNET_free (iter); 1069 GNUNET_free (iter);
601} 1070}
602 1071
603static void do_cleanup_iter (void *cls) 1072static void
1073do_cleanup_iter (void *cls)
604{ 1074{
605 struct RECLAIM_TICKETS_Iterator *iter = cls; 1075 struct RECLAIM_TICKETS_Iterator *iter = cls;
606 cleanup_iter (iter); 1076 cleanup_iter (iter);
@@ -611,7 +1081,8 @@ static void do_cleanup_iter (void *cls)
611 * 1081 *
612 * @param ti ticket iterator to process 1082 * @param ti ticket iterator to process
613 */ 1083 */
614static void run_ticket_iteration_round (struct RECLAIM_TICKETS_Iterator *iter) 1084static void
1085run_ticket_iteration_round (struct RECLAIM_TICKETS_Iterator *iter)
615{ 1086{
616 struct TicketReference *tr; 1087 struct TicketReference *tr;
617 if (NULL == iter->tickets_head) { 1088 if (NULL == iter->tickets_head) {
@@ -653,7 +1124,8 @@ collect_tickets_cb (void *cls, const struct GNUNET_CRYPTO_EcdsaPrivateKey *zone,
653 run_ticket_iteration_round (iter); 1124 run_ticket_iteration_round (iter);
654} 1125}
655 1126
656static void collect_tickets_error_cb (void *cls) 1127static void
1128collect_tickets_error_cb (void *cls)
657{ 1129{
658 struct RECLAIM_TICKETS_Iterator *iter = cls; 1130 struct RECLAIM_TICKETS_Iterator *iter = cls;
659 iter->ns_qe = NULL; 1131 iter->ns_qe = NULL;
@@ -661,17 +1133,20 @@ static void collect_tickets_error_cb (void *cls)
661 cleanup_iter (iter); 1133 cleanup_iter (iter);
662} 1134}
663 1135
664void RECLAIM_TICKETS_iteration_next (struct RECLAIM_TICKETS_Iterator *iter) 1136void
1137RECLAIM_TICKETS_iteration_next (struct RECLAIM_TICKETS_Iterator *iter)
665{ 1138{
666 run_ticket_iteration_round (iter); 1139 run_ticket_iteration_round (iter);
667} 1140}
668 1141
669void RECLAIM_TICKETS_iteration_stop (struct RECLAIM_TICKETS_Iterator *iter) 1142void
1143RECLAIM_TICKETS_iteration_stop (struct RECLAIM_TICKETS_Iterator *iter)
670{ 1144{
671 cleanup_iter (iter); 1145 cleanup_iter (iter);
672} 1146}
673 1147
674struct RECLAIM_TICKETS_Iterator *RECLAIM_TICKETS_iteration_start ( 1148struct RECLAIM_TICKETS_Iterator *
1149RECLAIM_TICKETS_iteration_start (
675 const struct GNUNET_CRYPTO_EcdsaPrivateKey *identity, 1150 const struct GNUNET_CRYPTO_EcdsaPrivateKey *identity,
676 RECLAIM_TICKETS_TicketIter cb, void *cb_cls) 1151 RECLAIM_TICKETS_TicketIter cb, void *cb_cls)
677{ 1152{
@@ -689,7 +1164,8 @@ struct RECLAIM_TICKETS_Iterator *RECLAIM_TICKETS_iteration_start (
689} 1164}
690 1165
691 1166
692int RECLAIM_TICKETS_init (const struct GNUNET_CONFIGURATION_Handle *c) 1167int
1168RECLAIM_TICKETS_init (const struct GNUNET_CONFIGURATION_Handle *c)
693{ 1169{
694 // Connect to identity and namestore services 1170 // Connect to identity and namestore services
695 nsh = GNUNET_NAMESTORE_connect (c); 1171 nsh = GNUNET_NAMESTORE_connect (c);
@@ -707,7 +1183,8 @@ int RECLAIM_TICKETS_init (const struct GNUNET_CONFIGURATION_Handle *c)
707 return GNUNET_OK; 1183 return GNUNET_OK;
708} 1184}
709 1185
710void RECLAIM_TICKETS_deinit (void) 1186void
1187RECLAIM_TICKETS_deinit (void)
711{ 1188{
712 if (NULL != nsh) 1189 if (NULL != nsh)
713 GNUNET_NAMESTORE_disconnect (nsh); 1190 GNUNET_NAMESTORE_disconnect (nsh);