]> git.kaiwu.me - nginx.git/commitdiff
Added r->limit_rate_after.
authorMaxim Dounin <mdounin@mdounin.ru>
Sat, 11 May 2013 14:49:42 +0000 (18:49 +0400)
committerMaxim Dounin <mdounin@mdounin.ru>
Sat, 11 May 2013 14:49:42 +0000 (18:49 +0400)
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.

src/http/ngx_http_request.h
src/http/ngx_http_write_filter_module.c

index bd842df7e3fc84ec9bcb2dce2bf593c55946368b..1babeb2b0cc816716480dc7cda8995778d2e1911 100644 (file)
@@ -420,6 +420,7 @@ struct ngx_http_request_s {
 #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;
index 5594c7faaade91464ad9f64691a305e85e22e1b8..f74dbc8ab573310c16ec24ee1659e90723c69aa7 100644 (file)
@@ -207,8 +207,12 @@ ngx_http_write_filter(ngx_http_request_t *r, ngx_chain_t *in)
     }
 
     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 @@ ngx_http_write_filter(ngx_http_request_t *r, ngx_chain_t *in)
 
         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;
             }