merchant

Merchant backend to process payments, run by merchants
Log | Files | Refs | Submodules | README | LICENSE

commit 77e696d6c9617dfe64214ef468cc3140b8c97f53
parent e43163cf91a78d4a343c167b5a81a7a992518a2d
Author: Christian Grothoff <grothoff@gnunet.org>
Date:   Fri, 14 Aug 2026 23:25:24 +0200

stop timeout task once we are resumed

Diffstat:
Msrc/backend/taler-merchant-httpd_post-orders-ORDER_ID-pay.c | 11+++++++++++
1 file changed, 11 insertions(+), 0 deletions(-)

diff --git a/src/backend/taler-merchant-httpd_post-orders-ORDER_ID-pay.c b/src/backend/taler-merchant-httpd_post-orders-ORDER_ID-pay.c @@ -893,6 +893,17 @@ static void pay_resume (struct PayContext *pc) { GNUNET_assert (GNUNET_YES == pc->suspended); + /* We only ever suspend while we interact with an exchange or the + Donau; thus, once we resume, the timeout for that interaction is + no longer relevant and MUST be cancelled: otherwise it could fire + after we already resumed (and possibly even after we queued the + response) and then hit the "GNUNET_YES == pc->suspended" assertion + in handle_pay_timeout(). */ + if (NULL != pc->batch_deposits.timeout_task) + { + GNUNET_SCHEDULER_cancel (pc->batch_deposits.timeout_task); + pc->batch_deposits.timeout_task = NULL; + } pc->suspended = GNUNET_NO; MHD_resume_connection (pc->connection); TALER_MHD_daemon_trigger (); /* we resumed, kick MHD */