merchant

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

commit 2e943032bf46e6cd8839d5292b141a38f7ae61e2
parent f042a1e3d7015625b61947cbae391f34d3a4f61a
Author: Christian Grothoff <christian@grothoff.org>
Date:   Thu, 13 Nov 2025 18:39:00 +0100

#10606: refuse instance creation with a default pay delay of forever

Diffstat:
Msrc/backend/taler-merchant-httpd_private-patch-instances-ID.c | 27+++++++++++++++++++++++++++
Msrc/backend/taler-merchant-httpd_private-post-instances.c | 28++++++++++++++++++++++++++++
2 files changed, 55 insertions(+), 0 deletions(-)

diff --git a/src/backend/taler-merchant-httpd_private-patch-instances-ID.c b/src/backend/taler-merchant-httpd_private-patch-instances-ID.c @@ -167,6 +167,33 @@ patch_instances_ID (struct TMH_MerchantInstance *mi, is.default_pay_delay = mi->settings.default_pay_delay; if (no_refund_delay) is.default_refund_delay = mi->settings.default_refund_delay; + if (GNUNET_TIME_relative_is_forever (is.default_pay_delay)) + { + GNUNET_break_op (0); + GNUNET_JSON_parse_free (spec); + return TALER_MHD_reply_with_error (connection, + MHD_HTTP_BAD_REQUEST, + TALER_EC_GENERIC_PARAMETER_MALFORMED, + "default_pay_delay"); + } + if (GNUNET_TIME_relative_is_forever (is.default_refund_delay)) + { + GNUNET_break_op (0); + GNUNET_JSON_parse_free (spec); + return TALER_MHD_reply_with_error (connection, + MHD_HTTP_BAD_REQUEST, + TALER_EC_GENERIC_PARAMETER_MALFORMED, + "default_refund_delay"); + } + if (GNUNET_TIME_relative_is_forever (is.default_wire_transfer_delay)) + { + GNUNET_break_op (0); + GNUNET_JSON_parse_free (spec); + return TALER_MHD_reply_with_error (connection, + MHD_HTTP_BAD_REQUEST, + TALER_EC_GENERIC_PARAMETER_MALFORMED, + "default_wire_transfer_delay"); + } if ( (NULL != is.phone) && (NULL != mi->settings.phone) && diff --git a/src/backend/taler-merchant-httpd_private-post-instances.c b/src/backend/taler-merchant-httpd_private-post-instances.c @@ -137,6 +137,34 @@ post_instances (const struct TMH_RequestHandler *rh, if (no_rounding_interval) is.default_wire_transfer_rounding_interval = TMH_default_wire_transfer_rounding_interval; + if (GNUNET_TIME_relative_is_forever (is.default_pay_delay)) + { + GNUNET_break_op (0); + GNUNET_JSON_parse_free (spec); + return TALER_MHD_reply_with_error (connection, + MHD_HTTP_BAD_REQUEST, + TALER_EC_GENERIC_PARAMETER_MALFORMED, + "default_pay_delay"); + } + if (GNUNET_TIME_relative_is_forever (is.default_refund_delay)) + { + GNUNET_break_op (0); + GNUNET_JSON_parse_free (spec); + return TALER_MHD_reply_with_error (connection, + MHD_HTTP_BAD_REQUEST, + TALER_EC_GENERIC_PARAMETER_MALFORMED, + "default_refund_delay"); + } + if (GNUNET_TIME_relative_is_forever (is.default_wire_transfer_delay)) + { + GNUNET_break_op (0); + GNUNET_JSON_parse_free (spec); + return TALER_MHD_reply_with_error (connection, + MHD_HTTP_BAD_REQUEST, + TALER_EC_GENERIC_PARAMETER_MALFORMED, + "default_wire_transfer_delay"); + } + { enum GNUNET_GenericReturnValue ret;