Skip to content

Commit a98f2b6

Browse files
committed
cleanup memery in case of failures
1 parent 5e9db55 commit a98f2b6

File tree

2 files changed

+19
-9
lines changed

2 files changed

+19
-9
lines changed

library/ziti_ctrl.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -612,7 +612,6 @@ int ziti_ctrl_init(uv_loop_t *loop, ziti_controller *ctrl, model_list *urls, tls
612612
ctrl->page_size = DEFAULT_PAGE_SIZE;
613613
ctrl->loop = loop;
614614
memset(&ctrl->version, 0, sizeof(ctrl->version));
615-
ctrl->client = calloc(1, sizeof(tlsuv_http_t));
616615

617616
const char *ep;
618617
MODEL_LIST_FOREACH(ep, *urls) {
@@ -624,7 +623,13 @@ int ziti_ctrl_init(uv_loop_t *loop, ziti_controller *ctrl, model_list *urls, tls
624623
const char *initial_ep = ctrl_next_ep(ctrl, NULL);
625624
ctrl->url = strdup(initial_ep);
626625
CTRL_LOG(INFO, "using %s", ctrl->url);
626+
627+
ctrl->client = calloc(1, sizeof(tlsuv_http_t));
627628
if (tlsuv_http_init(loop, ctrl->client, ctrl->url) != 0) {
629+
if (tlsuv_http_close(ctrl->client, (tlsuv_http_close_cb) free) != 0) {
630+
free(ctrl->client);
631+
}
632+
ctrl->client = NULL;
628633
return ZITI_INVALID_CONFIG;
629634
}
630635

library/ziti_enroll.c

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ int ziti_enroll(const ziti_enroll_opts *opts, uv_loop_t *loop,
155155
static void network_jwt_cb(ziti_network_jwt_array arr, const ziti_error *err, void *ctx) {
156156
struct ziti_enroll_req *er = ctx;
157157
if (err) {
158-
er->enroll_cb(NULL, ZITI_ENROLLMENT_METHOD_UNSUPPORTED, ziti_errorstr(ZITI_ENROLLMENT_METHOD_UNSUPPORTED), er->ctx);
158+
er->enroll_cb(NULL, err->err, err->message, er->ctx);
159159
free_enroll_req(er);
160160
return;
161161
}
@@ -181,18 +181,21 @@ int fetch_network_token(struct ziti_enroll_req *er) {
181181

182182
er->tls = default_tls_context(NULL, 0);
183183

184+
model_list ctrls = {};
185+
184186
if (url.query != NULL) {
185187
// TODO magic URL
186188
} else {
187189
// controller URL must be verifiable with default/OS cert bundle
188-
model_list ctrls = {};
189190
model_list_append(&ctrls, er->opts.url);
190-
ziti_ctrl_init(er->loop, &er->controller, &ctrls, er->tls);
191-
ziti_ctrl_get_network_jwt(&er->controller, network_jwt_cb, er);
192-
model_list_clear(&ctrls, NULL);
193-
191+
rc = ziti_ctrl_init(er->loop, &er->controller, &ctrls, er->tls);
192+
if (rc == ZITI_OK) {
193+
ziti_ctrl_get_network_jwt(&er->controller, network_jwt_cb, er);
194+
}
194195
}
195-
return ZITI_OK;
196+
197+
model_list_clear(&ctrls, NULL);
198+
return rc;
196199
}
197200

198201
static int start_enrollment(struct ziti_enroll_req *er) {
@@ -260,7 +263,9 @@ static int start_enrollment(struct ziti_enroll_req *er) {
260263

261264
static void free_enroll_req(struct ziti_enroll_req * er) {
262265
if (er) {
263-
ziti_ctrl_close(&er->controller);
266+
if (er->controller.loop) {
267+
ziti_ctrl_close(&er->controller);
268+
}
264269
if (er->tls) er->tls->free_ctx(er->tls);
265270
if (er->pk != NULL) { er->pk->free(er->pk); }
266271
if (er->cert != NULL) { er->cert->free(er->cert); }

0 commit comments

Comments
 (0)