diff options
author | Igor Sysoev <igor@sysoev.ru> | 2005-08-30 10:55:07 +0000 |
---|---|---|
committer | Igor Sysoev <igor@sysoev.ru> | 2005-08-30 10:55:07 +0000 |
commit | e5035397b01ec12f351a6a984f83091b821978cc (patch) | |
tree | 9e65f1b24c595346b666559264878cbb911bfcf7 /src/http/modules | |
parent | e3c2cf87e537aba572b08afccabcb64976d43079 (diff) | |
download | nginx-e5035397b01ec12f351a6a984f83091b821978cc.tar.gz nginx-e5035397b01ec12f351a6a984f83091b821978cc.zip |
nginx-0.1.43-RELEASE importrelease-0.1.43
*) Feature: the listen(2) backlog in the "listen" directive can be
changed using the -HUP signal.
*) Feature: the geo2nginx.pl script was added to contrib.
*) Change: the FastCGI parameters with the empty values now are passed
to a server.
*) Bugfix: the segmentation fault occurred or the worker process may
got caught in an endless loop if the proxied or FastCGI server sent
the "Cache-Control" header line and the "expires" directive was
used; in the proxied mode the the bug had appeared in 0.1.29.
Diffstat (limited to 'src/http/modules')
-rw-r--r-- | src/http/modules/ngx_http_fastcgi_module.c | 33 | ||||
-rw-r--r-- | src/http/modules/ngx_http_headers_filter_module.c | 23 |
2 files changed, 28 insertions, 28 deletions
diff --git a/src/http/modules/ngx_http_fastcgi_module.c b/src/http/modules/ngx_http_fastcgi_module.c index 480a22895..c5a2c4bc4 100644 --- a/src/http/modules/ngx_http_fastcgi_module.c +++ b/src/http/modules/ngx_http_fastcgi_module.c @@ -144,15 +144,6 @@ static ngx_http_fastcgi_request_start_t ngx_http_fastcgi_request_start = { }; -#if 0 -static ngx_str_t ngx_http_fastcgi_methods[] = { - ngx_string("GET"), - ngx_string("HEAD"), - ngx_string("POST") -}; -#endif - - static ngx_str_t ngx_http_fastcgi_script_name = ngx_string("fastcgi_script_name"); @@ -428,9 +419,7 @@ ngx_http_fastcgi_create_request(ngx_http_request_t *r) } le.ip += sizeof(uintptr_t); - if (val_len) { - len += 1 + key_len + ((val_len > 127) ? 4 : 1) + val_len; - } + len += 1 + key_len + ((val_len > 127) ? 4 : 1) + val_len; } } @@ -527,22 +516,18 @@ ngx_http_fastcgi_create_request(ngx_http_request_t *r) } le.ip += sizeof(uintptr_t); - if (val_len) { - *e.pos++ = (u_char) key_len; + *e.pos++ = (u_char) key_len; - if (val_len > 127) { - *e.pos++ = (u_char) (((val_len >> 24) & 0x7f) | 0x80); - *e.pos++ = (u_char) ((val_len >> 16) & 0xff); - *e.pos++ = (u_char) ((val_len >> 8) & 0xff); - *e.pos++ = (u_char) (val_len & 0xff); + if (val_len > 127) { + *e.pos++ = (u_char) (((val_len >> 24) & 0x7f) | 0x80); + *e.pos++ = (u_char) ((val_len >> 16) & 0xff); + *e.pos++ = (u_char) ((val_len >> 8) & 0xff); + *e.pos++ = (u_char) (val_len & 0xff); - } else { - *e.pos++ = (u_char) val_len; - } + } else { + *e.pos++ = (u_char) val_len; } - e.skip = val_len ? 0 : 1; - while (*(uintptr_t *) e.ip) { code = *(ngx_http_script_code_pt *) e.ip; code((ngx_http_script_engine_t *) &e); diff --git a/src/http/modules/ngx_http_headers_filter_module.c b/src/http/modules/ngx_http_headers_filter_module.c index f27ab476d..91bebdc50 100644 --- a/src/http/modules/ngx_http_headers_filter_module.c +++ b/src/http/modules/ngx_http_headers_filter_module.c @@ -73,7 +73,7 @@ ngx_http_headers_filter(ngx_http_request_t *r) { size_t len; ngx_uint_t i; - ngx_table_elt_t *expires, *cc; + ngx_table_elt_t *expires, *cc, **ccp; ngx_http_headers_conf_t *conf; if (r->headers_out.status != NGX_HTTP_OK || r->main) { @@ -103,9 +103,20 @@ ngx_http_headers_filter(ngx_http_request_t *r) len = sizeof("Mon, 28 Sep 1970 06:00:00 GMT"); expires->value.len = len - 1; - cc = r->headers_out.cache_control.elts; + ccp = r->headers_out.cache_control.elts; - if (cc == NULL) { + if (ccp == NULL) { + + if (ngx_array_init(&r->headers_out.cache_control, r->pool, + 1, sizeof(ngx_table_elt_t *)) != NGX_OK) + { + return NGX_ERROR; + } + + ccp = ngx_array_push(&r->headers_out.cache_control); + if (ccp == NULL) { + return NGX_ERROR; + } cc = ngx_list_push(&r->headers_out.headers); if (cc == NULL) { @@ -116,10 +127,14 @@ ngx_http_headers_filter(ngx_http_request_t *r) cc->key.len = sizeof("Cache-Control") - 1; cc->key.data = (u_char *) "Cache-Control"; + *ccp = cc; + } else { for (i = 1; i < r->headers_out.cache_control.nelts; i++) { - cc[i].hash = 0; + ccp[i]->hash = 0; } + + cc = ccp[0]; } if (conf->expires == NGX_HTTP_EXPIRES_EPOCH) { |