Mercurial > hg > nginx-quic
comparison src/http/modules/ngx_http_limit_req_module.c @ 3183:b87542338ac3
make limit_req to conform to the leaky bucket algorithm
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Tue, 06 Oct 2009 09:37:18 +0000 |
parents | 70c8b2d28d1d |
children | 30570a5b9bb0 |
comparison
equal
deleted
inserted
replaced
3182:6ddaac3e0bf7 | 3183:b87542338ac3 |
---|---|
377 now = (ngx_msec_t) (tp->sec * 1000 + tp->msec); | 377 now = (ngx_msec_t) (tp->sec * 1000 + tp->msec); |
378 ms = (ngx_msec_int_t) (now - lr->last); | 378 ms = (ngx_msec_int_t) (now - lr->last); |
379 | 379 |
380 excess = lr->excess - ctx->rate * ngx_abs(ms) / 1000 + 1000; | 380 excess = lr->excess - ctx->rate * ngx_abs(ms) / 1000 + 1000; |
381 | 381 |
382 if ((ngx_uint_t) excess > lrcf->burst) { | |
383 *lrp = lr; | |
384 return NGX_BUSY; | |
385 } | |
386 | |
382 if (excess < 0) { | 387 if (excess < 0) { |
383 excess = 0; | 388 excess = 0; |
384 } | 389 } |
385 | 390 |
386 lr->excess = excess; | 391 lr->excess = excess; |
387 lr->last = now; | 392 lr->last = now; |
388 | 393 |
389 *lrp = lr; | 394 *lrp = lr; |
390 | |
391 if ((ngx_uint_t) excess > lrcf->burst) { | |
392 return NGX_BUSY; | |
393 } | |
394 | 395 |
395 if (excess) { | 396 if (excess) { |
396 return NGX_AGAIN; | 397 return NGX_AGAIN; |
397 } | 398 } |
398 | 399 |