commit ba2d435ec00465d7235cbe26b958e22be70a87c5
parent 4c184f7e685817b565013c3afb2a5c30ecf10161
Author: Florian Dold <florian@dold.me>
Date: Wed, 21 Jul 2021 15:48:11 +0200
improve error handling in lookup_products
Diffstat:
2 files changed, 10 insertions(+), 7 deletions(-)
diff --git a/src/backend/taler-merchant-httpd_private-get-products.c b/src/backend/taler-merchant-httpd_private-get-products.c
@@ -45,7 +45,7 @@ add_product (void *cls,
/**
- * Handle a GET "/products" request.
+ * Handle a GET "/private/products" request.
*
* @param rh context of the handler
* @param connection the MHD connection to handle
diff --git a/src/backenddb/plugin_merchantdb_postgres.c b/src/backenddb/plugin_merchantdb_postgres.c
@@ -895,9 +895,9 @@ struct LookupProductsContext
void *cb_cls;
/**
- * Internal result.
+ * Did database result extraction fail?
*/
- enum GNUNET_DB_QueryStatus qs;
+ bool extract_failed;
};
@@ -931,7 +931,7 @@ lookup_products_cb (void *cls,
i))
{
GNUNET_break (0);
- plc->qs = GNUNET_DB_STATUS_HARD_ERROR;
+ plc->extract_failed = true;
return;
}
plc->cb (plc->cb_cls,
@@ -959,7 +959,9 @@ postgres_lookup_products (void *cls,
struct PostgresClosure *pg = cls;
struct LookupProductsContext plc = {
.cb = cb,
- .cb_cls = cb_cls
+ .cb_cls = cb_cls,
+ /* Can be overwritten by the lookup_products_cb */
+ .extract_failed = false,
};
struct GNUNET_PQ_QueryParam params[] = {
GNUNET_PQ_query_param_string (instance_id),
@@ -972,8 +974,9 @@ postgres_lookup_products (void *cls,
params,
&lookup_products_cb,
&plc);
- if (0 != plc.qs)
- return plc.qs;
+ /* If there was an error inside lookup_products_cb, return a hard error. */
+ if (plc.extract_failed)
+ return GNUNET_DB_STATUS_HARD_ERROR;
return qs;
}