From b39dfd8b7b0d90fa17908f1191eda723c403edf7 Mon Sep 17 00:00:00 2001 From: Dmitry Volyntsev Date: Fri, 19 Aug 2022 22:02:37 -0700 Subject: [PATCH] Modules: improved generic external getters. --- nginx/ngx_js.c | 28 +++++++++++++++++----------- nginx/ngx_js.h | 2 -- nginx/ngx_js_fetch.c | 3 ++- 3 files changed, 19 insertions(+), 14 deletions(-) diff --git a/nginx/ngx_js.c b/nginx/ngx_js.c index 19a5b74b..534232f4 100644 --- a/nginx/ngx_js.c +++ b/nginx/ngx_js.c @@ -34,6 +34,7 @@ static njs_external_t ngx_js_ext_core[] = { .u.property = { .handler = ngx_js_ext_constant, .magic32 = NGX_LOG_INFO, + .magic16 = NGX_JS_NUMBER, } }, @@ -43,6 +44,7 @@ static njs_external_t ngx_js_ext_core[] = { .u.property = { .handler = ngx_js_ext_constant, .magic32 = NGX_LOG_WARN, + .magic16 = NGX_JS_NUMBER, } }, @@ -52,6 +54,7 @@ static njs_external_t ngx_js_ext_core[] = { .u.property = { .handler = ngx_js_ext_constant, .magic32 = NGX_LOG_ERR, + .magic16 = NGX_JS_NUMBER, } }, @@ -256,7 +259,20 @@ njs_int_t ngx_js_ext_constant(njs_vm_t *vm, njs_object_prop_t *prop, njs_value_t *value, njs_value_t *setval, njs_value_t *retval) { - njs_value_number_set(retval, njs_vm_prop_magic32(prop)); + uint32_t magic32; + + magic32 = njs_vm_prop_magic32(prop); + + switch (njs_vm_prop_magic16(prop)) { + case NGX_JS_NUMBER: + njs_value_number_set(retval, magic32); + break; + + case NGX_JS_BOOLEAN: + default: + njs_value_boolean_set(retval, magic32); + break; + } return NJS_OK; } @@ -287,16 +303,6 @@ ngx_js_ext_flags(njs_vm_t *vm, njs_object_prop_t *prop, } -njs_int_t -ngx_js_ext_boolean(njs_vm_t *vm, njs_object_prop_t *prop, - njs_value_t *value, njs_value_t *setval, njs_value_t *retval) -{ - njs_value_boolean_set(retval, njs_vm_prop_magic32(prop)); - - return NJS_OK; -} - - njs_int_t ngx_js_ext_log(njs_vm_t *vm, njs_value_t *args, njs_uint_t nargs, njs_index_t level) diff --git a/nginx/ngx_js.h b/nginx/ngx_js.h index 93870bc5..857fa8e0 100644 --- a/nginx/ngx_js.h +++ b/nginx/ngx_js.h @@ -84,8 +84,6 @@ njs_int_t ngx_js_ext_constant(njs_vm_t *vm, njs_object_prop_t *prop, njs_value_t *value, njs_value_t *setval, njs_value_t *retval); njs_int_t ngx_js_ext_flags(njs_vm_t *vm, njs_object_prop_t *prop, njs_value_t *value, njs_value_t *setval, njs_value_t *retval); -njs_int_t ngx_js_ext_boolean(njs_vm_t *vm, njs_object_prop_t *prop, - njs_value_t *value, njs_value_t *setval, njs_value_t *retval); ngx_int_t ngx_js_core_init(njs_vm_t *vm, ngx_log_t *log); diff --git a/nginx/ngx_js_fetch.c b/nginx/ngx_js_fetch.c index 97de9167..34059ddd 100644 --- a/nginx/ngx_js_fetch.c +++ b/nginx/ngx_js_fetch.c @@ -276,8 +276,9 @@ static njs_external_t ngx_js_ext_http_response[] = { .name.string = njs_str("redirected"), .enumerable = 1, .u.property = { - .handler = ngx_js_ext_boolean, + .handler = ngx_js_ext_constant, .magic32 = 0, + .magic16 = NGX_JS_BOOLEAN, } }, -- 2.47.3