commit 5ae4ad7f3acc035d10e6050dd58b26f8754e32f2
parent f7b6b6bbafd589774e7f439c12e92415db0cae50
Author: Iván Ávalos <avalos@disroot.org>
Date: Fri, 24 May 2024 20:47:22 -0600
inject request ID into os.fetchHttp cancelFn
Diffstat:
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/quickjs/quickjs-libc.c b/quickjs/quickjs-libc.c
@@ -2287,14 +2287,16 @@ static void handle_http_resp(void *cls, struct JSHttpResponseInfo *resp_info)
return;
}
-static JSValue cancel_http_req(JSContext *ctx, JSValueConst this_val, int argc, JSValueConst *argv)
+static JSValue cancel_http_req(JSContext *ctx, JSValueConst this_val,
+ int argc, JSValueConst *argv, int magic,
+ JSValue *func_data)
{
JSRuntime *rt = JS_GetRuntime(ctx);
JSThreadState *ts = JS_GetRuntimeOpaque(rt);
int req_id;
int ret;
- JS_ToInt32(ctx, &req_id, argv[0]);
+ JS_ToInt32(ctx, &req_id, func_data[0]);
// cancel HTTP request
ret = ts->http_client_impl->req_cancel(ts->http_client_impl->cls, req_id);
@@ -2362,7 +2364,6 @@ exception:
/**
* fetchHttp(url, { method, headers, body }): {
- * requestId: number,
* response: Promise<Response>,
* cancelFn: () => void,
* }
@@ -2503,7 +2504,8 @@ static JSValue js_os_fetchHttp(JSContext *ctx, JSValueConst this_val,
req_context->reject_func = resolving_funs[1];
// cancelFn: () => void
- JSValue cancelFn = JS_NewCFunction(ctx, &cancel_http_req, "cancelFn", 1);
+ JSValue cancelCls = JS_NewInt32(ctx, ret);
+ JSValue cancelFn = JS_NewCFunctionData(ctx, &cancel_http_req, 0, 0, 1, &cancelCls);
ret_val = JS_NewObject(ctx);
JS_SetPropertyStr(ctx, ret_val, "requestId", requestId);