Mercurial > hg > nginx
changeset 5201:06fbbde04098
Added r->limit_rate_after.
As of now, it allows to better control bandwidth limiting from additional
modules. It is also expected to be used to add variables support to
the limit_rate_after directive.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Sat, 11 May 2013 18:49:42 +0400 |
parents | 9d83ec073c51 |
children | 322434f13bd8 |
files | src/http/ngx_http_request.h src/http/ngx_http_write_filter_module.c |
diffstat | 2 files changed, 9 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/http/ngx_http_request.h Sat May 11 18:49:30 2013 +0400 +++ b/src/http/ngx_http_request.h Sat May 11 18:49:42 2013 +0400 @@ -420,6 +420,7 @@ #endif size_t limit_rate; + size_t limit_rate_after; /* used to learn the Apache compatible response length without a header */ size_t header_size;
--- a/src/http/ngx_http_write_filter_module.c Sat May 11 18:49:30 2013 +0400 +++ b/src/http/ngx_http_write_filter_module.c Sat May 11 18:49:42 2013 +0400 @@ -207,8 +207,12 @@ } if (r->limit_rate) { + if (r->limit_rate_after == 0) { + r->limit_rate_after = clcf->limit_rate_after; + } + limit = (off_t) r->limit_rate * (ngx_time() - r->start_sec + 1) - - (c->sent - clcf->limit_rate_after); + - (c->sent - r->limit_rate_after); if (limit <= 0) { c->write->delayed = 1; @@ -249,14 +253,14 @@ nsent = c->sent; - if (clcf->limit_rate_after) { + if (r->limit_rate_after) { - sent -= clcf->limit_rate_after; + sent -= r->limit_rate_after; if (sent < 0) { sent = 0; } - nsent -= clcf->limit_rate_after; + nsent -= r->limit_rate_after; if (nsent < 0) { nsent = 0; }