diff options
-rw-r--r-- | docs/xml/nginx/changes.xml | 43 | ||||
-rw-r--r-- | src/core/nginx.h | 2 | ||||
-rw-r--r-- | src/event/ngx_event_openssl.c | 5 | ||||
-rw-r--r-- | src/http/modules/ngx_http_gzip_filter_module.c | 2 | ||||
-rw-r--r-- | src/http/modules/ngx_http_ssi_filter_module.c | 6 | ||||
-rw-r--r-- | src/http/ngx_http_copy_filter_module.c | 3 | ||||
-rw-r--r-- | src/http/ngx_http_core_module.c | 2 | ||||
-rw-r--r-- | src/http/ngx_http_postpone_filter_module.c | 2 | ||||
-rw-r--r-- | src/http/ngx_http_request.c | 2 | ||||
-rw-r--r-- | src/http/ngx_http_request.h | 2 | ||||
-rw-r--r-- | src/http/ngx_http_special_response.c | 2 | ||||
-rw-r--r-- | src/http/ngx_http_write_filter_module.c | 13 |
12 files changed, 60 insertions, 24 deletions
diff --git a/docs/xml/nginx/changes.xml b/docs/xml/nginx/changes.xml index 1d401f849..2900e2d5b 100644 --- a/docs/xml/nginx/changes.xml +++ b/docs/xml/nginx/changes.xml @@ -9,6 +9,49 @@ <title lang="en">nginx changelog</title> +<changes ver="0.1.31" date="16.05.2005"> + +<change type="bugfix"> +<para lang="ru"> +при использовании SSL ответ мог передаваться не до конца. +</para> +<para lang="en"> +the response encrypted by SSL may not transferred complete. +</para> +</change> + +<change type="bugfix"> +<para lang="ru"> +ошибки при обработке SSI в ответе, полученного от FastCGI-сервера. +</para> +<para lang="en"> +errors while processing FastCGI response by SSI. +</para> +</change> + +<change type="bugfix"> +<para lang="ru"> +ошибки при использовании SSI и сжатия. +</para> +<para lang="en"> +errors while using SSI and gzipping. +</para> +</change> + +<change type="bugfix"> +<para lang="ru"> +редирект с кодом 301 передавался без тела ответа; +ошибка появилась в 0.1.30. +</para> +<para lang="en"> +the redirect with the 301 code was transferred without response body; +bug appeared in 0.1.30. +</para> +</change> + +</changes> + + <changes ver="0.1.30" date="14.05.2005"> <change type="bugfix"> diff --git a/src/core/nginx.h b/src/core/nginx.h index dc1e14337..44c870bed 100644 --- a/src/core/nginx.h +++ b/src/core/nginx.h @@ -8,7 +8,7 @@ #define _NGINX_H_INCLUDED_ -#define NGINX_VER "nginx/0.1.30" +#define NGINX_VER "nginx/0.1.31" #define NGINX_VAR "NGINX" #define NGX_NEWPID_EXT ".newbin" diff --git a/src/event/ngx_event_openssl.c b/src/event/ngx_event_openssl.c index 7053fa389..1c0f1485d 100644 --- a/src/event/ngx_event_openssl.c +++ b/src/event/ngx_event_openssl.c @@ -288,8 +288,9 @@ ngx_ssl_send_chain(ngx_connection_t *c, ngx_chain_t *in, off_t limit) return NGX_CHAIN_ERROR; } - if (n < 0) { - n = 0; + if (n == NGX_AGAIN) { + c->buffered = 1; + return in; } in->buf->pos += n; diff --git a/src/http/modules/ngx_http_gzip_filter_module.c b/src/http/modules/ngx_http_gzip_filter_module.c index 1f7c2328c..f7cb92c18 100644 --- a/src/http/modules/ngx_http_gzip_filter_module.c +++ b/src/http/modules/ngx_http_gzip_filter_module.c @@ -367,7 +367,7 @@ ngx_http_gzip_header_filter(ngx_http_request_t *r) r->headers_out.content_length = NULL; } - r->filter_need_in_memory = 1; + r->main_filter_need_in_memory = 1; return ngx_http_next_header_filter(r); } diff --git a/src/http/modules/ngx_http_ssi_filter_module.c b/src/http/modules/ngx_http_ssi_filter_module.c index acaeeeda6..2992ff59d 100644 --- a/src/http/modules/ngx_http_ssi_filter_module.c +++ b/src/http/modules/ngx_http_ssi_filter_module.c @@ -321,7 +321,6 @@ ngx_http_ssi_header_filter(ngx_http_request_t *r) ctx->timefmt.data = (u_char *) "%A, %d-%b-%Y %H:%M:%S %Z"; r->filter_need_in_memory = 1; - r->filter_ssi_need_in_memory = 1; if (r->main == NULL) { r->headers_out.content_length_n = -1; @@ -464,10 +463,11 @@ ngx_http_ssi_body_filter(ngx_http_request_t *r, ngx_chain_t *in) ngx_memcpy(b, ctx->buf, sizeof(ngx_buf_t)); - b->last_buf = 0; - b->recycled = 0; b->pos = ctx->copy_start; b->last = ctx->copy_end; + b->shadow = NULL; + b->last_buf = 0; + b->recycled = 0; if (b->in_file) { if (conf->min_file_chunk < (size_t) (b->last - b->pos)) diff --git a/src/http/ngx_http_copy_filter_module.c b/src/http/ngx_http_copy_filter_module.c index 98579a2c0..5561134da 100644 --- a/src/http/ngx_http_copy_filter_module.c +++ b/src/http/ngx_http_copy_filter_module.c @@ -88,7 +88,8 @@ ngx_http_copy_filter(ngx_http_request_t *r, ngx_chain_t *in) ngx_http_set_ctx(r, ctx, ngx_http_copy_filter_module); ctx->sendfile = r->connection->sendfile; - ctx->need_in_memory = r->filter_need_in_memory; + ctx->need_in_memory = r->main_filter_need_in_memory + || r->filter_need_in_memory; ctx->need_in_temp = r->filter_need_temporary; ctx->pool = r->pool; diff --git a/src/http/ngx_http_core_module.c b/src/http/ngx_http_core_module.c index 2a9b3b7e5..42c8211d1 100644 --- a/src/http/ngx_http_core_module.c +++ b/src/http/ngx_http_core_module.c @@ -1023,6 +1023,8 @@ ngx_http_subrequest(ngx_http_request_t *r, sr->internal = 1; + sr->main_filter_need_in_memory = r->main_filter_need_in_memory; + ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, "http subrequest \"%V\"", uri); diff --git a/src/http/ngx_http_postpone_filter_module.c b/src/http/ngx_http_postpone_filter_module.c index 4f99bc484..5c3e2c9c6 100644 --- a/src/http/ngx_http_postpone_filter_module.c +++ b/src/http/ngx_http_postpone_filter_module.c @@ -98,7 +98,7 @@ ngx_http_postpone_filter(ngx_http_request_t *r, ngx_chain_t *in) out = in; } - if (out == NULL && r->out == NULL) { + if (out == NULL && r->out == NULL && !r->connection->buffered) { return NGX_OK; } diff --git a/src/http/ngx_http_request.c b/src/http/ngx_http_request.c index 4cbf91581..37a176a0a 100644 --- a/src/http/ngx_http_request.c +++ b/src/http/ngx_http_request.c @@ -384,7 +384,7 @@ void ngx_http_init_request(ngx_event_t *rev) c->ssl->no_rcv_shut = 1; } - r->filter_need_in_memory = 1; + r->main_filter_need_in_memory = 1; } #endif diff --git a/src/http/ngx_http_request.h b/src/http/ngx_http_request.h index f05bc1bdd..e2f303322 100644 --- a/src/http/ngx_http_request.h +++ b/src/http/ngx_http_request.h @@ -366,8 +366,8 @@ struct ngx_http_request_s { unsigned closed:1; unsigned done:1; + unsigned main_filter_need_in_memory:1; unsigned filter_need_in_memory:1; - unsigned filter_ssi_need_in_memory:1; unsigned filter_need_temporary:1; unsigned filter_allow_ranges:1; diff --git a/src/http/ngx_http_special_response.c b/src/http/ngx_http_special_response.c index 5591dbc88..7a341599a 100644 --- a/src/http/ngx_http_special_response.c +++ b/src/http/ngx_http_special_response.c @@ -300,7 +300,7 @@ ngx_http_special_response_handler(ngx_http_request_t *r, ngx_int_t error) } else if (error < NGX_HTTP_BAD_REQUEST) { /* 3XX */ - err = error - NGX_HTTP_MOVED_PERMANENTLY; + err = error - NGX_HTTP_MOVED_PERMANENTLY + NGX_HTTP_LEVEL_200; } else if (error < NGX_HTTP_NGX_CODES) { /* 4XX */ diff --git a/src/http/ngx_http_write_filter_module.c b/src/http/ngx_http_write_filter_module.c index 2d9db8b55..b872f3dd1 100644 --- a/src/http/ngx_http_write_filter_module.c +++ b/src/http/ngx_http_write_filter_module.c @@ -168,17 +168,6 @@ ngx_http_write_filter(ngx_http_request_t *r, ngx_chain_t *in) return NGX_OK; } -#if 0 - /* - * avoid the output if there are no incoming bufs but there are - * the postponed requests or data - */ - - if (in == NULL && r->postponed) { - return NGX_OK; - } -#endif - if (c->write->delayed) { return NGX_AGAIN; } @@ -232,7 +221,7 @@ ngx_http_write_filter(ngx_http_request_t *r, ngx_chain_t *in) r->out = chain; - if (chain || (last && c->buffered)) { + if (chain || c->buffered) { return NGX_AGAIN; } |