From bb5bbc6548a3584baffb799163be5d2056cd03af Mon Sep 17 00:00:00 2001 From: hongzhidao Date: Mon, 17 Mar 2025 14:40:49 +0800 Subject: [PATCH] QuickJS: making ngx_qjs_*() functions consistent with ngx_js_*(). --- nginx/ngx_http_js_module.c | 71 +++++++++++++----------------- nginx/ngx_js.c | 84 +++++++++++++++++++----------------- nginx/ngx_js.h | 8 ++-- nginx/ngx_js_shared_dict.c | 30 +++---------- nginx/ngx_stream_js_module.c | 16 +++---- 5 files changed, 91 insertions(+), 118 deletions(-) diff --git a/nginx/ngx_http_js_module.c b/nginx/ngx_http_js_module.c index 71fd92bae..ae970eb1b 100644 --- a/nginx/ngx_http_js_module.c +++ b/nginx/ngx_http_js_module.c @@ -5133,7 +5133,7 @@ ngx_http_qjs_ext_internal_redirect(JSContext *cx, JSValueConst this_val, "internalRedirect cannot be called while filtering"); } - if (ngx_qjs_string(ctx->engine, argv[0], &ctx->redirect_uri) != NGX_OK) { + if (ngx_qjs_string(cx, argv[0], &ctx->redirect_uri) != NGX_OK) { return JS_EXCEPTION; } @@ -5412,7 +5412,7 @@ ngx_http_qjs_ext_return(JSContext *cx, JSValueConst this_val, ctx = ngx_http_get_module_ctx(r, ngx_http_js_module); if (status < NGX_HTTP_BAD_REQUEST || !JS_IsNullOrUndefined(argv[1])) { - if (ngx_qjs_string(ctx->engine, argv[1], &body) != NGX_OK) { + if (ngx_qjs_string(cx, argv[1], &body) != NGX_OK) { return JS_ThrowOutOfMemory(cx); } @@ -5515,7 +5515,7 @@ ngx_http_qjs_ext_send(JSContext *cx, JSValueConst this_val, ll = &out; for (n = 0; n < (ngx_uint_t) argc; n++) { - if (ngx_qjs_string(ctx->engine, argv[n], &s) != NGX_OK) { + if (ngx_qjs_string(cx, argv[n], &s) != NGX_OK) { return JS_ThrowTypeError(cx, "failed to convert arg"); } @@ -5578,7 +5578,7 @@ ngx_http_qjs_ext_send_buffer(JSContext *cx, JSValueConst this_val, return JS_ThrowTypeError(cx, "cannot send buffer while not filtering"); } - if (ngx_qjs_string(ctx->engine, argv[0], &buffer) != NGX_OK) { + if (ngx_qjs_string(cx, argv[0], &buffer) != NGX_OK) { return JS_ThrowTypeError(cx, "failed get buffer arg"); } @@ -5735,7 +5735,7 @@ ngx_http_qjs_subrequest_done(ngx_http_request_t *r, void *data, ngx_int_t rc) reply = JS_DupValue(cx, ngx_qjs_arg(sctx->args[0])); } - rc = ngx_qjs_call((ngx_js_ctx_t *) ctx, event->function, &reply, 1); + rc = ngx_qjs_call(cx, event->function, &reply, 1); JS_FreeValue(cx, reply); ngx_js_del_event(ctx, event); @@ -5786,7 +5786,7 @@ ngx_http_qjs_ext_subrequest(JSContext *cx, JSValueConst this_val, "the primary request"); } - if (ngx_qjs_string(ctx->engine, argv[0], &uri) != NGX_OK) { + if (ngx_qjs_string(cx, argv[0], &uri) != NGX_OK) { return JS_ThrowTypeError(cx, "failed to convert uri arg"); } @@ -5812,7 +5812,7 @@ ngx_http_qjs_ext_subrequest(JSContext *cx, JSValueConst this_val, arg = argv[1]; if (JS_IsString(arg)) { - if (ngx_qjs_string(ctx->engine, arg, &args) != NGX_OK) { + if (ngx_qjs_string(cx, arg, &args) != NGX_OK) { return JS_ThrowTypeError(cx, "failed to convert args"); } @@ -5833,7 +5833,7 @@ ngx_http_qjs_ext_subrequest(JSContext *cx, JSValueConst this_val, } if (!JS_IsUndefined(value)) { - rc = ngx_qjs_string(ctx->engine, value, &args); + rc = ngx_qjs_string(cx, value, &args); JS_FreeValue(cx, value); if (rc != NGX_OK) { @@ -5857,7 +5857,7 @@ ngx_http_qjs_ext_subrequest(JSContext *cx, JSValueConst this_val, } if (!JS_IsUndefined(value)) { - rc = ngx_qjs_string(ctx->engine, value, &method_name); + rc = ngx_qjs_string(cx, value, &method_name); JS_FreeValue(cx, value); if (rc != NGX_OK) { @@ -5884,7 +5884,7 @@ ngx_http_qjs_ext_subrequest(JSContext *cx, JSValueConst this_val, } if (!JS_IsUndefined(value)) { - rc = ngx_qjs_string(ctx->engine, value, &body_arg); + rc = ngx_qjs_string(cx, value, &body_arg); JS_FreeValue(cx, value); if (rc != NGX_OK) { @@ -6233,7 +6233,6 @@ ngx_http_qjs_variables_set_property(JSContext *cx, JSValueConst obj, u_char *lowcase_key; ngx_str_t name, s; ngx_uint_t key; - ngx_http_js_ctx_t *ctx; ngx_http_request_t *r; ngx_http_variable_t *v; ngx_http_variable_value_t *vv; @@ -6279,9 +6278,7 @@ ngx_http_qjs_variables_set_property(JSContext *cx, JSValueConst obj, return -1; } - ctx = ngx_http_get_module_ctx(r, ngx_http_js_module); - - if (ngx_qjs_string(ctx->engine, value, &s) != NGX_OK) { + if (ngx_qjs_string(cx, value, &s) != NGX_OK) { return -1; } @@ -6692,15 +6689,14 @@ ngx_http_qjs_headers_out_handler(JSContext *cx, ngx_http_request_t *r, ngx_str_t *name, JSPropertyDescriptor *pdesc, JSValue *value, unsigned flags) { - u_char *p; - int64_t length; - uint32_t i; - ngx_int_t rc; - ngx_str_t s; - JSValue v; - ngx_list_part_t *part; - ngx_table_elt_t *header, *h, **ph; - ngx_http_js_ctx_t *ctx; + u_char *p; + int64_t length; + uint32_t i; + ngx_int_t rc; + ngx_str_t s; + JSValue v; + ngx_list_part_t *part; + ngx_table_elt_t *header, *h, **ph; if (flags & NJS_HEADER_GET) { return ngx_http_qjs_header_generic(cx, r, &r->headers_out.headers, NULL, @@ -6758,7 +6754,6 @@ ngx_http_qjs_headers_out_handler(JSContext *cx, ngx_http_request_t *r, } ph = &header; - ctx = ngx_http_get_module_ctx(r, ngx_http_js_module); for (i = 0; i < (uint32_t) length; i++) { if (JS_IsArray(cx, *value)) { @@ -6768,7 +6763,7 @@ ngx_http_qjs_headers_out_handler(JSContext *cx, ngx_http_request_t *r, } } - rc = ngx_qjs_string(ctx->engine, v, &s); + rc = ngx_qjs_string(cx, v, &s); if (JS_IsArray(cx, *value)) { JS_FreeValue(cx, v); @@ -6828,15 +6823,14 @@ ngx_http_qjs_headers_out_special_handler(JSContext *cx, ngx_http_request_t *r, ngx_str_t *name, JSPropertyDescriptor *pdesc, JSValue *value, unsigned flags, ngx_table_elt_t **hh) { - u_char *p; - uint32_t length; - JSValue len, setval; - ngx_str_t s; - ngx_uint_t i, rc; - ngx_list_t *headers; - ngx_list_part_t *part; - ngx_table_elt_t *header, *h; - ngx_http_js_ctx_t *ctx; + u_char *p; + uint32_t length; + JSValue len, setval; + ngx_str_t s; + ngx_uint_t i, rc; + ngx_list_t *headers; + ngx_list_part_t *part; + ngx_table_elt_t *header, *h; if (flags & NJS_HEADER_GET) { return ngx_http_qjs_headers_out_handler(cx, r, name, pdesc, NULL, @@ -6870,9 +6864,7 @@ ngx_http_qjs_headers_out_special_handler(JSContext *cx, ngx_http_request_t *r, setval = JS_UNDEFINED; } - ctx = ngx_http_get_module_ctx(r, ngx_http_js_module); - - rc = ngx_qjs_string(ctx->engine, setval, &s); + rc = ngx_qjs_string(cx, setval, &s); if (value != NULL && JS_IsArray(cx, *value)) { JS_FreeValue(cx, setval); @@ -7054,7 +7046,6 @@ ngx_http_qjs_headers_out_content_type(JSContext *cx, ngx_http_request_t *r, JSValue len, setval; ngx_int_t rc; ngx_str_t *hdr, s; - ngx_http_js_ctx_t *ctx; if (flags & NJS_HEADER_GET) { hdr = &r->headers_out.content_type; @@ -7108,9 +7099,7 @@ ngx_http_qjs_headers_out_content_type(JSContext *cx, ngx_http_request_t *r, setval = *value; } - ctx = ngx_http_get_module_ctx(r, ngx_http_js_module); - - rc = ngx_qjs_string(ctx->engine, setval, &s); + rc = ngx_qjs_string(cx, setval, &s); if (JS_IsArray(cx, *value)) { JS_FreeValue(cx, setval); diff --git a/nginx/ngx_js.c b/nginx/ngx_js.c index 383d2304d..84cdcc2eb 100644 --- a/nginx/ngx_js.c +++ b/nginx/ngx_js.c @@ -101,7 +101,7 @@ static void ngx_qjs_rejection_tracker(JSContext *ctx, JSValueConst promise, JSValueConst reason, JS_BOOL is_handled, void *opaque); static JSValue ngx_qjs_value(JSContext *cx, const ngx_str_t *path); -static ngx_int_t ngx_qjs_dump_obj(ngx_engine_t *e, JSValueConst val, +static ngx_int_t ngx_qjs_dump_obj(JSContext *cx, JSValueConst val, ngx_str_t *dst); static JSModuleDef *ngx_qjs_core_init(JSContext *cx, const char *name); @@ -849,7 +849,7 @@ ngx_engine_qjs_compile(ngx_js_loc_conf_t *conf, ngx_log_t *log, u_char *start, JS_EVAL_TYPE_MODULE | JS_EVAL_FLAG_COMPILE_ONLY); if (JS_IsException(code)) { - ngx_qjs_exception(engine, &text); + ngx_qjs_exception(cx, &text); ngx_log_error(NGX_LOG_EMERG, log, 0, "js compile %V", &text); return NGX_ERROR; } @@ -972,7 +972,7 @@ ngx_qjs_clone(ngx_js_ctx_t *ctx, ngx_js_loc_conf_t *cf, void *external) rv = JS_ReadObject(cx, pc[i].code, pc[i].code_size, JS_READ_OBJ_BYTECODE); if (JS_IsException(rv)) { - ngx_qjs_exception(engine, &exception); + ngx_qjs_exception(cx, &exception); ngx_log_error(NGX_LOG_ERR, ctx->log, 0, "js load module exception: %V", &exception); @@ -988,7 +988,7 @@ ngx_qjs_clone(ngx_js_ctx_t *ctx, ngx_js_loc_conf_t *cf, void *external) rv = JS_EvalFunction(cx, rv); if (JS_IsException(rv)) { - ngx_qjs_exception(engine, &exception); + ngx_qjs_exception(cx, &exception); ngx_log_error(NGX_LOG_ERR, ctx->log, 0, "js eval exception: %V", &exception); @@ -997,7 +997,7 @@ ngx_qjs_clone(ngx_js_ctx_t *ctx, ngx_js_loc_conf_t *cf, void *external) rv = js_std_await(cx, rv); if (JS_IsException(rv)) { - ngx_qjs_exception(engine, &exception); + ngx_qjs_exception(cx, &exception); ngx_log_error(NGX_LOG_ERR, ctx->log, 0, "js eval exception: %V", &exception); @@ -1042,7 +1042,7 @@ ngx_engine_qjs_call(ngx_js_ctx_t *ctx, ngx_str_t *fname, val = JS_Call(cx, fn, JS_UNDEFINED, nargs, &ngx_qjs_arg(args[0])); JS_FreeValue(cx, fn); if (JS_IsException(val)) { - ngx_qjs_exception(ctx->engine, &exception); + ngx_qjs_exception(cx, &exception); ngx_log_error(NGX_LOG_ERR, ctx->log, 0, "js call exception: %V", &exception); @@ -1059,7 +1059,7 @@ ngx_engine_qjs_call(ngx_js_ctx_t *ctx, ngx_str_t *fname, rc = JS_ExecutePendingJob(rt, &cx1); if (rc <= 0) { if (rc == -1) { - ngx_qjs_exception(ctx->engine, &exception); + ngx_qjs_exception(cx, &exception); ngx_log_error(NGX_LOG_ERR, ctx->log, 0, "js job exception: %V", &exception); @@ -1093,7 +1093,7 @@ static ngx_int_t ngx_engine_qjs_string(ngx_engine_t *e, njs_opaque_value_t *value, ngx_str_t *str) { - return ngx_qjs_dump_obj(e, ngx_qjs_arg(*value), str); + return ngx_qjs_dump_obj(e->u.qjs.ctx, ngx_qjs_arg(*value), str); } @@ -1150,7 +1150,7 @@ ngx_engine_qjs_destroy(ngx_engine_t *e, ngx_js_ctx_t *ctx, } if (ngx_qjs_unhandled_rejection(ctx)) { - ngx_qjs_exception(ctx->engine, &exception); + ngx_qjs_exception(cx, &exception); ngx_log_error(NGX_LOG_ERR, ctx->log, 0, "js unhandled rejection: %V", &exception); } @@ -1255,13 +1255,17 @@ ngx_qjs_value(JSContext *cx, const ngx_str_t *path) static ngx_int_t -ngx_qjs_dump_obj(ngx_engine_t *e, JSValueConst val, ngx_str_t *dst) +ngx_qjs_dump_obj(JSContext *cx, JSValueConst val, ngx_str_t *dst) { - size_t len, byte_offset, byte_length; - u_char *start, *p; - JSValue buffer, stack; - ngx_str_t str, stack_str; - JSContext *cx; + size_t len, byte_offset, byte_length; + u_char *start, *p; + JSValue buffer, stack; + ngx_str_t str, stack_str; + ngx_js_ctx_t *ctx; + ngx_engine_t *e; + + ctx = ngx_qjs_external_ctx(cx, JS_GetContextOpaque(cx)); + e = ctx->engine; if (JS_IsNullOrUndefined(val)) { dst->data = NULL; @@ -1350,19 +1354,20 @@ ngx_qjs_dump_obj(ngx_engine_t *e, JSValueConst val, ngx_str_t *dst) ngx_int_t -ngx_qjs_call(ngx_js_ctx_t *ctx, JSValue fn, JSValue *argv, int argc) +ngx_qjs_call(JSContext *cx, JSValue fn, JSValue *argv, int argc) { - int rc; - JSValue ret; - ngx_str_t exception; - JSRuntime *rt; - JSContext *cx, *cx1; + int rc; + JSValue ret; + ngx_str_t exception; + JSRuntime *rt; + JSContext *cx1; + ngx_js_ctx_t *ctx; - cx = ctx->engine->u.qjs.ctx; + ctx = ngx_qjs_external_ctx(cx, JS_GetContextOpaque(cx)); ret = JS_Call(cx, fn, JS_UNDEFINED, argc, argv); if (JS_IsException(ret)) { - ngx_qjs_exception(ctx->engine, &exception); + ngx_qjs_exception(cx, &exception); ngx_log_error(NGX_LOG_ERR, ctx->log, 0, "js call exception: %V", &exception); @@ -1378,7 +1383,7 @@ ngx_qjs_call(ngx_js_ctx_t *ctx, JSValue fn, JSValue *argv, int argc) rc = JS_ExecutePendingJob(rt, &cx1); if (rc <= 0) { if (rc == -1) { - ngx_qjs_exception(ctx->engine, &exception); + ngx_qjs_exception(cx, &exception); ngx_log_error(NGX_LOG_ERR, ctx->log, 0, "js job exception: %V", &exception); @@ -1395,16 +1400,16 @@ ngx_qjs_call(ngx_js_ctx_t *ctx, JSValue fn, JSValue *argv, int argc) ngx_int_t -ngx_qjs_exception(ngx_engine_t *e, ngx_str_t *s) +ngx_qjs_exception(JSContext *cx, ngx_str_t *s) { JSValue exception; - exception = JS_GetException(e->u.qjs.ctx); - if (ngx_qjs_dump_obj(e, exception, s) != NGX_OK) { + exception = JS_GetException(cx); + if (ngx_qjs_dump_obj(cx, exception, s) != NGX_OK) { return NGX_ERROR; } - JS_FreeValue(e->u.qjs.ctx, exception); + JS_FreeValue(cx, exception); return NGX_OK; } @@ -1431,13 +1436,17 @@ ngx_qjs_integer(JSContext *cx, JSValueConst val, ngx_int_t *n) ngx_int_t -ngx_qjs_string(ngx_engine_t *e, JSValueConst val, ngx_str_t *dst) +ngx_qjs_string(JSContext *cx, JSValueConst val, ngx_str_t *dst) { - size_t len, byte_offset, byte_length; - u_char *start; - JSValue buffer; - JSContext *cx; - const char *str; + size_t len, byte_offset, byte_length; + u_char *start; + JSValue buffer; + const char *str; + ngx_js_ctx_t *ctx; + ngx_engine_t *e; + + ctx = ngx_qjs_external_ctx(cx, JS_GetContextOpaque(cx)); + e = ctx->engine; if (JS_IsNullOrUndefined(val)) { dst->data = NULL; @@ -1512,8 +1521,7 @@ ngx_qjs_timer_handler(ngx_event_t *ev) external = JS_GetContextOpaque(cx); ctx = ngx_qjs_external_ctx(cx, external); - rc = ngx_qjs_call((ngx_js_ctx_t *) ctx, event->function, event->args, - event->nargs); + rc = ngx_qjs_call(cx, event->function, event->args, event->nargs); ngx_js_del_event(ctx, event); @@ -1740,7 +1748,6 @@ ngx_qjs_ext_log(JSContext *cx, JSValueConst this_val, int argc, char *p; uint32_t level; ngx_str_t msg; - ngx_js_ctx_t *ctx; ngx_connection_t *c; p = JS_GetContextOpaque(cx); @@ -1759,11 +1766,10 @@ ngx_qjs_ext_log(JSContext *cx, JSValueConst this_val, int argc, argv++; } - ctx = ngx_qjs_external_ctx(cx, p); c = ngx_qjs_external_connection(cx, p); for ( ; argc > 0; argc--, argv++) { - if (ngx_qjs_dump_obj(ctx->engine, argv[0], &msg) != NGX_OK) { + if (ngx_qjs_dump_obj(cx, argv[0], &msg) != NGX_OK) { return JS_EXCEPTION; } diff --git a/nginx/ngx_js.h b/nginx/ngx_js.h index 833c1490b..6fac69949 100644 --- a/nginx/ngx_js.h +++ b/nginx/ngx_js.h @@ -340,11 +340,11 @@ ngx_engine_t *ngx_qjs_clone(ngx_js_ctx_t *ctx, ngx_js_loc_conf_t *cf, void *external); void ngx_engine_qjs_destroy(ngx_engine_t *e, ngx_js_ctx_t *ctx, ngx_js_loc_conf_t *conf); -ngx_int_t ngx_qjs_call(ngx_js_ctx_t *ctx, JSValue function, - JSValue *argv, int argc); -ngx_int_t ngx_qjs_exception(ngx_engine_t *e, ngx_str_t *s); +ngx_int_t ngx_qjs_call(JSContext *cx, JSValue function, JSValue *argv, + int argc); +ngx_int_t ngx_qjs_exception(JSContext *cx, ngx_str_t *s); ngx_int_t ngx_qjs_integer(JSContext *cx, JSValueConst val, ngx_int_t *n); -ngx_int_t ngx_qjs_string(ngx_engine_t *e, JSValueConst val, ngx_str_t *str); +ngx_int_t ngx_qjs_string(JSContext *cx, JSValueConst val, ngx_str_t *str); #define ngx_qjs_prop(cx, type, start, len) \ ((type == NGX_JS_STRING) ? qjs_string_create(cx, start, len) \ diff --git a/nginx/ngx_js_shared_dict.c b/nginx/ngx_js_shared_dict.c index 6ae12d848..7f8c808e8 100644 --- a/nginx/ngx_js_shared_dict.c +++ b/nginx/ngx_js_shared_dict.c @@ -2078,7 +2078,6 @@ ngx_qjs_ext_shared_dict_delete(JSContext *cx, JSValueConst this_val, int argc, JSValueConst *argv) { ngx_str_t key; - ngx_js_ctx_t *ctx; ngx_shm_zone_t *shm_zone; shm_zone = JS_GetOpaque(this_val, NGX_QJS_CLASS_ID_SHARED_DICT); @@ -2086,9 +2085,7 @@ ngx_qjs_ext_shared_dict_delete(JSContext *cx, JSValueConst this_val, return JS_ThrowTypeError(cx, "\"this\" is not a shared dict"); } - ctx = ngx_qjs_external_ctx(cx, JS_GetContextOpaque(cx)); - - if (ngx_qjs_string(ctx->engine, argv[0], &key) != NGX_OK) { + if (ngx_qjs_string(cx, argv[0], &key) != NGX_OK) { return JS_EXCEPTION; } @@ -2124,7 +2121,6 @@ ngx_qjs_ext_shared_dict_get(JSContext *cx, JSValueConst this_val, int argc, JSValueConst *argv) { ngx_str_t key; - ngx_js_ctx_t *ctx; ngx_shm_zone_t *shm_zone; shm_zone = JS_GetOpaque(this_val, NGX_QJS_CLASS_ID_SHARED_DICT); @@ -2132,9 +2128,7 @@ ngx_qjs_ext_shared_dict_get(JSContext *cx, JSValueConst this_val, return JS_ThrowTypeError(cx, "\"this\" is not a shared dict"); } - ctx = ngx_qjs_external_ctx(cx, JS_GetContextOpaque(cx)); - - if (ngx_qjs_string(ctx->engine, argv[0], &key) != NGX_OK) { + if (ngx_qjs_string(cx, argv[0], &key) != NGX_OK) { return JS_EXCEPTION; } @@ -2149,7 +2143,6 @@ ngx_qjs_ext_shared_dict_has(JSContext *cx, JSValueConst this_val, ngx_str_t key; ngx_msec_t now; ngx_time_t *tp; - ngx_js_ctx_t *ctx; ngx_js_dict_t *dict; ngx_shm_zone_t *shm_zone; ngx_js_dict_node_t *node; @@ -2159,9 +2152,7 @@ ngx_qjs_ext_shared_dict_has(JSContext *cx, JSValueConst this_val, return JS_ThrowTypeError(cx, "\"this\" is not a shared dict"); } - ctx = ngx_qjs_external_ctx(cx, JS_GetContextOpaque(cx)); - - if (ngx_qjs_string(ctx->engine, argv[0], &key) != NGX_OK) { + if (ngx_qjs_string(cx, argv[0], &key) != NGX_OK) { return JS_EXCEPTION; } @@ -2193,7 +2184,6 @@ ngx_qjs_ext_shared_dict_incr(JSContext *cx, JSValueConst this_val, double delta, init; uint32_t timeout; ngx_str_t key; - ngx_js_ctx_t *ctx; ngx_js_dict_t *dict; ngx_shm_zone_t *shm_zone; @@ -2208,9 +2198,7 @@ ngx_qjs_ext_shared_dict_incr(JSContext *cx, JSValueConst this_val, return JS_ThrowTypeError(cx, "shared dict is not a number dict"); } - ctx = ngx_qjs_external_ctx(cx, JS_GetContextOpaque(cx)); - - if (ngx_qjs_string(ctx->engine, argv[0], &key) != NGX_OK) { + if (ngx_qjs_string(cx, argv[0], &key) != NGX_OK) { return JS_EXCEPTION; } @@ -2464,7 +2452,6 @@ ngx_qjs_ext_shared_dict_pop(JSContext *cx, JSValueConst this_val, int argc, JSValueConst *argv) { ngx_str_t key; - ngx_js_ctx_t *ctx; ngx_shm_zone_t *shm_zone; shm_zone = JS_GetOpaque(this_val, NGX_QJS_CLASS_ID_SHARED_DICT); @@ -2472,9 +2459,7 @@ ngx_qjs_ext_shared_dict_pop(JSContext *cx, JSValueConst this_val, return JS_ThrowTypeError(cx, "\"this\" is not a shared dict"); } - ctx = ngx_qjs_external_ctx(cx, JS_GetContextOpaque(cx)); - - if (ngx_qjs_string(ctx->engine, argv[0], &key) != NGX_OK) { + if (ngx_qjs_string(cx, argv[0], &key) != NGX_OK) { return JS_EXCEPTION; } @@ -2489,7 +2474,6 @@ ngx_qjs_ext_shared_dict_set(JSContext *cx, JSValueConst this_val, JSValue ret; uint32_t timeout; ngx_str_t key; - ngx_js_ctx_t *ctx; ngx_js_dict_t *dict; ngx_shm_zone_t *shm_zone; @@ -2498,9 +2482,7 @@ ngx_qjs_ext_shared_dict_set(JSContext *cx, JSValueConst this_val, return JS_ThrowTypeError(cx, "\"this\" is not a shared dict"); } - ctx = ngx_qjs_external_ctx(cx, JS_GetContextOpaque(cx)); - - if (ngx_qjs_string(ctx->engine, argv[0], &key) != NGX_OK) { + if (ngx_qjs_string(cx, argv[0], &key) != NGX_OK) { return JS_EXCEPTION; } diff --git a/nginx/ngx_stream_js_module.c b/nginx/ngx_stream_js_module.c index 7e93b2375..a7dddd042 100644 --- a/nginx/ngx_stream_js_module.c +++ b/nginx/ngx_stream_js_module.c @@ -2152,7 +2152,7 @@ ngx_stream_qjs_ext_on(JSContext *cx, JSValueConst this_val, int argc, ctx = ngx_stream_get_module_ctx(ses->session, ngx_stream_js_module); - if (ngx_qjs_string(ctx->engine, argv[0], &name) != NGX_OK) { + if (ngx_qjs_string(cx, argv[0], &name) != NGX_OK) { return JS_EXCEPTION; } @@ -2195,7 +2195,7 @@ ngx_stream_qjs_ext_off(JSContext *cx, JSValueConst this_val, int argc, ctx = ngx_stream_get_module_ctx(s, ngx_stream_js_module); - if (ngx_qjs_string(ctx->engine, argv[0], &name) != NGX_OK) { + if (ngx_qjs_string(cx, argv[0], &name) != NGX_OK) { return JS_EXCEPTION; } @@ -2278,7 +2278,7 @@ ngx_stream_qjs_ext_send(JSContext *cx, JSValueConst this_val, int argc, return JS_ThrowInternalError(cx, "cannot send buffer in this handler"); } - if (ngx_qjs_string(ctx->engine, argv[0], &buffer) != NGX_OK) { + if (ngx_qjs_string(cx, argv[0], &buffer) != NGX_OK) { return JS_EXCEPTION; } @@ -2510,7 +2510,6 @@ ngx_stream_qjs_variables_set_property(JSContext *cx, JSValueConst obj, { ngx_str_t name, name_lc, val; ngx_uint_t key; - ngx_js_ctx_t *ctx; ngx_stream_session_t *s; ngx_stream_variable_t *v; ngx_stream_variable_value_t *vv; @@ -2556,9 +2555,7 @@ ngx_stream_qjs_variables_set_property(JSContext *cx, JSValueConst obj, return -1; } - ctx = ngx_stream_get_module_ctx(s, ngx_stream_js_module); - - if (ngx_qjs_string(ctx->engine, value, &val) != NGX_OK) { + if (ngx_qjs_string(cx, value, &val) != NGX_OK) { return -1; } @@ -2669,14 +2666,13 @@ ngx_stream_qjs_run_event(ngx_stream_session_t *s, ngx_stream_js_ctx_t *ctx, JS_SetOpaque(argv[1], (void *) flags); - rc = ngx_qjs_call((ngx_js_ctx_t *) ctx, ngx_qjs_arg(event->function), - &argv[0], 2); + rc = ngx_qjs_call(cx, ngx_qjs_arg(event->function), &argv[0], 2); JS_FreeValue(cx, argv[0]); JS_FreeValue(cx, argv[1]); if (rc == NGX_ERROR) { error: - ngx_qjs_exception(ctx->engine, &exception); + ngx_qjs_exception(cx, &exception); ngx_log_error(NGX_LOG_ERR, c->log, 0, "js exception: %V", &exception);