Skip to content

Commit 11d17eb

Browse files
committed
fix ziti_error parsing
`cause` object may contain other objects
1 parent d5a7ac5 commit 11d17eb

File tree

2 files changed

+11
-2
lines changed

2 files changed

+11
-2
lines changed

inc_internal/internal_model.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ XX(err, model_number, none, , __VA_ARGS__) \
6969
XX(http_code, model_number, none, , __VA_ARGS__) \
7070
XX(code, model_string, none, code, __VA_ARGS__) \
7171
XX(message, model_string, none, message, __VA_ARGS__) \
72-
XX(cause, model_string, map, cause, __VA_ARGS__)
72+
XX(cause, json, map, cause, __VA_ARGS__)
7373

7474
#define ZITI_ENROLLMENT_JWT_HEADER_MODEL(XX, ...) \
7575
XX(alg, jwt_sig_method, none, alg, __VA_ARGS__) \

library/ziti_ctrl.c

+10-1
Original file line numberDiff line numberDiff line change
@@ -432,7 +432,16 @@ static void ctrl_body_cb(tlsuv_http_req_t *req, char *b, ssize_t len) {
432432
string_buf_free(resp->content_proc);
433433
FREE(resp->content_proc);
434434
} else {
435-
ziti_error_ptr_from_json(&error, json_object_object_get(resp->content, "error"));
435+
json_object *err_json = json_object_object_get(resp->content, "error");
436+
if (err_json) {
437+
error = alloc_ziti_error();
438+
if (ziti_error_from_json(error, err_json) != 0) {
439+
ZITI_LOG(ERROR, "failed to parse ziti_error: %s", json_object_get_string(err_json));
440+
error->err = ZITI_WTF;
441+
error->code = strdup("UNEXPECTED_ERROR");
442+
error->message = strdup(json_object_get_string(err_json));
443+
}
444+
}
436445
resp_meta meta = {0};
437446
resp_meta_from_json(&meta, json_object_object_get(resp->content, "meta"));
438447
json_object *data = json_object_object_get(resp->content, "data");

0 commit comments

Comments
 (0)