aboutsummaryrefslogtreecommitdiff
path: root/src/stream/ngx_stream_geo_module.c
diff options
context:
space:
mode:
authorRuslan Ermilov <ru@nginx.com>2016-08-23 15:59:14 +0300
committerRuslan Ermilov <ru@nginx.com>2016-08-23 15:59:14 +0300
commit20de5f14e5f7de68576bc20bce5cf53f615f7113 (patch)
tree2ef74ab0e3bb833acb0bded8cae8a47ad03d9b45 /src/stream/ngx_stream_geo_module.c
parentf927ab882a343799b0a9dec2e3240d34d60cca1c (diff)
downloadnginx-20de5f14e5f7de68576bc20bce5cf53f615f7113.tar.gz
nginx-20de5f14e5f7de68576bc20bce5cf53f615f7113.zip
Geo: fixed insertion of ranges specified in descending order.
Diffstat (limited to 'src/stream/ngx_stream_geo_module.c')
-rw-r--r--src/stream/ngx_stream_geo_module.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/stream/ngx_stream_geo_module.c b/src/stream/ngx_stream_geo_module.c
index 1ee0154d3..5e91c46fb 100644
--- a/src/stream/ngx_stream_geo_module.c
+++ b/src/stream/ngx_stream_geo_module.c
@@ -890,9 +890,14 @@ ngx_stream_geo_add_range(ngx_conf_t *cf, ngx_stream_geo_conf_ctx_t *ctx,
return NGX_CONF_ERROR;
}
- range->start = (u_short) s;
- range->end = (u_short) e;
- range->value = ctx->value;
+ range = a->elts;
+
+ ngx_memmove(&range[1], &range[0],
+ (a->nelts - 1) * sizeof(ngx_stream_geo_range_t));
+
+ range[0].start = (u_short) s;
+ range[0].end = (u_short) e;
+ range[0].value = ctx->value;
next: