aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSchanzenbach, Martin <mschanzenbach@posteo.de>2019-06-05 00:56:43 +0200
committerSchanzenbach, Martin <mschanzenbach@posteo.de>2019-06-05 00:56:43 +0200
commit86d974e61bb7be2541f3675913d0d3993bc19987 (patch)
tree714a14beaea41413f2bbcf0d4ea03453673138b7
parent2af1b568199c62152fe7892ec33579aed326c136 (diff)
downloadgnunet-86d974e61bb7be2541f3675913d0d3993bc19987.tar.gz
gnunet-86d974e61bb7be2541f3675913d0d3993bc19987.zip
fix ticket result messages
-rw-r--r--src/reclaim/gnunet-service-reclaim.c11
-rw-r--r--src/reclaim/reclaim_api.c36
2 files changed, 10 insertions, 37 deletions
diff --git a/src/reclaim/gnunet-service-reclaim.c b/src/reclaim/gnunet-service-reclaim.c
index 52dc12725..57bff8ed4 100644
--- a/src/reclaim/gnunet-service-reclaim.c
+++ b/src/reclaim/gnunet-service-reclaim.c
@@ -600,16 +600,11 @@ send_ticket_result (const struct IdpClient *client,
600{ 600{
601 struct TicketResultMessage *irm; 601 struct TicketResultMessage *irm;
602 struct GNUNET_MQ_Envelope *env; 602 struct GNUNET_MQ_Envelope *env;
603 struct GNUNET_RECLAIM_Ticket *ticket_buf;
604 603
604 env = GNUNET_MQ_msg (irm,
605 GNUNET_MESSAGE_TYPE_RECLAIM_TICKET_RESULT);
605 if (NULL != ticket) { 606 if (NULL != ticket) {
606 env = GNUNET_MQ_msg_extra (irm, 607 irm->ticket = *ticket;
607 sizeof (struct GNUNET_RECLAIM_Ticket),
608 GNUNET_MESSAGE_TYPE_RECLAIM_TICKET_RESULT);
609 ticket_buf = (struct GNUNET_RECLAIM_Ticket *)&irm[1];
610 *ticket_buf = *ticket;
611 } else {
612 env = GNUNET_MQ_msg (irm, GNUNET_MESSAGE_TYPE_RECLAIM_TICKET_RESULT);
613 } 608 }
614 // TODO add success member 609 // TODO add success member
615 irm->id = htonl (r_id); 610 irm->id = htonl (r_id);
diff --git a/src/reclaim/reclaim_api.c b/src/reclaim/reclaim_api.c
index 63f8b9ba3..00ab69579 100644
--- a/src/reclaim/reclaim_api.c
+++ b/src/reclaim/reclaim_api.c
@@ -613,28 +613,6 @@ handle_attribute_result (void *cls, const struct AttributeResultMessage *msg)
613 * 613 *
614 * @param cls 614 * @param cls
615 * @param msg the message we received 615 * @param msg the message we received
616 * @return #GNUNET_OK on success, #GNUNET_SYSERR on error
617 */
618static int
619check_ticket_result (void *cls, const struct TicketResultMessage *msg)
620{
621 size_t msg_len;
622
623 msg_len = ntohs (msg->header.size);
624 if (msg_len < sizeof (struct TicketResultMessage)) {
625 GNUNET_break (0);
626 return GNUNET_SYSERR;
627 }
628 return GNUNET_OK;
629}
630
631
632/**
633 * Handle an incoming message of type
634 * #GNUNET_MESSAGE_TYPE_RECLAIM_TICKET_RESULT
635 *
636 * @param cls
637 * @param msg the message we received
638 */ 616 */
639static void 617static void
640handle_ticket_result (void *cls, const struct TicketResultMessage *msg) 618handle_ticket_result (void *cls, const struct TicketResultMessage *msg)
@@ -643,7 +621,7 @@ handle_ticket_result (void *cls, const struct TicketResultMessage *msg)
643 struct GNUNET_RECLAIM_Operation *op; 621 struct GNUNET_RECLAIM_Operation *op;
644 struct GNUNET_RECLAIM_TicketIterator *it; 622 struct GNUNET_RECLAIM_TicketIterator *it;
645 uint32_t r_id = ntohl (msg->id); 623 uint32_t r_id = ntohl (msg->id);
646 624 static const struct GNUNET_RECLAIM_Ticket ticket;
647 for (op = handle->op_head; NULL != op; op = op->next) 625 for (op = handle->op_head; NULL != op; op = op->next)
648 if (op->r_id == r_id) 626 if (op->r_id == r_id)
649 break; 627 break;
@@ -654,7 +632,7 @@ handle_ticket_result (void *cls, const struct TicketResultMessage *msg)
654 return; 632 return;
655 if (NULL != op) { 633 if (NULL != op) {
656 GNUNET_CONTAINER_DLL_remove (handle->op_head, handle->op_tail, op); 634 GNUNET_CONTAINER_DLL_remove (handle->op_head, handle->op_tail, op);
657 if (memcmp (&msg->ticket, 0, sizeof (struct GNUNET_RECLAIM_Ticket))) 635 if (0 == memcmp (&msg->ticket, &ticket, sizeof (struct GNUNET_RECLAIM_Ticket)))
658 { 636 {
659 if (NULL != op->tr_cb) 637 if (NULL != op->tr_cb)
660 op->tr_cb (op->cls, NULL); 638 op->tr_cb (op->cls, NULL);
@@ -665,7 +643,7 @@ handle_ticket_result (void *cls, const struct TicketResultMessage *msg)
665 free_op (op); 643 free_op (op);
666 return; 644 return;
667 } else if (NULL != it) { 645 } else if (NULL != it) {
668 if (memcmp (&msg->ticket, 0, sizeof (struct GNUNET_RECLAIM_Ticket))) 646 if (0 == memcmp (&msg->ticket, &ticket, sizeof (struct GNUNET_RECLAIM_Ticket)))
669 { 647 {
670 GNUNET_CONTAINER_DLL_remove (handle->ticket_it_head, 648 GNUNET_CONTAINER_DLL_remove (handle->ticket_it_head,
671 handle->ticket_it_tail, it); 649 handle->ticket_it_tail, it);
@@ -733,9 +711,9 @@ reconnect (struct GNUNET_RECLAIM_Handle *h)
733 GNUNET_MQ_hd_var_size (attribute_result, 711 GNUNET_MQ_hd_var_size (attribute_result,
734 GNUNET_MESSAGE_TYPE_RECLAIM_ATTRIBUTE_RESULT, 712 GNUNET_MESSAGE_TYPE_RECLAIM_ATTRIBUTE_RESULT,
735 struct AttributeResultMessage, h), 713 struct AttributeResultMessage, h),
736 GNUNET_MQ_hd_var_size (ticket_result, 714 GNUNET_MQ_hd_fixed_size (ticket_result,
737 GNUNET_MESSAGE_TYPE_RECLAIM_TICKET_RESULT, 715 GNUNET_MESSAGE_TYPE_RECLAIM_TICKET_RESULT,
738 struct TicketResultMessage, h), 716 struct TicketResultMessage, h),
739 GNUNET_MQ_hd_var_size (consume_ticket_result, 717 GNUNET_MQ_hd_var_size (consume_ticket_result,
740 GNUNET_MESSAGE_TYPE_RECLAIM_CONSUME_TICKET_RESULT, 718 GNUNET_MESSAGE_TYPE_RECLAIM_CONSUME_TICKET_RESULT,
741 struct ConsumeTicketResultMessage, h), 719 struct ConsumeTicketResultMessage, h),
@@ -1035,7 +1013,7 @@ GNUNET_RECLAIM_ticket_issue (
1035 struct GNUNET_RECLAIM_Operation *op; 1013 struct GNUNET_RECLAIM_Operation *op;
1036 struct IssueTicketMessage *tim; 1014 struct IssueTicketMessage *tim;
1037 size_t attr_len; 1015 size_t attr_len;
1038 1016 fprintf(stderr, "Issuing ticket\n");
1039 op = GNUNET_new (struct GNUNET_RECLAIM_Operation); 1017 op = GNUNET_new (struct GNUNET_RECLAIM_Operation);
1040 op->h = h; 1018 op->h = h;
1041 op->tr_cb = cb; 1019 op->tr_cb = cb;