nginx-0.0.3-2004-04-01-20:20:53 import
diff --git a/src/http/modules/proxy/ngx_http_proxy_handler.c b/src/http/modules/proxy/ngx_http_proxy_handler.c
index 8f0336a..0dba23f 100644
--- a/src/http/modules/proxy/ngx_http_proxy_handler.c
+++ b/src/http/modules/proxy/ngx_http_proxy_handler.c
@@ -60,13 +60,6 @@
0,
NULL },
- { ngx_string("proxy_request_buffer_size"),
- NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
- ngx_conf_set_size_slot,
- NGX_HTTP_LOC_CONF_OFFSET,
- offsetof(ngx_http_proxy_loc_conf_t, request_buffer_size),
- NULL },
-
{ ngx_string("proxy_connect_timeout"),
NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
ngx_conf_set_msec_slot,
@@ -781,7 +774,6 @@
*/
- conf->request_buffer_size = NGX_CONF_UNSET_SIZE;
conf->connect_timeout = NGX_CONF_UNSET_MSEC;
conf->send_timeout = NGX_CONF_UNSET_MSEC;
@@ -822,8 +814,6 @@
ngx_http_proxy_loc_conf_t *prev = parent;
ngx_http_proxy_loc_conf_t *conf = child;
- ngx_conf_merge_size_value(conf->request_buffer_size,
- prev->request_buffer_size, 8192);
ngx_conf_merge_msec_value(conf->connect_timeout,
prev->connect_timeout, 60000);
ngx_conf_merge_msec_value(conf->send_timeout, prev->send_timeout, 30000);
diff --git a/src/http/modules/proxy/ngx_http_proxy_handler.h b/src/http/modules/proxy/ngx_http_proxy_handler.h
index d204cac..853aa76 100644
--- a/src/http/modules/proxy/ngx_http_proxy_handler.h
+++ b/src/http/modules/proxy/ngx_http_proxy_handler.h
@@ -48,7 +48,6 @@
typedef struct {
- size_t request_buffer_size;
size_t header_buffer_size;
size_t busy_buffers_size;
size_t max_temp_file_size;
diff --git a/src/http/modules/proxy/ngx_http_proxy_upstream.c b/src/http/modules/proxy/ngx_http_proxy_upstream.c
index 00a0780..bd4befd 100644
--- a/src/http/modules/proxy/ngx_http_proxy_upstream.c
+++ b/src/http/modules/proxy/ngx_http_proxy_upstream.c
@@ -86,7 +86,6 @@
tf->warn = "a client request body is buffered to a temporary file";
/* tf->persistent = 0; */
- rb->buf_size = p->lcf->request_buffer_size;
rb->handler = ngx_http_proxy_init_upstream;
rb->data = p;
/* rb->bufs = NULL; */
@@ -1179,7 +1178,10 @@
ep->temp_file->file.log = r->connection->log;
ep->temp_file->path = p->lcf->temp_path;
ep->temp_file->pool = r->pool;
- if (!p->cachable) {
+
+ if (p->cachable) {
+ ep->temp_file->persistent = 1;
+ } else {
ep->temp_file->warn = "an upstream response is buffered "
"to a temporary file";
}
diff --git a/src/http/ngx_http_core_module.c b/src/http/ngx_http_core_module.c
index 1f449e2..3ae6182 100644
--- a/src/http/ngx_http_core_module.c
+++ b/src/http/ngx_http_core_module.c
@@ -149,6 +149,13 @@
offsetof(ngx_http_core_loc_conf_t, client_max_body_size),
NULL },
+ { ngx_string("client_body_buffer_size"),
+ NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
+ ngx_conf_set_size_slot,
+ NGX_HTTP_LOC_CONF_OFFSET,
+ offsetof(ngx_http_core_loc_conf_t, client_body_buffer_size),
+ NULL },
+
{ ngx_string("client_body_timeout"),
NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
ngx_conf_set_msec_slot,
@@ -1181,6 +1188,7 @@
*/
lcf->client_max_body_size = NGX_CONF_UNSET_SIZE;
+ lcf->client_body_buffer_size = NGX_CONF_UNSET_SIZE;
lcf->client_body_timeout = NGX_CONF_UNSET_MSEC;
lcf->sendfile = NGX_CONF_UNSET;
lcf->tcp_nopush = NGX_CONF_UNSET;
@@ -1261,6 +1269,8 @@
ngx_conf_merge_size_value(conf->client_max_body_size,
prev->client_max_body_size, 10 * 1024 * 1024);
+ ngx_conf_merge_size_value(conf->client_body_buffer_size,
+ prev->client_body_buffer_size, 8192);
ngx_conf_merge_msec_value(conf->client_body_timeout,
prev->client_body_timeout, 60000);
ngx_conf_merge_value(conf->sendfile, prev->sendfile, 0);
diff --git a/src/http/ngx_http_core_module.h b/src/http/ngx_http_core_module.h
index 3af3ed4..130106b 100644
--- a/src/http/ngx_http_core_module.h
+++ b/src/http/ngx_http_core_module.h
@@ -124,6 +124,7 @@
size_t client_max_body_size; /* client_max_body_size */
size_t send_lowat; /* send_lowat */
size_t discarded_buffer_size; /* discarded_buffer_size */
+ size_t client_body_buffer_size; /* client_body_buffer_size */
ngx_msec_t client_body_timeout; /* client_body_timeout */
ngx_msec_t send_timeout; /* send_timeout */
diff --git a/src/http/ngx_http_request.h b/src/http/ngx_http_request.h
index a316153..5e127e8 100644
--- a/src/http/ngx_http_request.h
+++ b/src/http/ngx_http_request.h
@@ -155,7 +155,6 @@
ngx_chain_t *bufs;
ngx_hunk_t *buf;
size_t rest;
- size_t buf_size;
void (*handler) (void *data);
void *data;
} ngx_http_request_body_t;
diff --git a/src/http/ngx_http_request_body.c b/src/http/ngx_http_request_body.c
index 9f1260c..c4aada5 100644
--- a/src/http/ngx_http_request_body.c
+++ b/src/http/ngx_http_request_body.c
@@ -11,10 +11,10 @@
ngx_int_t ngx_http_read_client_request_body(ngx_http_request_t *r)
{
- ssize_t size;
- ngx_hunk_t *h;
- ngx_chain_t *cl;
-
+ ssize_t size;
+ ngx_hunk_t *h;
+ ngx_chain_t *cl;
+ ngx_http_core_loc_conf_t *clcf;
size = r->header_in->last - r->header_in->pos;
@@ -47,15 +47,18 @@
}
+ clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module);
+
r->request_body->rest = r->headers_in.content_length_n - size;
if (r->request_body->rest
- < r->request_body->buf_size + (r->request_body->buf_size >> 2))
+ < clcf->client_body_buffer_size
+ + (clcf->client_body_buffer_size >> 2))
{
size = r->request_body->rest;
} else {
- size = r->request_body->buf_size;
+ size = clcf->client_body_buffer_size;
}
ngx_test_null(r->request_body->buf, ngx_create_temp_hunk(r->pool, size),
diff --git a/src/http/ngx_http_write_filter.c b/src/http/ngx_http_write_filter.c
index 1091d75..5fa144f 100644
--- a/src/http/ngx_http_write_filter.c
+++ b/src/http/ngx_http_write_filter.c
@@ -62,7 +62,7 @@
ngx_http_write_filter_commands, /* module directives */
NGX_HTTP_MODULE, /* module type */
ngx_http_write_filter_init, /* init module */
- NULL /* init child */
+ NULL /* init process */
};
@@ -82,7 +82,8 @@
sizeof(ngx_http_write_filter_ctx_t), NGX_ERROR);
}
- size = flush = 0;
+ size = 0;
+ flush = 0;
last = 0;
ll = &ctx->out;