From ba2d435ec00465d7235cbe26b958e22be70a87c5 Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Wed, 21 Jul 2021 15:48:11 +0200 Subject: improve error handling in lookup_products --- src/backend/taler-merchant-httpd_private-get-products.c | 2 +- src/backenddb/plugin_merchantdb_postgres.c | 15 +++++++++------ 2 files changed, 10 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/backend/taler-merchant-httpd_private-get-products.c b/src/backend/taler-merchant-httpd_private-get-products.c index 9d8b40f8..fb9b2192 100644 --- 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 index 54a7241b..6d272d05 100644 --- 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; } -- cgit v1.2.3