comparison src/http/ngx_http_write_filter_module.c @ 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 ed576bd1d9c0
children 311803b21504
comparison
equal deleted inserted replaced
5200:9d83ec073c51 5201:06fbbde04098
205 205
206 return NGX_ERROR; 206 return NGX_ERROR;
207 } 207 }
208 208
209 if (r->limit_rate) { 209 if (r->limit_rate) {
210 if (r->limit_rate_after == 0) {
211 r->limit_rate_after = clcf->limit_rate_after;
212 }
213
210 limit = (off_t) r->limit_rate * (ngx_time() - r->start_sec + 1) 214 limit = (off_t) r->limit_rate * (ngx_time() - r->start_sec + 1)
211 - (c->sent - clcf->limit_rate_after); 215 - (c->sent - r->limit_rate_after);
212 216
213 if (limit <= 0) { 217 if (limit <= 0) {
214 c->write->delayed = 1; 218 c->write->delayed = 1;
215 ngx_add_timer(c->write, 219 ngx_add_timer(c->write,
216 (ngx_msec_t) (- limit * 1000 / r->limit_rate + 1)); 220 (ngx_msec_t) (- limit * 1000 / r->limit_rate + 1));
247 251
248 if (r->limit_rate) { 252 if (r->limit_rate) {
249 253
250 nsent = c->sent; 254 nsent = c->sent;
251 255
252 if (clcf->limit_rate_after) { 256 if (r->limit_rate_after) {
253 257
254 sent -= clcf->limit_rate_after; 258 sent -= r->limit_rate_after;
255 if (sent < 0) { 259 if (sent < 0) {
256 sent = 0; 260 sent = 0;
257 } 261 }
258 262
259 nsent -= clcf->limit_rate_after; 263 nsent -= r->limit_rate_after;
260 if (nsent < 0) { 264 if (nsent < 0) {
261 nsent = 0; 265 nsent = 0;
262 } 266 }
263 } 267 }
264 268