commit 56f1fbaa740f2591b9d40a4a69db82996d5270bb
parent c11d977c59648b1596ff72cc478db71723775650
Author: Christian Grothoff <christian@grothoff.org>
Date: Mon, 23 Mar 2026 02:44:01 +0100
default for token generation is 'true'
Diffstat:
4 files changed, 38 insertions(+), 24 deletions(-)
diff --git a/src/include/taler/taler-merchant/delete-private-orders-ORDER_ID.h b/src/include/taler/taler-merchant/delete-private-orders-ORDER_ID.h
@@ -78,13 +78,31 @@ struct TALER_MERCHANT_DeletePrivateOrderOptionValue
/**
+ * Ends list of options.
+ */
+#define TALER_MERCHANT_delete_private_order_set_option_end() \
+ (struct TALER_MERCHANT_DeletePrivateOrderOptionValue) \
+ { .option = TALER_MERCHANT_DELETE_PRIVATE_ORDER_OPTION_END }
+
+/**
+ * Force deletion even if the order has been claimed.
+ */
+#define TALER_MERCHANT_delete_private_order_set_option_force() \
+ (struct TALER_MERCHANT_DeletePrivateOrderOptionValue) \
+ { .option = TALER_MERCHANT_DELETE_PRIVATE_ORDER_OPTION_FORCE }
+
+
+/**
* Set options for DELETE /private/orders/$ORDER_ID operation.
*
* @param[in,out] handle the handle to set options for
* @param num_options length of the @a options array
* @param options array of option values (terminated with _END)
+ * @return #GNUNET_OK on success,
+ * #GNUNET_NO on failure,
+ * #GNUNET_SYSERR on internal error
*/
-void
+enum GNUNET_GenericReturnValue
TALER_MERCHANT_delete_private_order_set_options_ (
struct TALER_MERCHANT_DeletePrivateOrderHandle *handle,
unsigned int num_options,
@@ -103,19 +121,18 @@ TALER_MERCHANT_delete_private_order_set_options_ (
*
* @param handle the handle to set options for
* @param ... option values (automatically terminated with _END)
+ * @return #GNUNET_OK on success,
+ * #GNUNET_NO on failure,
+ * #GNUNET_SYSERR on internal error
*/
#define TALER_MERCHANT_delete_private_order_set_options(handle, ...) \
- do { \
- struct TALER_MERCHANT_DeletePrivateOrderOptionValue __opts[] = { \
- __VA_ARGS__, \
- { .option = TALER_MERCHANT_DELETE_PRIVATE_ORDER_OPTION_END } \
- }; \
- TALER_MERCHANT_delete_private_order_set_options_ ( \
- handle, \
- sizeof (__opts) / sizeof (__opts[0]) - 1, \
- __opts); \
- } while (0)
-
+ TALER_MERCHANT_delete_private_order_set_options_ ( \
+ handle, \
+ TALER_MERCHANT_DELETE_PRIVATE_ORDER_OPTIONS_ARRAY_MAX_SIZE, \
+ ((const struct TALER_MERCHANT_DeletePrivateOrderOptionValue[]) \
+ {__VA_ARGS__, \
+ TALER_MERCHANT_delete_private_order_set_option_end () } \
+ ))
/**
* Response details for a DELETE /private/orders/$ORDER_ID request.
diff --git a/src/include/taler/taler-merchant/post-private-orders.h b/src/include/taler/taler-merchant/post-private-orders.h
@@ -316,7 +316,7 @@ struct TALER_MERCHANT_PostPrivateOrdersResponse
/**
* Set whether to create a claim token.
*
- * @param c true to create token
+ * @param c true to create token, false to disable
* @return representation of the option
*/
#define TALER_MERCHANT_post_private_orders_option_create_token(c) \
diff --git a/src/lib/merchant_api_delete-private-orders-ORDER_ID.c b/src/lib/merchant_api_delete-private-orders-ORDER_ID.c
@@ -149,7 +149,7 @@ TALER_MERCHANT_delete_private_order_create (
}
-void
+enum GNUNET_GenericReturnValue
TALER_MERCHANT_delete_private_order_set_options_ (
struct TALER_MERCHANT_DeletePrivateOrderHandle *handle,
unsigned int num_options,
@@ -160,12 +160,15 @@ TALER_MERCHANT_delete_private_order_set_options_ (
switch (options[i].option)
{
case TALER_MERCHANT_DELETE_PRIVATE_ORDER_OPTION_END:
- return;
+ return GNUNET_OK;
case TALER_MERCHANT_DELETE_PRIVATE_ORDER_OPTION_FORCE:
handle->force = true;
- break;
+ continue;
}
+ GNUNET_break (0);
+ return GNUNET_SYSERR;
}
+ return GNUNET_OK;
}
diff --git a/src/lib/merchant_api_post-private-orders.c b/src/lib/merchant_api_post-private-orders.c
@@ -103,11 +103,6 @@ struct TALER_MERCHANT_PostPrivateOrdersHandle
bool create_token;
/**
- * Whether create_token was explicitly set.
- */
- bool create_token_set;
-
- /**
* Optional OTP device ID.
*/
const char *otp_id;
@@ -302,6 +297,7 @@ TALER_MERCHANT_post_private_orders_create (
ppoh->ctx = ctx;
ppoh->base_url = GNUNET_strdup (url);
ppoh->order = json_incref ((json_t *) order);
+ ppoh->create_token = true;
return ppoh;
}
@@ -330,7 +326,6 @@ TALER_MERCHANT_post_private_orders_set_options_ (
break;
case TALER_MERCHANT_POST_PRIVATE_ORDERS_OPTION_CREATE_TOKEN:
ppoh->create_token = options[i].details.create_token;
- ppoh->create_token_set = true;
break;
case TALER_MERCHANT_POST_PRIVATE_ORDERS_OPTION_OTP_ID:
ppoh->otp_id = options[i].details.otp_id;
@@ -457,8 +452,7 @@ TALER_MERCHANT_post_private_orders_start (
"lock_uuids",
ua));
}
- if (ppoh->create_token_set &&
- ! ppoh->create_token)
+ if (! ppoh->create_token)
{
GNUNET_assert (0 ==
json_object_set_new (req,