summaryrefslogtreecommitdiff
path: root/src/lib/auditor_api_exchanges.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/auditor_api_exchanges.c')
-rw-r--r--src/lib/auditor_api_exchanges.c47
1 files changed, 25 insertions, 22 deletions
diff --git a/src/lib/auditor_api_exchanges.c b/src/lib/auditor_api_exchanges.c
index 4e23267fd..83cbc4bb4 100644
--- a/src/lib/auditor_api_exchanges.c
+++ b/src/lib/auditor_api_exchanges.c
@@ -89,13 +89,16 @@ handle_exchanges_finished (void *cls,
const json_t *ja;
unsigned int ja_len;
struct TALER_AUDITOR_ListExchangesHandle *leh = cls;
- enum TALER_ErrorCode ec;
+ struct TALER_AUDITOR_HttpResponse hr = {
+ .reply = json,
+ .http_status = (unsigned int) response_code
+ };
leh->job = NULL;
switch (response_code)
{
case 0:
- ec = TALER_EC_INVALID_RESPONSE;
+ hr.ec = TALER_EC_INVALID_RESPONSE;
break;
case MHD_HTTP_OK:
ja = json_object_get (json,
@@ -104,8 +107,8 @@ handle_exchanges_finished (void *cls,
(! json_is_array (ja)) )
{
GNUNET_break (0);
- ec = TALER_EC_AUDITOR_EXCHANGES_REPLY_MALFORMED;
- response_code = 0;
+ hr.ec = TALER_EC_AUDITOR_EXCHANGES_REPLY_MALFORMED;
+ hr.http_status = 0;
break;
}
@@ -113,8 +116,8 @@ handle_exchanges_finished (void *cls,
if (ja_len > MAX_EXCHANGES)
{
GNUNET_break (0);
- ec = TALER_EC_AUDITOR_EXCHANGES_REPLY_MALFORMED;
- response_code = 0;
+ hr.ec = TALER_EC_AUDITOR_EXCHANGES_REPLY_MALFORMED;
+ hr.http_status = 0;
break;
}
{
@@ -138,54 +141,54 @@ handle_exchanges_finished (void *cls,
{
GNUNET_break_op (0);
ok = GNUNET_NO;
- ec = TALER_EC_AUDITOR_EXCHANGES_REPLY_MALFORMED;
+ hr.ec = TALER_EC_AUDITOR_EXCHANGES_REPLY_MALFORMED;
+ hr.http_status = 0;
break;
}
}
if (GNUNET_YES != ok)
break;
leh->cb (leh->cb_cls,
- response_code,
- TALER_EC_NONE,
+ &hr,
ja_len,
- ei,
- json);
+ ei);
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 */
- ec = TALER_JSON_get_error_code (json);
+ hr.ec = TALER_JSON_get_error_code (json);
+ 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 */
- ec = TALER_JSON_get_error_code (json);
+ hr.ec = TALER_JSON_get_error_code (json);
+ 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 */
- ec = TALER_JSON_get_error_code (json);
+ hr.ec = TALER_JSON_get_error_code (json);
+ hr.hint = TALER_JSON_get_error_hint (json);
break;
default:
/* unexpected response code */
- ec = TALER_JSON_get_error_code (json);
+ hr.ec = TALER_JSON_get_error_code (json);
+ hr.hint = TALER_JSON_get_error_hint (json);
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
"Unexpected response code %u/%d\n",
(unsigned int) response_code,
- (int) ec);
- GNUNET_break (0);
- response_code = 0;
+ (int) hr.ec);
+ GNUNET_break_op (0);
break;
}
if (NULL != leh->cb)
leh->cb (leh->cb_cls,
- response_code,
- TALER_JSON_get_error_code (json),
+ &hr,
0,
- NULL,
- json);
+ NULL);
TALER_AUDITOR_list_exchanges_cancel (leh);
}