quickjs-tart

quickjs-based runtime for wallet-core logic
Log | Files | Refs | README | LICENSE

commit 2e7ee9c78e55882ea7133586ae9b2d3211bdf90a
parent f80e75edbecb86ddca12ffb61f48dde6cd13fa0a
Author: Florian Dold <dold@taler.net>
Date:   Sun,  9 Aug 2026 21:22:41 +0200

http: centralize curl client teardown

Diffstat:
Mquickjs/quickjs-http.c | 15+++++++++------
1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/quickjs/quickjs-http.c b/quickjs/quickjs-http.c @@ -512,12 +512,6 @@ curl_multi_thread_run(void *cls) pthread_mutex_lock(&ccs->mutex); ccs->stopped = TRUE; pthread_mutex_unlock(&ccs->mutex); - if (CURLM_OK != curl_multi_cleanup(ccs->curlm)) { - fprintf(stderr, "warning: curl_multi_cleanup failed\n"); - } - if (CURLSHE_OK != curl_share_cleanup(ccs->curlsh)) { - fprintf(stderr, "warning: curl_share_cleanup failed\n"); - } return NULL; } @@ -613,9 +607,18 @@ destroy_client_state(struct CurlClientState *ccs) pthread_mutex_lock(&ccs->mutex); list_for_each_safe(el, el1, &ccs->request_list) { struct CurlRequestState *crs = list_entry(el, struct CurlRequestState, link_req); + if (crs->added) { + curl_multi_remove_handle(ccs->curlm, crs->curl); + } destroy_curl_request_state(crs); } pthread_mutex_unlock(&ccs->mutex); + if (CURLM_OK != curl_multi_cleanup(ccs->curlm)) { + fprintf(stderr, "warning: curl_multi_cleanup failed\n"); + } + if (CURLSHE_OK != curl_share_cleanup(ccs->curlsh)) { + fprintf(stderr, "warning: curl_share_cleanup failed\n"); + } pthread_cond_destroy(&ccs->callback_done); pthread_mutex_destroy(&ccs->mutex); free(ccs);