quickjs-tart

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

commit 9f4d211688577e39e8dd432da4119ab1b3ea63b3
parent 9eae4130e59e3f4224122d995a02a8bd95d4529f
Author: Florian Dold <florian@dold.me>
Date:   Tue, 23 Jan 2024 11:43:45 +0100

enable cache sharing between curl requests

Diffstat:
Mquickjs/quickjs-libc.c | 8++++++++
1 file changed, 8 insertions(+), 0 deletions(-)

diff --git a/quickjs/quickjs-libc.c b/quickjs/quickjs-libc.c @@ -160,6 +160,7 @@ typedef struct JSThreadState { #ifndef NO_HTTP CURLM *curlm; + CURLSH *curlsh; struct list_head curl_requests; #endif } JSThreadState; @@ -2356,6 +2357,7 @@ static JSValue js_os_fetchHttp(JSContext *ctx, JSValueConst this_val, goto exception; } curl_easy_setopt(req_context->curl, CURLOPT_PRIVATE, req_context); + curl_easy_setopt(req_context->curl, CURLOPT_SHARE, ts->curlsh); curl_easy_setopt(req_context->curl, CURLOPT_URL, req_url); curl_easy_setopt(req_context->curl, CURLOPT_DNS_SERVERS, "8.8.8.8"); curl_easy_setopt(req_context->curl, CURLOPT_USERAGENT, "qtart"); @@ -4542,6 +4544,10 @@ oom_fail: #ifndef NO_HTTP ts->curlm = curl_multi_init(); + ts->curlsh = curl_share_init(); + curl_share_setopt(ts->curlsh, CURLSHOPT_SHARE, CURL_LOCK_DATA_DNS); + curl_share_setopt(ts->curlsh, CURLSHOPT_SHARE, CURL_LOCK_DATA_SSL_SESSION); + curl_share_setopt(ts->curlsh, CURLSHOPT_SHARE, CURL_LOCK_DATA_CONNECT); init_list_head(&ts->curl_requests); #endif @@ -4589,6 +4595,8 @@ void js_std_free_handlers(JSRuntime *rt) curl_multi_cleanup(ts->curlm); ts->curlm = NULL; + curl_share_cleanup(ts->curlsh); + ts->curlsh = NULL; #endif JS_FreeValueRT(rt, ts->on_host_message_func);