diff options
author | Christian Grothoff <christian@grothoff.org> | 2020-03-20 12:34:26 +0100 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2020-03-20 12:34:26 +0100 |
commit | 2021f75995732d760323eca1d1844bc29f0ac976 (patch) | |
tree | 6f10dd0d7a53950370aba8c5d650e3cbcb9df0ae | |
parent | 10c56bcea05df9ac5a7036850039900fbe435e00 (diff) |
fix logic to ensure that we do not call the callback after the iteration was aborted (caused big trouble in wirewatcher)
-rw-r--r-- | src/bank-lib/bank_api_credit.c | 31 | ||||
-rw-r--r-- | src/bank-lib/bank_api_debit.c | 31 |
2 files changed, 38 insertions, 24 deletions
diff --git a/src/bank-lib/bank_api_credit.c b/src/bank-lib/bank_api_credit.c index 551831d24..4b6f40bbf 100644 --- a/src/bank-lib/bank_api_credit.c +++ b/src/bank-lib/bank_api_credit.c @@ -113,12 +113,18 @@ parse_account_history (struct TALER_BANK_CreditHistoryHandle *hh, GNUNET_break_op (0); return GNUNET_SYSERR; } - hh->hcb (hh->hcb_cls, - MHD_HTTP_OK, - TALER_EC_NONE, - row_id, - &td, - transaction); + if (GNUNET_OK != + hh->hcb (hh->hcb_cls, + MHD_HTTP_OK, + TALER_EC_NONE, + row_id, + &td, + transaction)) + { + hh->hcb = NULL; + GNUNET_JSON_parse_free (hist_spec); + return GNUNET_OK; + } GNUNET_JSON_parse_free (hist_spec); } return GNUNET_OK; @@ -195,12 +201,13 @@ handle_credit_history_finished (void *cls, response_code = 0; break; } - hh->hcb (hh->hcb_cls, - response_code, - ec, - 0LLU, - NULL, - j); + if (NULL != hh->hcb) + hh->hcb (hh->hcb_cls, + response_code, + ec, + 0LLU, + NULL, + j); TALER_BANK_credit_history_cancel (hh); } diff --git a/src/bank-lib/bank_api_debit.c b/src/bank-lib/bank_api_debit.c index 1418492e2..33ff20ef8 100644 --- a/src/bank-lib/bank_api_debit.c +++ b/src/bank-lib/bank_api_debit.c @@ -115,12 +115,18 @@ parse_account_history (struct TALER_BANK_DebitHistoryHandle *hh, GNUNET_break_op (0); return GNUNET_SYSERR; } - hh->hcb (hh->hcb_cls, - MHD_HTTP_OK, - TALER_EC_NONE, - row_id, - &td, - transaction); + if (GNUNET_OK != + hh->hcb (hh->hcb_cls, + MHD_HTTP_OK, + TALER_EC_NONE, + row_id, + &td, + transaction)) + { + hh->hcb = NULL; + GNUNET_JSON_parse_free (hist_spec); + return GNUNET_OK; + } GNUNET_JSON_parse_free (hist_spec); } return GNUNET_OK; @@ -199,12 +205,13 @@ handle_debit_history_finished (void *cls, response_code = 0; break; } - hh->hcb (hh->hcb_cls, - response_code, - ec, - 0LLU, - NULL, - j); + if (NULL != hh->hcb) + hh->hcb (hh->hcb_cls, + response_code, + ec, + 0LLU, + NULL, + j); TALER_BANK_debit_history_cancel (hh); } |