Skip to content

QuickJS: making argument styles consistent in ngx_js.h. #865

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Mar 18, 2025
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
71 changes: 30 additions & 41 deletions nginx/ngx_http_js_module.c
Original file line number Diff line number Diff line change
@@ -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);
84 changes: 45 additions & 39 deletions nginx/ngx_js.c
Original file line number Diff line number Diff line change
@@ -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;
}

8 changes: 4 additions & 4 deletions nginx/ngx_js.h
Original file line number Diff line number Diff line change
@@ -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) \
30 changes: 6 additions & 24 deletions nginx/ngx_js_shared_dict.c
Original file line number Diff line number Diff line change
@@ -2078,17 +2078,14 @@ 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);
if (shm_zone == NULL) {
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,17 +2121,14 @@ 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);
if (shm_zone == NULL) {
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,17 +2452,14 @@ 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);
if (shm_zone == NULL) {
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;
}

16 changes: 6 additions & 10 deletions nginx/ngx_stream_js_module.c
Original file line number Diff line number Diff line change
@@ -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);