From a756b7eaf2f146a2b4c5b06d418c82165a549e02 Mon Sep 17 00:00:00 2001 From: Dmitry Volyntsev Date: Fri, 26 Feb 2021 17:45:56 +0000 Subject: [PATCH] Stream: introduced "stream" property. Is an alias to $status variable. --- nginx/ngx_js.c | 21 +++++++++++++++++++++ nginx/ngx_js.h | 2 ++ nginx/ngx_stream_js_module.c | 10 ++++++++++ 3 files changed, 33 insertions(+) diff --git a/nginx/ngx_js.c b/nginx/ngx_js.c index e87b8252..64db0478 100644 --- a/nginx/ngx_js.c +++ b/nginx/ngx_js.c @@ -185,6 +185,27 @@ ngx_js_ext_string(njs_vm_t *vm, njs_object_prop_t *prop, njs_value_t *value, } +njs_int_t +ngx_js_ext_uint(njs_vm_t *vm, njs_object_prop_t *prop, njs_value_t *value, + njs_value_t *setval, njs_value_t *retval) +{ + char *p; + ngx_uint_t field; + + p = njs_vm_external(vm, value); + if (p == NULL) { + njs_value_undefined_set(retval); + return NJS_DECLINED; + } + + field = *(ngx_uint_t *) (p + njs_vm_prop_magic32(prop)); + + njs_value_number_set(retval, field); + + return NJS_OK; +} + + 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) diff --git a/nginx/ngx_js.h b/nginx/ngx_js.h index bc80515e..395c0a12 100644 --- a/nginx/ngx_js.h +++ b/nginx/ngx_js.h @@ -57,6 +57,8 @@ njs_int_t ngx_js_ext_log(njs_vm_t *vm, njs_value_t *args, njs_uint_t nargs, njs_int_t ngx_js_ext_string(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_uint(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_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_boolean(njs_vm_t *vm, njs_object_prop_t *prop, diff --git a/nginx/ngx_stream_js_module.c b/nginx/ngx_stream_js_module.c index 99ebfd4c..f729edf0 100644 --- a/nginx/ngx_stream_js_module.c +++ b/nginx/ngx_stream_js_module.c @@ -224,6 +224,16 @@ static njs_external_t ngx_stream_js_ext_session[] = { } }, + { + .flags = NJS_EXTERN_PROPERTY, + .name.string = njs_str("status"), + .enumerable = 1, + .u.property = { + .handler = ngx_js_ext_uint, + .magic32 = offsetof(ngx_stream_session_t, status), + } + }, + { .flags = NJS_EXTERN_PROPERTY, .name.string = njs_str("remoteAddress"), -- 2.47.3