@@ -155,7 +155,7 @@ int ziti_enroll(const ziti_enroll_opts *opts, uv_loop_t *loop,
155155static 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
198201static int start_enrollment (struct ziti_enroll_req * er ) {
@@ -260,7 +263,9 @@ static int start_enrollment(struct ziti_enroll_req *er) {
260263
261264static 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