diff options
author | Dmitry Volyntsev <xeioex@nginx.com> | 2018-07-30 20:00:31 +0300 |
---|---|---|
committer | Dmitry Volyntsev <xeioex@nginx.com> | 2018-07-30 20:00:31 +0300 |
commit | 6cea6c6f1b5f7a36cf92a9aff9f68f658bd566cd (patch) | |
tree | a8df3dfc7465fb822079f73fcca1467d22a0e76a /nginx/ngx_http_js_module.c | |
parent | 55f6dca8b2929984094a8a6f3345ba2433bdfdef (diff) | |
download | njs-6cea6c6f1b5f7a36cf92a9aff9f68f658bd566cd.tar.gz njs-6cea6c6f1b5f7a36cf92a9aff9f68f658bd566cd.zip |
Fixed applying call() to methods of external values.
This correctly fixes #20 on Github.
Diffstat (limited to 'nginx/ngx_http_js_module.c')
-rw-r--r-- | nginx/ngx_http_js_module.c | 38 |
1 files changed, 30 insertions, 8 deletions
diff --git a/nginx/ngx_http_js_module.c b/nginx/ngx_http_js_module.c index 5e2d4bbf..25dd457b 100644 --- a/nginx/ngx_http_js_module.c +++ b/nginx/ngx_http_js_module.c @@ -1256,7 +1256,10 @@ ngx_http_js_ext_send_header(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs, { ngx_http_request_t *r; - r = njs_value_data(njs_argument(args, 0)); + r = njs_vm_external(vm, njs_arg(args, nargs, 0)); + if (nxt_slow_path(r == NULL)) { + return NXT_ERROR; + } if (ngx_http_send_header(r) == NGX_ERROR) { return NJS_ERROR; @@ -1278,7 +1281,10 @@ ngx_http_js_ext_send(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs, ngx_chain_t *out, *cl, **ll; ngx_http_request_t *r; - r = njs_value_data(njs_argument(args, 0)); + r = njs_vm_external(vm, njs_arg(args, nargs, 0)); + if (nxt_slow_path(r == NULL)) { + return NXT_ERROR; + } out = NULL; ll = &out; @@ -1343,7 +1349,10 @@ ngx_http_js_ext_finish(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs, ngx_http_js_ctx_t *ctx; ngx_http_request_t *r; - r = njs_value_data(njs_argument(args, 0)); + r = njs_vm_external(vm, njs_arg(args, nargs, 0)); + if (nxt_slow_path(r == NULL)) { + return NXT_ERROR; + } if (ngx_http_send_special(r, NGX_HTTP_LAST) == NGX_ERROR) { return NJS_ERROR; @@ -1399,7 +1408,10 @@ ngx_http_js_ext_return(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs, } } - r = njs_value_data(njs_argument(args, 0)); + r = njs_vm_external(vm, njs_argument(args, 0)); + if (nxt_slow_path(r == NULL)) { + return NXT_ERROR; + } ctx = ngx_http_get_module_ctx(r, ngx_http_js_module); @@ -1437,7 +1449,10 @@ ngx_http_js_ext_internal_redirect(njs_vm_t *vm, njs_value_t *args, return NJS_ERROR; } - r = njs_value_data(njs_argument(args, 0)); + r = njs_vm_external(vm, njs_argument(args, 0)); + if (nxt_slow_path(r == NULL)) { + return NXT_ERROR; + } ctx = ngx_http_get_module_ctx(r, ngx_http_js_module); @@ -1495,10 +1510,14 @@ ngx_http_js_ext_log_core(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs, ngx_log_handler_pt handler; ngx_http_request_t *r; - r = njs_value_data(njs_argument(args, 0)); + r = njs_vm_external(vm, njs_arg(args, nargs, 0)); + if (nxt_slow_path(r == NULL)) { + return NXT_ERROR; + } + c = r->connection; - if (njs_vm_value_to_ext_string(vm, &msg, njs_argument(args, 1), 0) + if (njs_vm_value_to_ext_string(vm, &msg, njs_arg(args, nargs, 1), 0) == NJS_ERROR) { return NJS_ERROR; @@ -1874,7 +1893,10 @@ ngx_http_js_ext_subrequest(njs_vm_t *vm, njs_value_t *args, nxt_uint_t nargs, return NJS_ERROR; } - r = njs_value_data(njs_argument(args, 0)); + r = njs_vm_external(vm, njs_argument(args, 0)); + if (nxt_slow_path(r == NULL)) { + return NXT_ERROR; + } ctx = ngx_http_get_module_ctx(r, ngx_http_js_module); |