diff options
| author | Ruslan Ermilov <ru@nginx.com> | 2016-08-23 15:59:14 +0300 |
|---|---|---|
| committer | Ruslan Ermilov <ru@nginx.com> | 2016-08-23 15:59:14 +0300 |
| commit | 20de5f14e5f7de68576bc20bce5cf53f615f7113 (patch) | |
| tree | 2ef74ab0e3bb833acb0bded8cae8a47ad03d9b45 /src | |
| parent | f927ab882a343799b0a9dec2e3240d34d60cca1c (diff) | |
| download | nginx-20de5f14e5f7de68576bc20bce5cf53f615f7113.tar.gz nginx-20de5f14e5f7de68576bc20bce5cf53f615f7113.tar.bz2 | |
Geo: fixed insertion of ranges specified in descending order.
Diffstat (limited to 'src')
| -rw-r--r-- | src/http/modules/ngx_http_geo_module.c | 11 | ||||
| -rw-r--r-- | src/stream/ngx_stream_geo_module.c | 11 |
2 files changed, 16 insertions, 6 deletions
diff --git a/src/http/modules/ngx_http_geo_module.c b/src/http/modules/ngx_http_geo_module.c index e64380401..2794548ed 100644 --- a/src/http/modules/ngx_http_geo_module.c +++ b/src/http/modules/ngx_http_geo_module.c @@ -940,9 +940,14 @@ ngx_http_geo_add_range(ngx_conf_t *cf, ngx_http_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_http_geo_range_t)); + + range[0].start = (u_short) s; + range[0].end = (u_short) e; + range[0].value = ctx->value; next: 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: |
