summaryrefslogtreecommitdiff
path: root/src/lib/auditor_api_exchanges.c
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2023-06-21 07:53:17 +0200
committerChristian Grothoff <christian@grothoff.org>2023-06-21 07:53:17 +0200
commit17789253e9194c66bb9ddb081425a35212ac7bf3 (patch)
treed8acb45cf9a87aecb421707017e7b5be47df1c1a /src/lib/auditor_api_exchanges.c
parentd6838ed841185c7850c3f52d91d1baa9a1f90a7e (diff)
downloadexchange-17789253e9194c66bb9ddb081425a35212ac7bf3.tar.gz
exchange-17789253e9194c66bb9ddb081425a35212ac7bf3.tar.bz2
exchange-17789253e9194c66bb9ddb081425a35212ac7bf3.zip
ensure forward-compatibility for auditor C API
Diffstat (limited to 'src/lib/auditor_api_exchanges.c')
-rw-r--r--src/lib/auditor_api_exchanges.c50
1 files changed, 24 insertions, 26 deletions
diff --git a/src/lib/auditor_api_exchanges.c b/src/lib/auditor_api_exchanges.c
index 7327f11b2..9f35c7077 100644
--- a/src/lib/auditor_api_exchanges.c
+++ b/src/lib/auditor_api_exchanges.c
@@ -89,16 +89,16 @@ handle_exchanges_finished (void *cls,
const json_t *ja;
unsigned int ja_len;
struct TALER_AUDITOR_ListExchangesHandle *leh = cls;
- struct TALER_AUDITOR_HttpResponse hr = {
- .reply = json,
- .http_status = (unsigned int) response_code
+ struct TALER_AUDITOR_ListExchangesResponse ler = {
+ .hr.reply = json,
+ .hr.http_status = (unsigned int) response_code
};
leh->job = NULL;
switch (response_code)
{
case 0:
- hr.ec = TALER_EC_GENERIC_INVALID_RESPONSE;
+ ler.hr.ec = TALER_EC_GENERIC_INVALID_RESPONSE;
break;
case MHD_HTTP_OK:
ja = json_object_get (json,
@@ -107,8 +107,8 @@ handle_exchanges_finished (void *cls,
(! json_is_array (ja)) )
{
GNUNET_break (0);
- hr.ec = TALER_EC_GENERIC_REPLY_MALFORMED;
- hr.http_status = 0;
+ ler.hr.ec = TALER_EC_GENERIC_REPLY_MALFORMED;
+ ler.hr.http_status = 0;
break;
}
@@ -116,12 +116,12 @@ handle_exchanges_finished (void *cls,
if (ja_len > MAX_EXCHANGES)
{
GNUNET_break (0);
- hr.ec = TALER_EC_GENERIC_REPLY_MALFORMED;
- hr.http_status = 0;
+ ler.hr.ec = TALER_EC_GENERIC_REPLY_MALFORMED;
+ ler.hr.http_status = 0;
break;
}
{
- struct TALER_AUDITOR_ExchangeInfo ei[ja_len];
+ struct TALER_AUDITOR_ExchangeInfo ei[GNUNET_NZL (ja_len)];
bool ok;
ok = true;
@@ -141,54 +141,52 @@ handle_exchanges_finished (void *cls,
{
GNUNET_break_op (0);
ok = false;
- hr.ec = TALER_EC_GENERIC_REPLY_MALFORMED;
- hr.http_status = 0;
+ ler.hr.ec = TALER_EC_GENERIC_REPLY_MALFORMED;
+ ler.hr.http_status = 0;
break;
}
}
if (! ok)
break;
+ ler.details.ok.ei = ei;
+ ler.details.ok.num_exchanges = ja_len;
leh->cb (leh->cb_cls,
- &hr,
- ja_len,
- ei);
+ &ler);
TALER_AUDITOR_list_exchanges_cancel (leh);
return;
}
case MHD_HTTP_BAD_REQUEST:
/* This should never happen, either us or the auditor is buggy
(or API version conflict); just pass JSON reply to the application */
- hr.ec = TALER_JSON_get_error_code (json);
- hr.hint = TALER_JSON_get_error_hint (json);
+ ler.hr.ec = TALER_JSON_get_error_code (json);
+ ler.hr.hint = TALER_JSON_get_error_hint (json);
break;
case MHD_HTTP_NOT_FOUND:
/* Nothing really to verify, this should never
happen, we should pass the JSON reply to the application */
- hr.ec = TALER_JSON_get_error_code (json);
- hr.hint = TALER_JSON_get_error_hint (json);
+ ler.hr.ec = TALER_JSON_get_error_code (json);
+ ler.hr.hint = TALER_JSON_get_error_hint (json);
break;
case MHD_HTTP_INTERNAL_SERVER_ERROR:
/* Server had an internal issue; we should retry, but this API
leaves this to the application */
- hr.ec = TALER_JSON_get_error_code (json);
- hr.hint = TALER_JSON_get_error_hint (json);
+ ler.hr.ec = TALER_JSON_get_error_code (json);
+ ler.hr.hint = TALER_JSON_get_error_hint (json);
break;
default:
/* unexpected response code */
- hr.ec = TALER_JSON_get_error_code (json);
- hr.hint = TALER_JSON_get_error_hint (json);
+ ler.hr.ec = TALER_JSON_get_error_code (json);
+ ler.hr.hint = TALER_JSON_get_error_hint (json);
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
"Unexpected response code %u/%d for auditor list-exchanges request\n",
(unsigned int) response_code,
- (int) hr.ec);
+ (int) ler.hr.ec);
GNUNET_break_op (0);
break;
}
if (NULL != leh->cb)
leh->cb (leh->cb_cls,
- &hr,
- 0,
- NULL);
+ &ler);
TALER_AUDITOR_list_exchanges_cancel (leh);
}