# HG changeset patch
# User Eran Kornblau <erankor@gmail.com>
# Date 1480798883 18000
#      Sat Dec 03 16:01:23 2016 -0500
# Node ID 760725f6407ef8a591c911e650703254f69c5adb
# Parent  87d7e640b45dc03e47d405dbf872b6f1f4ea7782
Map: support nocacheable conf flag

diff -r 87d7e640b45d -r 760725f6407e src/http/modules/ngx_http_map_module.c
--- a/src/http/modules/ngx_http_map_module.c	Sat Dec 03 10:01:39 2016 +0300
+++ b/src/http/modules/ngx_http_map_module.c	Sat Dec 03 16:01:23 2016 -0500
@@ -48,7 +48,7 @@
 static ngx_command_t  ngx_http_map_commands[] = {
 
     { ngx_string("map"),
-      NGX_HTTP_MAIN_CONF|NGX_CONF_BLOCK|NGX_CONF_TAKE2,
+      NGX_HTTP_MAIN_CONF|NGX_CONF_BLOCK|NGX_CONF_2MORE,
       ngx_http_map_block,
       NGX_HTTP_MAIN_CONF_OFFSET,
       0,
@@ -185,6 +185,7 @@
     ngx_http_variable_t               *var;
     ngx_http_map_conf_ctx_t            ctx;
     ngx_http_compile_complex_value_t   ccv;
+    ngx_uint_t                         i, flags;
 
     if (mcf->hash_max_size == NGX_CONF_UNSET_UINT) {
         mcf->hash_max_size = 2048;
@@ -226,7 +227,23 @@
     name.len--;
     name.data++;
 
-    var = ngx_http_add_variable(cf, &name, NGX_HTTP_VAR_CHANGEABLE);
+    flags = NGX_HTTP_VAR_CHANGEABLE;
+
+    for (i = 3; i < cf->args->nelts; i++) {
+
+        if (ngx_strcmp(value[i].data, "nocacheable") == 0) {
+
+            flags |= NGX_HTTP_VAR_NOCACHEABLE;
+
+            continue;
+        }
+
+        ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
+            "invalid parameter \"%V\"", &value[i]);
+        return NGX_CONF_ERROR;
+    }
+
+    var = ngx_http_add_variable(cf, &name, flags);
     if (var == NULL) {
         return NGX_CONF_ERROR;
     }
