count connection once per request
diff --git a/src/http/modules/ngx_http_limit_zone_module.c b/src/http/modules/ngx_http_limit_zone_module.c
index 218c0de..e262a81 100644
--- a/src/http/modules/ngx_http_limit_zone_module.c
+++ b/src/http/modules/ngx_http_limit_zone_module.c
@@ -107,6 +107,10 @@
     ngx_http_limit_zone_conf_t     *lzcf;
     ngx_http_limit_zone_cleanup_t  *lzcln;
 
+    if (r->limit_zone_set) {
+        return NGX_DECLINED;
+    }
+
     lzcf = ngx_http_get_module_loc_conf(r, ngx_http_limit_zone_module);
 
     if (lzcf->shm_zone == NULL) {
@@ -119,6 +123,8 @@
         return NGX_DECLINED;
     }
 
+    r->limit_zone_set = 1;
+
     len = vv->len;
 
     hash = ngx_crc32_short(vv->data, len);
diff --git a/src/http/ngx_http_request.h b/src/http/ngx_http_request.h
index 25f07b1..5cdcb94 100644
--- a/src/http/ngx_http_request.h
+++ b/src/http/ngx_http_request.h
@@ -430,6 +430,12 @@
 
 #endif
 
+    /*
+     * instead of using the request context data in ngx_http_limit_zone_module
+     * we use the single bit in the request structure
+     */
+    unsigned                          limit_zone_set:1;
+
 #if 0
     unsigned                          cachable:1;
 #endif