summaryrefslogtreecommitdiffhomepage
path: root/src/stream/ngx_stream_script.c
diff options
context:
space:
mode:
authorSergey Kandaurov <pluknet@nginx.com>2021-05-28 13:33:08 +0300
committerSergey Kandaurov <pluknet@nginx.com>2021-05-28 13:33:08 +0300
commitb2b8637f98698fa8795079922d6227a2d5a3a0ad (patch)
treeb61cb2817764a4c1b49d1e9c42f31f0c834bfeb8 /src/stream/ngx_stream_script.c
parent03fcff287db0d6b620f837de95116ad3a3b7e1e9 (diff)
parent798813e96b0a948b4713e92b67ecae8116f9d08f (diff)
downloadnginx-b2b8637f98698fa8795079922d6227a2d5a3a0ad.tar.gz
nginx-b2b8637f98698fa8795079922d6227a2d5a3a0ad.tar.bz2
Merged with the default branch.
Diffstat (limited to 'src/stream/ngx_stream_script.c')
-rw-r--r--src/stream/ngx_stream_script.c40
1 files changed, 39 insertions, 1 deletions
diff --git a/src/stream/ngx_stream_script.c b/src/stream/ngx_stream_script.c
index a15f772b5..c447e152f 100644
--- a/src/stream/ngx_stream_script.c
+++ b/src/stream/ngx_stream_script.c
@@ -252,7 +252,7 @@ ngx_stream_set_complex_value_slot(ngx_conf_t *cf, ngx_command_t *cmd,
cv = (ngx_stream_complex_value_t **) (p + cmd->offset);
- if (*cv != NULL) {
+ if (*cv != NGX_CONF_UNSET_PTR && *cv != NULL) {
return "is duplicate";
}
@@ -278,6 +278,44 @@ ngx_stream_set_complex_value_slot(ngx_conf_t *cf, ngx_command_t *cmd,
char *
+ngx_stream_set_complex_value_zero_slot(ngx_conf_t *cf, ngx_command_t *cmd,
+ void *conf)
+{
+ char *p = conf;
+
+ ngx_str_t *value;
+ ngx_stream_complex_value_t **cv;
+ ngx_stream_compile_complex_value_t ccv;
+
+ cv = (ngx_stream_complex_value_t **) (p + cmd->offset);
+
+ if (*cv != NGX_CONF_UNSET_PTR) {
+ return "is duplicate";
+ }
+
+ *cv = ngx_palloc(cf->pool, sizeof(ngx_stream_complex_value_t));
+ if (*cv == NULL) {
+ return NGX_CONF_ERROR;
+ }
+
+ value = cf->args->elts;
+
+ ngx_memzero(&ccv, sizeof(ngx_stream_compile_complex_value_t));
+
+ ccv.cf = cf;
+ ccv.value = &value[1];
+ ccv.complex_value = *cv;
+ ccv.zero = 1;
+
+ if (ngx_stream_compile_complex_value(&ccv) != NGX_OK) {
+ return NGX_CONF_ERROR;
+ }
+
+ return NGX_CONF_OK;
+}
+
+
+char *
ngx_stream_set_complex_value_size_slot(ngx_conf_t *cf, ngx_command_t *cmd,
void *conf)
{