diff options
Diffstat (limited to 'src/backend/taler-merchant-httpd_get-orders-ID.c')
-rw-r--r-- | src/backend/taler-merchant-httpd_get-orders-ID.c | 28 |
1 files changed, 22 insertions, 6 deletions
diff --git a/src/backend/taler-merchant-httpd_get-orders-ID.c b/src/backend/taler-merchant-httpd_get-orders-ID.c index c679211f..b96f6ba0 100644 --- a/src/backend/taler-merchant-httpd_get-orders-ID.c +++ b/src/backend/taler-merchant-httpd_get-orders-ID.c @@ -190,6 +190,12 @@ suspend_god (struct GetOrderData *god) GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Suspending GET /orders/%s\n", god->order_id); + if (NULL != god->contract_terms) + { + json_decref (god->contract_terms); + god->fulfillment_url = NULL; + god->contract_terms = NULL; + } GNUNET_assert (! god->suspended); god->suspended = true; GNUNET_CONTAINER_DLL_insert (god_head, @@ -491,10 +497,12 @@ send_pay_request (struct GetOrderData *god, struct GNUNET_TIME_Relative remaining; remaining = GNUNET_TIME_absolute_get_remaining (god->sc.long_poll_timeout); - if ( (0 != remaining.rel_value_us) && + if ( (! GNUNET_TIME_relative_is_zero (remaining)) && (NULL == already_paid_order_id) ) { /* long polling: do not queue a response, suspend connection instead */ + GNUNET_log (GNUNET_ERROR_TYPE_INFO, + "Suspending request: long polling for payment\n"); suspend_god (god); return MHD_YES; } @@ -679,7 +687,10 @@ god_cleanup (void *cls) struct GetOrderData *god = cls; if (NULL != god->contract_terms) + { json_decref (god->contract_terms); + god->contract_terms = NULL; + } GNUNET_free (god); } @@ -969,6 +980,8 @@ TMH_get_orders_ID (const struct TMH_RequestHandler *rh, { const char *public_reorder_url; + GNUNET_log (GNUNET_ERROR_TYPE_INFO, + "Neither claim token nor contract matched\n"); public_reorder_url = json_string_value (json_object_get ( god->contract_terms, "public_reorder_url")); @@ -1029,11 +1042,14 @@ TMH_get_orders_ID (const struct TMH_RequestHandler *rh, GNUNET_JSON_pack_string ("public_reorder_url", public_reorder_url)); } + + GNUNET_log (GNUNET_ERROR_TYPE_INFO, + "Claim token or contract matched\n"); if (! god->claimed) { /* Order is unclaimed, no need to check for payments or even refunds, simply always generate payment request */ - GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, + GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Order unclaimed, sending pay request for order %s\n", order_id); return send_pay_request (god, @@ -1080,7 +1096,7 @@ TMH_get_orders_ID (const struct TMH_RequestHandler *rh, { MHD_RESULT ret; - GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, + GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Sending pay request for order %s (already paid: %s)\n", order_id, already_paid_order_id); @@ -1115,7 +1131,7 @@ TMH_get_orders_ID (const struct TMH_RequestHandler *rh, GNUNET_break (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT == qs); if (! paid) { - GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, + GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Order claimed but unpaid, sending pay request for order %s\n", order_id); return send_pay_request (god, @@ -1154,7 +1170,7 @@ TMH_get_orders_ID (const struct TMH_RequestHandler *rh, struct GNUNET_TIME_Relative remaining; remaining = GNUNET_TIME_absolute_get_remaining (god->sc.long_poll_timeout); - if (0 != remaining.rel_value_us) + if (! GNUNET_TIME_relative_is_zero (remaining)) { /* yes, indeed suspend */ if (god->sc.awaiting_refund) @@ -1162,7 +1178,7 @@ TMH_get_orders_ID (const struct TMH_RequestHandler *rh, "Awaiting refund exceeding %s\n", TALER_amount2s (&god->sc.refund_expected)); if (god->sc.awaiting_refund_obtained) - GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, + GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Awaiting pending refunds\n"); suspend_god (god); return MHD_YES; |