aboutsummaryrefslogtreecommitdiff
path: root/src/stream/ngx_stream_handler.c
diff options
context:
space:
mode:
authorVladimir Homutov <vl@nginx.com>2015-06-18 14:17:30 +0300
committerVladimir Homutov <vl@nginx.com>2015-06-18 14:17:30 +0300
commit14ff3d4f87c049ff4446efe067fbfe85d5ae18ab (patch)
tree8c07a252f1cff7d6ce105bde379e03a38d146949 /src/stream/ngx_stream_handler.c
parentf470cd2b893379312c89f3265d3f1cca499929e8 (diff)
downloadnginx-14ff3d4f87c049ff4446efe067fbfe85d5ae18ab.tar.gz
nginx-14ff3d4f87c049ff4446efe067fbfe85d5ae18ab.zip
Stream: connection limiting module.
stream { limit_conn_zone $binary_remote_addr zone=perip:1m; limit_conn_log_level error; server { ... limit_conn perip 1; } }
Diffstat (limited to 'src/stream/ngx_stream_handler.c')
-rw-r--r--src/stream/ngx_stream_handler.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/stream/ngx_stream_handler.c b/src/stream/ngx_stream_handler.c
index e4538b241..7b635fa4c 100644
--- a/src/stream/ngx_stream_handler.c
+++ b/src/stream/ngx_stream_handler.c
@@ -147,6 +147,15 @@ ngx_stream_init_connection(ngx_connection_t *c)
cmcf = ngx_stream_get_module_main_conf(s, ngx_stream_core_module);
+ if (cmcf->limit_conn_handler) {
+ rc = cmcf->limit_conn_handler(s);
+
+ if (rc != NGX_DECLINED) {
+ ngx_stream_close_connection(c);
+ return;
+ }
+ }
+
if (cmcf->access_handler) {
rc = cmcf->access_handler(s);