fix logic to ensure that we do not call the callback after the iteration was aborted (caused big trouble in wirewatcher)

This commit is contained in:
Christian Grothoff 2020-03-20 12:34:26 +01:00
parent 10c56bcea0
commit 2021f75995
No known key found for this signature in database
GPG Key ID: 939E6BE1E29FC3CC
2 changed files with 38 additions and 24 deletions

View File

@ -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);
}

View File

@ -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);
}