[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-merchant] branch master updated: fix #9219
From: |
gnunet |
Subject: |
[taler-merchant] branch master updated: fix #9219 |
Date: |
Mon, 30 Sep 2024 21:20:40 +0200 |
This is an automated email from the git hooks/post-receive script.
grothoff pushed a commit to branch master
in repository merchant.
The following commit(s) were added to refs/heads/master by this push:
new 27f71ff3 fix #9219
27f71ff3 is described below
commit 27f71ff3a0a1ab31210576a1c994edc0c98d6238
Author: Christian Grothoff <christian@grothoff.org>
AuthorDate: Mon Sep 30 21:20:35 2024 +0200
fix #9219
---
src/backend/taler-merchant-httpd_get-orders-ID.c | 44 +++++++++++++++++++++-
.../taler-merchant-httpd_private-get-orders-ID.c | 13 ++++---
.../taler-merchant-httpd_private-post-orders.c | 4 +-
3 files changed, 51 insertions(+), 10 deletions(-)
diff --git a/src/backend/taler-merchant-httpd_get-orders-ID.c
b/src/backend/taler-merchant-httpd_get-orders-ID.c
index e33093ec..28ba0785 100644
--- a/src/backend/taler-merchant-httpd_get-orders-ID.c
+++ b/src/backend/taler-merchant-httpd_get-orders-ID.c
@@ -96,15 +96,22 @@ struct GetOrderData
struct TMH_SuspendedConnection sc;
/**
- * Database event we are waiting on to be resuming.
+ * Database event we are waiting on to be resuming on payment.
*/
struct GNUNET_DB_EventHandler *pay_eh;
/**
- * Database event we are waiting on to be resuming.
+ * Database event we are waiting on to be resuming for refunds.
*/
struct GNUNET_DB_EventHandler *refund_eh;
+ /**
+ * Database event we are waiting on to be resuming for repurchase
+ * detection updating some equivalent order (same fulfillment URL)
+ * to our session.
+ */
+ struct GNUNET_DB_EventHandler *session_eh;
+
/**
* Which merchant instance is this for?
*/
@@ -345,6 +352,11 @@ god_cleanup (void *cls)
json_decref (god->contract_terms);
god->contract_terms = NULL;
}
+ if (NULL != god->session_eh)
+ {
+ TMH_db->event_listen_cancel (god->session_eh);
+ god->session_eh = NULL;
+ }
if (NULL != god->refund_eh)
{
TMH_db->event_listen_cancel (god->refund_eh);
@@ -555,6 +567,7 @@ phase_init (struct GetOrderData *god)
&resume_by_event,
god);
}
+
}
@@ -758,6 +771,33 @@ phase_parse_contract (struct GetOrderData *god)
return;
}
god->contract_parsed = true;
+ if ( (NULL != god->session_id) &&
+ (NULL != god->fulfillment_url) &&
+ (NULL == god->session_eh) )
+ {
+ struct TMH_SessionEventP session_eh = {
+ .header.size = htons (sizeof (session_eh)),
+ .header.type = htons (TALER_DBEVENT_MERCHANT_SESSION_CAPTURED),
+ .merchant_pub = god->hc->instance->merchant_pub
+ };
+
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+ "Subscribing to session triggers for %p\n",
+ god);
+ GNUNET_CRYPTO_hash (god->session_id,
+ strlen (god->session_id),
+ &session_eh.h_session_id);
+ GNUNET_CRYPTO_hash (god->fulfillment_url,
+ strlen (god->fulfillment_url),
+ &session_eh.h_fulfillment_url);
+ god->session_eh
+ = TMH_db->event_listen (
+ TMH_db->cls,
+ &session_eh.header,
+ GNUNET_TIME_absolute_get_remaining (god->sc.long_poll_timeout),
+ &resume_by_event,
+ god);
+ }
god->phase++;
}
diff --git a/src/backend/taler-merchant-httpd_private-get-orders-ID.c
b/src/backend/taler-merchant-httpd_private-get-orders-ID.c
index 50626876..dc3328d4 100644
--- a/src/backend/taler-merchant-httpd_private-get-orders-ID.c
+++ b/src/backend/taler-merchant-httpd_private-get-orders-ID.c
@@ -1387,7 +1387,7 @@ phase_reply_result (struct GetOrderRequestContext *gorc)
struct TMH_HandlerContext *hc = gorc->hc;
MHD_RESULT ret;
char *order_status_url;
- json_t *choice_index = json_null();
+ json_t *choice_index = json_null ();
{
struct TALER_PrivateContractHashP *h_contract = NULL;
@@ -1415,7 +1415,8 @@ phase_reply_result (struct GetOrderRequestContext *gorc)
TALER_amount_is_zero (&gorc->contract_amount));
gorc->last_payment = gorc->timestamp;
}
- if (-1 != gorc->choice_index) {
+ if (-1 != gorc->choice_index)
+ {
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"Choice index is %d\n",
gorc->choice_index);
@@ -1459,10 +1460,10 @@ phase_reply_result (struct GetOrderRequestContext *gorc)
gorc->refund_details),
GNUNET_JSON_pack_string ("order_status_url",
order_status_url),
- {
- .field_name = "choice_index",
- .object = choice_index,
- });
+ {
+ .field_name = "choice_index",
+ .object = choice_index,
+ });
GNUNET_free (order_status_url);
gorc->wire_details = NULL;
gorc->refund_details = NULL;
diff --git a/src/backend/taler-merchant-httpd_private-post-orders.c
b/src/backend/taler-merchant-httpd_private-post-orders.c
index cd8644e1..7053ac70 100644
--- a/src/backend/taler-merchant-httpd_private-post-orders.c
+++ b/src/backend/taler-merchant-httpd_private-post-orders.c
@@ -161,8 +161,8 @@ struct OrderContext
json_t *order;
/**
- * Set to how long refunds will be allowed.
- */
+ * Set to how long refunds will be allowed.
+ */
struct GNUNET_TIME_Relative refund_delay;
/**
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [taler-merchant] branch master updated: fix #9219,
gnunet <=