Mercurial > hg > nginx
diff src/http/ngx_http_write_filter.c @ 71:59229033ae93
nginx-0.0.1-2003-04-08-19:40:10 import
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Tue, 08 Apr 2003 15:40:10 +0000 |
parents | e43f406e4525 |
children | 869b10be682f |
line wrap: on
line diff
--- a/src/http/ngx_http_write_filter.c +++ b/src/http/ngx_http_write_filter.c @@ -16,30 +16,29 @@ static void *ngx_http_write_filter_create_conf(ngx_pool_t *pool); static char *ngx_http_write_filter_merge_conf(ngx_pool_t *pool, void *parent, void *child); -static void ngx_http_write_filter_init(ngx_pool_t *pool, - ngx_http_conf_filter_t *cf); +static int ngx_http_write_filter_init(ngx_pool_t *pool); static ngx_command_t ngx_http_write_filter_commands[] = { - {ngx_string("write_buffer"), + {ngx_string("buffer_output"), NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, ngx_conf_set_size_slot, NGX_HTTP_LOC_CONF_OFFSET, offsetof(ngx_http_write_filter_conf_t, buffer_output)}, - {ngx_string(""), 0, NULL, 0, 0} + {ngx_null_string, 0, NULL, 0, 0} }; ngx_http_module_t ngx_http_write_filter_module_ctx = { + NGX_HTTP_MODULE, + NULL, /* create server config */ NULL, /* init server config */ ngx_http_write_filter_create_conf, /* create location config */ - ngx_http_write_filter_merge_conf, /* merge location config */ - - ngx_http_write_filter_init /* init filters */ + ngx_http_write_filter_merge_conf /* merge location config */ }; @@ -48,24 +47,24 @@ ngx_module_t ngx_http_write_filter_modu &ngx_http_write_filter_module_ctx, /* module context */ ngx_http_write_filter_commands, /* module directives */ NGX_HTTP_MODULE_TYPE, /* module type */ - NULL /* init module */ + ngx_http_write_filter_init /* init module */ }; int ngx_http_write_filter(ngx_http_request_t *r, ngx_chain_t *in) { - int last; - off_t size, flush; - ngx_chain_t *ce, **le, *chain; - ngx_http_write_filter_ctx_t *ctx; - ngx_http_write_filter_conf_t *conf; + int last; + off_t size, flush; + ngx_chain_t *ce, **le, *chain; + ngx_http_write_filter_ctx_t *ctx; + ngx_http_write_filter_conf_t *conf; ctx = (ngx_http_write_filter_ctx_t *) ngx_http_get_module_ctx(r->main ? r->main : r, - ngx_http_write_filter_module); + ngx_http_write_filter_module_ctx); if (ctx == NULL) { - ngx_http_create_ctx(r, ctx, ngx_http_write_filter_module, + ngx_http_create_ctx(r, ctx, ngx_http_write_filter_module_ctx, sizeof(ngx_http_write_filter_ctx_t), NGX_ERROR); } @@ -73,7 +72,8 @@ int ngx_http_write_filter(ngx_http_reque last = 0; le = &ctx->out; - /* find the size, the flush point and the last entry of saved chain */ + /* find the size, the flush point and the last entry of the saved chain */ + for (ce = ctx->out; ce; ce = ce->next) { le = &ce->next; @@ -93,6 +93,7 @@ int ngx_http_write_filter(ngx_http_reque } /* add the new chain to the existent one */ + for (/* void */; in; in = in->next) { ngx_test_null(ce, ngx_palloc(r->pool, sizeof(ngx_chain_t)), NGX_ERROR); @@ -118,7 +119,7 @@ int ngx_http_write_filter(ngx_http_reque conf = (ngx_http_write_filter_conf_t *) ngx_http_get_module_loc_conf(r->main ? r->main : r, - ngx_http_write_filter_module); + ngx_http_write_filter_module_ctx); #if (NGX_DEBUG_WRITE_FILTER) ngx_log_debug(r->connection->log, "write filter: last:%d flush:%d" _ @@ -126,7 +127,8 @@ int ngx_http_write_filter(ngx_http_reque #endif /* avoid the output if there is no last hunk, no flush point and - size of the hunks is smaller then 'write_buffer' */ + size of the hunks is smaller then "buffer_output" */ + if (!last && flush == 0 && size < conf->buffer_output) { return NGX_OK; } @@ -152,13 +154,6 @@ int ngx_http_write_filter(ngx_http_reque } -static void ngx_http_write_filter_init(ngx_pool_t *pool, - ngx_http_conf_filter_t *cf) -{ - cf->output_body_filter = ngx_http_write_filter; -} - - static void *ngx_http_write_filter_create_conf(ngx_pool_t *pool) { ngx_http_write_filter_conf_t *conf; @@ -186,3 +181,10 @@ static char *ngx_http_write_filter_merge return NULL; } + +static int ngx_http_write_filter_init(ngx_pool_t *pool) +{ + ngx_http_top_body_filter = ngx_http_write_filter; + + return NGX_OK; +}