[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-exchange] branch master updated: handle idempotency/expiration ch
From: |
gnunet |
Subject: |
[taler-exchange] branch master updated: handle idempotency/expiration check in purse_merge |
Date: |
Tue, 05 Jul 2022 12:49:05 +0200 |
This is an automated email from the git hooks/post-receive script.
grothoff pushed a commit to branch master
in repository exchange.
The following commit(s) were added to refs/heads/master by this push:
new 82cff16e handle idempotency/expiration check in purse_merge
82cff16e is described below
commit 82cff16eea29fda6636b48d5980b48b1bc01236f
Author: Christian Grothoff <christian@grothoff.org>
AuthorDate: Tue Jul 5 12:49:03 2022 +0200
handle idempotency/expiration check in purse_merge
---
src/exchange/taler-exchange-httpd_purses_merge.c | 44 +++++++++++++++++++++++-
1 file changed, 43 insertions(+), 1 deletion(-)
diff --git a/src/exchange/taler-exchange-httpd_purses_merge.c
b/src/exchange/taler-exchange-httpd_purses_merge.c
index 4fbdadb7..07bcff17 100644
--- a/src/exchange/taler-exchange-httpd_purses_merge.c
+++ b/src/exchange/taler-exchange-httpd_purses_merge.c
@@ -553,7 +553,49 @@ TEH_handler_purses_merge (
if (GNUNET_TIME_absolute_is_past (pcc.purse_expiration.abs_time))
{
- // FIXME-BUG: idempotency check, otherwise generate 410!
+ struct TALER_PurseMergeSignatureP merge_sig;
+ struct GNUNET_TIME_Timestamp merge_timestamp;
+ char *partner_url = NULL;
+ struct TALER_ReservePublicKeyP reserve_pub;
+
+ qs = TEH_plugin->select_purse_merge (TEH_plugin->cls,
+ pcc.purse_pub,
+ &merge_sig,
+ &merge_timestamp,
+ &partner_url,
+ &reserve_pub);
+ if (qs <= 0)
+ {
+ return TALER_MHD_reply_with_error (connection,
+ MHD_HTTP_GONE,
+
TALER_EC_EXCHANGE_GENERIC_PURSE_EXPIRED,
+ NULL);
+ }
+ if (0 !=
+ GNUNET_memcmp (&merge_sig,
+ &pcc.merge_sig))
+ {
+ MHD_RESULT mhd_res;
+
+ mhd_res = TALER_MHD_REPLY_JSON_PACK (
+ connection,
+ MHD_HTTP_CONFLICT,
+ GNUNET_JSON_pack_timestamp ("merge_timestamp",
+ merge_timestamp),
+ GNUNET_JSON_pack_data_auto ("merge_sig",
+ &merge_sig),
+ GNUNET_JSON_pack_allow_null (
+ GNUNET_JSON_pack_string ("partner_url",
+ partner_url)),
+ GNUNET_JSON_pack_data_auto ("reserve_pub",
+ &reserve_pub));
+ GNUNET_free (partner_url);
+ return mhd_res;
+ }
+ GNUNET_free (partner_url);
+ /* request was idempotent, return success! */
+ return reply_merge_success (connection,
+ &pcc);
}
/* execute transaction */
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [taler-exchange] branch master updated: handle idempotency/expiration check in purse_merge,
gnunet <=