nginx-0.3.41-RELEASE import
*) Feature: the -v switch.
*) Bugfix: the segmentation fault may occurred if the SSI page has
remote subrequests.
*) Bugfix: in FastCGI handling.
*) Bugfix: if the perl modules path was not set using
--with-perl_modules_path=PATH or the "perl_modules", then the
segmentation fault was occurred.
diff --git a/src/http/modules/ngx_http_dav_module.c b/src/http/modules/ngx_http_dav_module.c
index e60b8cf..b41bd8e 100644
--- a/src/http/modules/ngx_http_dav_module.c
+++ b/src/http/modules/ngx_http_dav_module.c
@@ -116,10 +116,6 @@
return NGX_DECLINED;
}
- if (r->headers_in.content_length_n < 0) {
- return NGX_HTTP_BAD_REQUEST;
- }
-
r->request_body_in_file_only = 1;
r->request_body_in_persistent_file = 1;
r->request_body_delete_incomplete_file = 1;
@@ -312,6 +308,8 @@
ngx_http_finalize_request(r, NGX_HTTP_INTERNAL_SERVER_ERROR);
return;
}
+
+ r->headers_out.content_length_n = 0;
}
r->headers_out.status = status;
diff --git a/src/http/modules/ngx_http_fastcgi_module.c b/src/http/modules/ngx_http_fastcgi_module.c
index f901a52..ff55118 100644
--- a/src/http/modules/ngx_http_fastcgi_module.c
+++ b/src/http/modules/ngx_http_fastcgi_module.c
@@ -1173,6 +1173,11 @@
if (f->type == NGX_HTTP_FASTCGI_STDERR) {
if (f->length) {
+
+ if (f->pos == f->last) {
+ break;
+ }
+
line.data = f->pos;
if (f->pos + f->length <= f->last) {
@@ -1212,6 +1217,10 @@
/* f->type == NGX_HTTP_FASTCGI_STDOUT */
+ if (f->pos == f->last) {
+ break;
+ }
+
if (p->free) {
b = p->free->buf;
p->free = p->free->next;
diff --git a/src/http/modules/ngx_http_static_module.c b/src/http/modules/ngx_http_static_module.c
index 0dbec50..3399e50 100644
--- a/src/http/modules/ngx_http_static_module.c
+++ b/src/http/modules/ngx_http_static_module.c
@@ -86,6 +86,10 @@
ngx_pool_cleanup_file_t *clnf;
ngx_http_core_loc_conf_t *clcf;
+ if (r->method != NGX_HTTP_GET && r->method != NGX_HTTP_HEAD) {
+ return NGX_HTTP_NOT_ALLOWED;
+ }
+
if (r->uri.data[r->uri.len - 1] == '/') {
return NGX_DECLINED;
}
@@ -95,10 +99,6 @@
return NGX_DECLINED;
}
- if (r->method != NGX_HTTP_GET && r->method != NGX_HTTP_HEAD) {
- return NGX_HTTP_NOT_ALLOWED;
- }
-
rc = ngx_http_discard_body(r);
if (rc != NGX_OK && rc != NGX_AGAIN) {
diff --git a/src/http/modules/perl/ngx_http_perl_module.c b/src/http/modules/perl/ngx_http_perl_module.c
index 136bac3..aa0e41d 100644
--- a/src/http/modules/perl/ngx_http_perl_module.c
+++ b/src/http/modules/perl/ngx_http_perl_module.c
@@ -483,8 +483,10 @@
}
#endif
- if (ngx_conf_full_name(cf->cycle, &pmcf->modules) != NGX_OK) {
- return NGX_CONF_ERROR;
+ if (pmcf->modules.data) {
+ if (ngx_conf_full_name(cf->cycle, &pmcf->modules) != NGX_OK) {
+ return NGX_CONF_ERROR;
+ }
}
PERL_SYS_INIT(&ngx_argc, &ngx_argv);