summaryrefslogtreecommitdiff
path: root/src/backend
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2021-12-01 20:03:25 +0100
committerChristian Grothoff <christian@grothoff.org>2021-12-01 20:03:25 +0100
commit37ca87961624a84337c3980b725cc4ebb63745eb (patch)
tree9f8351b5f97ccbcfd8c67546c4cecfb2d352bd32 /src/backend
parent344965a647c2372466dc677a2e02e052bdba8f8a (diff)
downloadmerchant-37ca87961624a84337c3980b725cc4ebb63745eb.tar.gz
merchant-37ca87961624a84337c3980b725cc4ebb63745eb.tar.bz2
merchant-37ca87961624a84337c3980b725cc4ebb63745eb.zip
fix #7025 (presumably)
Diffstat (limited to 'src/backend')
-rw-r--r--src/backend/taler-merchant-httpd_private-get-orders.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/src/backend/taler-merchant-httpd_private-get-orders.c b/src/backend/taler-merchant-httpd_private-get-orders.c
index 85660812..9546ae06 100644
--- a/src/backend/taler-merchant-httpd_private-get-orders.c
+++ b/src/backend/taler-merchant-httpd_private-get-orders.c
@@ -273,7 +273,7 @@ add_order (void *cls,
struct GNUNET_TIME_Absolute creation_time)
{
struct TMH_PendingOrder *po = cls;
- json_t *contract_terms;
+ json_t *contract_terms = NULL;
struct TALER_PrivateContractHash h_contract_terms;
enum GNUNET_DB_QueryStatus qs;
const char *summary;
@@ -282,6 +282,10 @@ add_order (void *cls,
bool paid;
struct TALER_Amount order_amount;
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+ "Adding order `%s' (%llu) to result set\n",
+ orig_order_id,
+ (unsigned long long) order_serial);
qs = TMH_db->lookup_order_status_by_serial (TMH_db->cls,
po->instance_id,
order_serial,
@@ -319,6 +323,7 @@ add_order (void *cls,
&contract_terms,
&os,
NULL);
+ GNUNET_break (os == order_serial);
}
if (GNUNET_DB_STATUS_SUCCESS_NO_RESULTS == qs)
{
@@ -332,9 +337,18 @@ add_order (void *cls,
&unused,
&contract_terms);
}
+ if (GNUNET_DB_STATUS_SUCCESS_NO_RESULTS == qs)
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
+ "Order %llu disappeared during iteration. Skipping.\n",
+ (unsigned long long) order_serial);
+ json_decref (contract_terms); /* should still be NULL */
+ GNUNET_free (order_id);
+ return;
+ }
if (GNUNET_DB_STATUS_SUCCESS_ONE_RESULT != qs)
{
- GNUNET_break (0); /* Failed: #7025 */
+ GNUNET_break (0);
po->result = TALER_EC_GENERIC_DB_FETCH_FAILED;
json_decref (contract_terms);
GNUNET_free (order_id);