diff src/http/ngx_http_write_filter.c @ 361:446782c909b3

nginx-0.0.7-2004-06-20-23:54:15 import
author Igor Sysoev <igor@sysoev.ru>
date Sun, 20 Jun 2004 19:54:15 +0000
parents 2e3cbc1bbe3c
children 7650aea1816f
line wrap: on
line diff
--- a/src/http/ngx_http_write_filter.c
+++ b/src/http/ngx_http_write_filter.c
@@ -69,7 +69,7 @@ ngx_module_t  ngx_http_write_filter_modu
 ngx_int_t ngx_http_write_filter(ngx_http_request_t *r, ngx_chain_t *in)
 {
     int                            last;
-    off_t                          size, flush;
+    off_t                          size, flush, sent;
     ngx_chain_t                   *cl, *ln, **ll, *chain;
     ngx_http_write_filter_ctx_t   *ctx;
     ngx_http_write_filter_conf_t  *conf;
@@ -138,7 +138,7 @@ ngx_int_t ngx_http_write_filter(ngx_http
         return NGX_OK;
     }
 
-    if (r->connection->write->delayed) {
+    if (r->delayed) {
         return NGX_AGAIN;
     }
 
@@ -150,11 +150,19 @@ ngx_int_t ngx_http_write_filter(ngx_http
         return NGX_OK;
     }
 
+    sent = r->connection->sent;
+
     chain = ngx_write_chain(r->connection, ctx->out);
 
     ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
                    "http write filter %X", chain);
 
+#if 1
+    sent = r->connection->sent - sent;
+    r->delayed = 1;
+    ngx_add_timer(r->connection->write, sent * 1000 / (4 * 1024));
+#endif
+
     if (chain == NGX_CHAIN_ERROR) {
         return NGX_ERROR;
     }