Changeset e32c59
- Timestamp:
- 10/30/09 16:47:52 (3 years ago)
- Branches:
- master-v0.7, nginx-v0.7, nginx-v0.8
- Children:
- c8fce8
- Parents:
- 963ce7
- git-author:
- George Potapov <nephrite@…> (10/30/09 16:47:52)
- git-committer:
- George Potapov <nephrite@…> (10/30/09 16:47:52)
- Location:
- server
- Files:
-
- 23 edited
-
CHANGES (modified) (2 diffs)
-
CHANGES.ru (modified) (2 diffs)
-
auto/lib/openssl/conf (modified) (2 diffs)
-
auto/lib/openssl/make (modified) (2 diffs)
-
auto/options (modified) (1 diff)
-
auto/os/features (modified) (1 diff)
-
auto/unix (modified) (1 diff)
-
src/core/nginx.h (modified) (1 diff)
-
src/http/modules/ngx_http_charset_filter_module.c (modified) (1 diff)
-
src/http/modules/ngx_http_fastcgi_module.c (modified) (3 diffs)
-
src/http/modules/ngx_http_gzip_static_module.c (modified) (1 diff)
-
src/http/modules/ngx_http_image_filter_module.c (modified) (2 diffs)
-
src/http/modules/ngx_http_proxy_module.c (modified) (3 diffs)
-
src/http/modules/ngx_http_range_filter_module.c (modified) (2 diffs)
-
src/http/modules/ngx_http_xslt_filter_module.c (modified) (1 diff)
-
src/http/modules/perl/nginx.pm (modified) (1 diff)
-
src/http/ngx_http_core_module.c (modified) (3 diffs)
-
src/http/ngx_http_request.c (modified) (1 diff)
-
src/http/ngx_http_request.h (modified) (1 diff)
-
src/http/ngx_http_special_response.c (modified) (2 diffs)
-
src/http/ngx_http_upstream.c (modified) (4 diffs)
-
src/http/ngx_http_upstream.h (modified) (2 diffs)
-
src/http/ngx_http_variables.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
server/CHANGES
r963ce7 re32c59 1 2 Changes with nginx 0.7.59 25 May 2009 3 4 *) Feature: the "proxy_cache_methods" and "fastcgi_cache_methods" 5 directives. 6 7 *) Bugfix: socket leak; the bug had appeared in 0.7.25. 8 Thanks to Maxim Dounin. 9 10 *) Bugfix: a segmentation fault occurred in worker process, 11 if a request had no body and the $request_body variable was used; 12 the bug had appeared in 0.7.58. 13 14 *) Bugfix: the SSL modules might not built on Solaris and Linux; 15 the bug had appeared in 0.7.58. 16 17 *) Bugfix: ngx_http_xslt_filter_module responses were not handled by 18 SSI, charset, and gzip filters. 19 20 *) Bugfix: a "charset" directive did not set a charset to 21 ngx_http_gzip_static_module responses. 22 1 23 2 24 Changes with nginx 0.7.58 18 May 2009 … … 20 42 Changes with nginx 0.7.57 12 May 2009 21 43 22 *) Bugfix: a segmentationfault occurred in worker process, if the44 *) Bugfix: a floating-point fault occurred in worker process, if the 23 45 ngx_http_image_filter_module errors were redirected to named 24 46 location; the bug had appeared in 0.7.56. -
server/CHANGES.ru
r963ce7 re32c59 1 2 éÚÍÅÎÅÎÉÑ × nginx 0.7.59 25.05.2009 3 4 *) äÏÂÁ×ÌÅÎÉÅ: ÄÉÒÅËÔÉ×Ù proxy_cache_methods É fastcgi_cache_methods. 5 6 *) éÓÐÒÁ×ÌÅÎÉÅ: ÕÔÅÞËÉ ÓÏËÅÔÏ×; ÏÛÉÂËÁ ÐÏÑ×ÉÌÁÓØ × 0.7.25. 7 óÐÁÓÉÂÏ íÁËÓÉÍÕ äÕÎÉÎÕ. 8 9 *) éÓÐÒÁ×ÌÅÎÉÅ: ÐÒÉ ÉÓÐÏÌØÚÏ×ÁÎÉÉ ÐÅÒÅÍÅÎÎÏÊ $request_body × ÒÁÂÏÞÅÍ 10 ÐÒÏÃÅÓÓÅ ÐÒÏÉÓÈÏÄÉÌ segmentation fault, ÅÓÌÉ × ÚÁÐÒÏÓÅ ÎÅ ÂÙÌÏ ÔÅÌÁ; 11 ÏÛÉÂËÁ ÐÏÑ×ÉÌÁÓØ × 0.7.58. 12 13 *) éÓÐÒÁ×ÌÅÎÉÅ: SSL-ÍÏÄÕÌÉ ÍÏÇÌÉ ÎÅ ÓÏÂÉÒÁÔØÓÑ ÎÁ Solaris É Linux; 14 ÏÛÉÂËÁ ÐÏÑ×ÉÌÁÓØ × 0.7.56. 15 16 *) éÓÐÒÁ×ÌÅÎÉÅ: ÏÔ×ÅÔÙ ÍÏÄÕÌÑ ngx_http_xslt_filter_module ÎÅ 17 ÏÂÒÁÂÁÔÙ×ÁÌÉÓØ SSI-, charset- É gzip-ÆÉÌØÔÒÁÍÉ. 18 19 *) éÓÐÒÁ×ÌÅÎÉÅ: ÄÉÒÅËÔÉ×Á charset ÎÅ ÓÔÁ×ÉÌÁ ËÏÄÉÒÏ×ËÕ ÄÌÑ ÏÔ×ÅÔÏ× 20 ÍÏÄÕÌÑ ngx_http_gzip_static_module. 21 1 22 2 23 éÚÍÅÎÅÎÉÑ × nginx 0.7.58 18.05.2009 … … 1382 1403 open_file_cache_errors. 1383 1404 1384 *) éÓÐÒÁ×ÌÅÎÉÅ: ÕÔÅÞË ÁÓÏËÅÔÏ×; ÏÛÉÂËÁ ÐÏÑ×ÉÌÁÓØ × 0.6.7.1405 *) éÓÐÒÁ×ÌÅÎÉÅ: ÕÔÅÞËÉ ÓÏËÅÔÏ×; ÏÛÉÂËÁ ÐÏÑ×ÉÌÁÓØ × 0.6.7. 1385 1406 1386 1407 *) éÓÐÒÁ×ÌÅÎÉÅ: ÷ ÓÔÒÏËÕ ÚÁÇÏÌÏ×ËÁ ÏÔ×ÅÔÁ "Content-Type", ÕËÁÚÁÎÎÕÀ × -
server/auto/lib/openssl/conf
r963ce7 re32c59 26 26 have=NGX_SSL . auto/have 27 27 28 CORE_INCS="$CORE_INCS $OPENSSL/include" 29 LINK_DEPS="$LINK_DEPS $OPENSSL/libssl.a $OPENSSL/libcrypto.a" 30 CORE_LIBS="$CORE_LIBS $OPENSSL/libssl.a $OPENSSL/libcrypto.a" 31 ;; 32 esac 33 34 case "$NGX_SYSTEM" in 35 SunOS|Linux) 28 CORE_INCS="$CORE_INCS $OPENSSL/openssl/include" 29 CORE_DEPS="$CORE_DEPS $OPENSSL/openssl/include/openssl/ssl.h" 30 CORE_LIBS="$CORE_LIBS $OPENSSL/openssl/lib/libssl.a" 31 CORE_LIBS="$CORE_LIBS $OPENSSL/openssl/lib/libcrypto.a" 36 32 CORE_LIBS="$CORE_LIBS $NGX_LIBDL" 37 33 ;; 38 34 esac 39 40 35 41 36 else … … 70 65 if [ $ngx_found = yes ]; then 71 66 have=NGX_SSL . auto/have 72 CORE_LIBS="$CORE_LIBS $ngx_feature_libs "67 CORE_LIBS="$CORE_LIBS $ngx_feature_libs $NGX_LIBDL" 73 68 OPENSSL=YES 74 75 case "$NGX_SYSTEM" in76 SunOS)77 CORE_LIBS="$CORE_LIBS $NGX_LIBDL"78 ;;79 esac80 69 fi 81 70 ;; -
server/auto/lib/openssl/make
r963ce7 re32c59 3 3 4 4 5 if test -n "$OPENSSL_OPT"; then6 NGX_OPENSSL_CONFIG="./Configure $OPENSSL_OPT"7 else8 NGX_OPENSSL_CONFIG="./config"9 fi10 11 5 case $USE_THREADS in 12 NO) NGX_OPENSSL_CONFIG="$NGX_OPENSSL_CONFIGno-threads" ;;13 *) NGX_OPENSSL_CONFIG="$NGX_OPENSSL_CONFIGthreads" ;;6 NO) OPENSSL_OPT="$OPENSSL_OPT no-threads" ;; 7 *) OPENSSL_OPT="$OPENSSL_OPT threads" ;; 14 8 esac 15 9 … … 52 46 53 47 *) 48 case $OPENSSL in 49 50 /*) 51 ngx_prefix="$OPENSSL/openssl" 52 ;; 53 54 *) 55 ngx_prefix="$PWD/$OPENSSL/openssl" 56 ;; 57 58 esac 59 54 60 cat << END >> $NGX_MAKEFILE 55 61 56 $OPENSSL/ libssl.a: $NGX_MAKEFILE62 $OPENSSL/openssl/include/openssl/ssl.h: $NGX_MAKEFILE 57 63 cd $OPENSSL \\ 58 64 && \$(MAKE) clean \\ 59 && $NGX_OPENSSL_CONFIG no-shared \\ 60 && \$(MAKE) 65 && ./config --prefix=$ngx_prefix no-shared $OPENSSL_OPT \\ 66 && \$(MAKE) \\ 67 && \$(MAKE) install 61 68 62 69 END -
server/auto/options
r148513 re32c59 136 136 for option 137 137 do 138 opt="$opt `echo $option | sed -e \"s/\(--[^=]*=\)\(.* .*\)/\1'\2'/\"`"138 opt="$opt `echo $option | sed -e \"s/\(--[^=]*=\)\(.* .*\)/\1'\2'/\"`" 139 139 140 140 case "$option" in -
server/auto/os/features
re61f2d re32c59 231 231 statvfs(NULL, &fs);" 232 232 . auto/feature 233 234 235 ngx_feature="dlopen()" 236 ngx_feature_name= 237 ngx_feature_run=no 238 ngx_feature_incs="#include <dlfcn.h>" 239 ngx_feature_path= 240 ngx_feature_libs= 241 ngx_feature_test="dlopen(NULL, 0)" 242 . auto/feature 243 244 245 if [ $ngx_found != yes ]; then 246 247 ngx_feature="dlopen() in libdl" 248 ngx_feature_libs="-ldl" 249 . auto/feature 250 251 if [ $ngx_found = yes ]; then 252 NGX_LIBDL="-ldl" 253 fi 254 fi -
server/auto/unix
re4af63 re32c59 186 186 187 187 188 ngx_feature="dlopen()"189 ngx_feature_name=190 ngx_feature_run=no191 ngx_feature_incs="#include <dlfcn.h>"192 ngx_feature_path=193 ngx_feature_libs=194 ngx_feature_test="dlopen(NULL, 0)"195 . auto/feature196 197 198 if [ $ngx_found != yes ]; then199 200 ngx_feature="dlopen() in libdl"201 ngx_feature_libs="-ldl"202 . auto/feature203 204 if [ $ngx_found = yes ]; then205 NGX_LIBDL="-ldl"206 fi207 fi208 209 210 188 ngx_feature="mmap(MAP_ANON|MAP_SHARED)" 211 189 ngx_feature_name="NGX_HAVE_MAP_ANON" -
server/src/core/nginx.h
r963ce7 re32c59 9 9 10 10 11 #define nginx_version 705 812 #define NGINX_VERSION "0.7.5 8"11 #define nginx_version 7059 12 #define NGINX_VERSION "0.7.59" 13 13 #define NGINX_VER "nginx/" NGINX_VERSION 14 14 -
server/src/http/modules/ngx_http_charset_filter_module.c
r49bd83 re32c59 225 225 if (r == r->main) { 226 226 227 if (r->headers_out.content_encoding 227 if (!r->ignore_content_encoding 228 && r->headers_out.content_encoding 228 229 && r->headers_out.content_encoding->value.len) 229 230 { -
server/src/http/modules/ngx_http_fastcgi_module.c
r307b13 re32c59 353 353 offsetof(ngx_http_fastcgi_loc_conf_t, upstream.cache_use_stale), 354 354 &ngx_http_fastcgi_next_upstream_masks }, 355 356 { ngx_string("fastcgi_cache_methods"), 357 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_1MORE, 358 ngx_conf_set_bitmask_slot, 359 NGX_HTTP_LOC_CONF_OFFSET, 360 offsetof(ngx_http_fastcgi_loc_conf_t, upstream.cache_methods), 361 &ngx_http_upstream_cache_method_mask }, 355 362 356 363 #endif … … 1836 1843 * conf->upstream.ignore_headers = 0; 1837 1844 * conf->upstream.next_upstream = 0; 1838 * conf->upstream.use_stale_cache = 0; 1845 * conf->upstream.cache_use_stale = 0; 1846 * conf->upstream.cache_methods = 0; 1839 1847 * conf->upstream.temp_path = NULL; 1840 1848 * conf->upstream.hide_headers_hash = { NULL, 0 }; … … 2084 2092 } 2085 2093 2094 if (conf->upstream.cache_methods == 0) { 2095 conf->upstream.cache_methods = prev->upstream.cache_methods; 2096 } 2097 2098 conf->upstream.cache_methods |= NGX_HTTP_GET|NGX_HTTP_HEAD; 2099 2086 2100 ngx_conf_merge_ptr_value(conf->upstream.cache_valid, 2087 2101 prev->upstream.cache_valid, NULL); -
server/src/http/modules/ngx_http_gzip_static_module.c
r6275fd re32c59 206 206 207 207 r->headers_out.content_encoding = h; 208 r->ignore_content_encoding = 1; 208 209 209 210 /* we need to allocate all before the header would be sent */ -
server/src/http/modules/ngx_http_image_filter_module.c
r963ce7 re32c59 283 283 r->headers_out.content_type_len = ct->len; 284 284 r->headers_out.content_type = *ct; 285 r->headers_out.content_type_lowcase = NULL; 285 286 286 287 if (conf->filter == NGX_HTTP_IMAGE_TEST) { … … 503 504 r->headers_out.content_type.len = sizeof("text/plain") - 1; 504 505 r->headers_out.content_type.data = (u_char *) "text/plain"; 506 r->headers_out.content_type_lowcase = NULL; 505 507 506 508 if (ctx == NULL) { -
server/src/http/modules/ngx_http_proxy_module.c
r307b13 re32c59 377 377 offsetof(ngx_http_proxy_loc_conf_t, upstream.cache_use_stale), 378 378 &ngx_http_proxy_next_upstream_masks }, 379 380 { ngx_string("proxy_cache_methods"), 381 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_1MORE, 382 ngx_conf_set_bitmask_slot, 383 NGX_HTTP_LOC_CONF_OFFSET, 384 offsetof(ngx_http_proxy_loc_conf_t, upstream.cache_methods), 385 &ngx_http_upstream_cache_method_mask }, 379 386 380 387 #endif … … 1886 1893 * conf->upstream.ignore_headers = 0; 1887 1894 * conf->upstream.next_upstream = 0; 1888 * conf->upstream.use_stale_cache = 0; 1895 * conf->upstream.cache_use_stale = 0; 1896 * conf->upstream.cache_methods = 0; 1889 1897 * conf->upstream.temp_path = NULL; 1890 1898 * conf->upstream.hide_headers_hash = { NULL, 0 }; … … 2140 2148 |NGX_HTTP_UPSTREAM_FT_OFF)); 2141 2149 2150 if (conf->upstream.cache_methods == 0) { 2151 conf->upstream.cache_methods = prev->upstream.cache_methods; 2152 } 2153 2154 conf->upstream.cache_methods |= NGX_HTTP_GET|NGX_HTTP_HEAD; 2155 2142 2156 if (conf->upstream.cache_use_stale & NGX_HTTP_UPSTREAM_FT_OFF) { 2143 2157 conf->upstream.cache_use_stale = NGX_CONF_BITMASK_SET -
server/src/http/modules/ngx_http_range_filter_module.c
rcbed21 re32c59 457 457 } 458 458 459 r->headers_out.content_type_lowcase = NULL; 460 459 461 /* "Content-Type: multipart/byteranges; boundary=0123456789" */ 460 462 … … 465 467 - r->headers_out.content_type.data; 466 468 469 r->headers_out.content_type_len = r->headers_out.content_type.len; 467 470 468 471 /* the size of the last boundary CRLF "--0123456789--" CRLF */ -
server/src/http/modules/ngx_http_xslt_filter_module.c
re4af63 re32c59 838 838 } 839 839 840 r->headers_out.content_type_lowcase = NULL; 841 840 842 return b; 841 843 } -
server/src/http/modules/perl/nginx.pm
r963ce7 re32c59 48 48 ); 49 49 50 our $VERSION = '0.7.5 8';50 our $VERSION = '0.7.59'; 51 51 52 52 require XSLoader; -
server/src/http/ngx_http_core_module.c
r963ce7 re32c59 1531 1531 ngx_http_test_content_type(ngx_http_request_t *r, ngx_hash_t *types_hash) 1532 1532 { 1533 u_char c, *p; 1534 ngx_uint_t i, hash; 1533 u_char c, *lowcase; 1534 size_t len; 1535 ngx_uint_t i, hash; 1535 1536 1536 1537 if (r->headers_out.content_type.len == 0) { … … 1538 1539 } 1539 1540 1541 len = r->headers_out.content_type_len; 1542 1540 1543 if (r->headers_out.content_type_lowcase == NULL) { 1541 1544 1542 p = ngx_pnalloc(r->pool, r->headers_out.content_type_len); 1543 1544 if (p == NULL) { 1545 lowcase = ngx_pnalloc(r->pool, len); 1546 if (lowcase == NULL) { 1545 1547 return NULL; 1546 1548 } 1547 1549 1548 r->headers_out.content_type_lowcase = p;1550 r->headers_out.content_type_lowcase = lowcase; 1549 1551 1550 1552 hash = 0; 1551 1553 1552 for (i = 0; i < r->headers_out.content_type_len; i++) {1554 for (i = 0; i < len; i++) { 1553 1555 c = ngx_tolower(r->headers_out.content_type.data[i]); 1554 1556 hash = ngx_hash(hash, c); 1555 *p++= c;1557 lowcase[i] = c; 1556 1558 } 1557 1559 … … 1559 1561 } 1560 1562 1561 return ngx_hash_find(types_hash, 1562 r->headers_out.content_type_hash, 1563 r->headers_out.content_type_lowcase, 1564 r->headers_out.content_type_len); 1563 return ngx_hash_find(types_hash, r->headers_out.content_type_hash, 1564 r->headers_out.content_type_lowcase, len); 1565 1565 } 1566 1566 -
server/src/http/ngx_http_request.c
r963ce7 re32c59 2099 2099 rc, &r->uri, &r->args); 2100 2100 2101 if (rc == NGX_ERROR) { 2102 ngx_http_finalize_request(r, rc); 2103 return; 2104 } 2105 2101 2106 if (r->buffered || r->postponed || (r == r->main && c->buffered)) { 2102 2107 -
server/src/http/ngx_http_request.h
re4af63 re32c59 479 479 unsigned internal:1; 480 480 unsigned error_page:1; 481 unsigned ignore_content_encoding:1; 481 482 unsigned filter_finalize:1; 482 483 unsigned post_action:1; -
server/src/http/ngx_http_special_response.c
re4af63 re32c59 611 611 r->headers_out.content_type.len = sizeof("text/html") - 1; 612 612 r->headers_out.content_type.data = (u_char *) "text/html"; 613 r->headers_out.content_type_lowcase = NULL; 613 614 614 615 } else { … … 713 714 r->headers_out.content_type.len = sizeof("text/html") - 1; 714 715 r->headers_out.content_type.data = (u_char *) "text/html"; 716 r->headers_out.content_type_lowcase = NULL; 715 717 716 718 r->headers_out.location->hash = 0; -
server/src/http/ngx_http_upstream.c
r963ce7 re32c59 330 330 }; 331 331 332 333 ngx_conf_bitmask_t ngx_http_upstream_cache_method_mask[] = { 334 { ngx_string("GET"), NGX_HTTP_GET}, 335 { ngx_string("HEAD"), NGX_HTTP_HEAD }, 336 { ngx_string("POST"), NGX_HTTP_POST }, 337 { ngx_null_string, 0 } 338 }; 339 340 332 341 void 333 342 ngx_http_upstream_init(ngx_http_request_t *r) … … 533 542 ngx_http_cache_t *c; 534 543 535 if (!(r->method & (NGX_HTTP_GET|NGX_HTTP_HEAD))) {544 if (!(r->method & u->conf->cache_methods)) { 536 545 return NGX_DECLINED; 537 546 } … … 563 572 u->cacheable = 1; 564 573 565 c->min_uses = r->upstream->conf->cache_min_uses;566 c->body_start = r->upstream->conf->buffer_size;574 c->min_uses = u->conf->cache_min_uses; 575 c->body_start = u->conf->buffer_size; 567 576 c->file_cache = u->conf->cache->data; 568 577 … … 3166 3175 r->headers_out.content_type_len = h->value.len; 3167 3176 r->headers_out.content_type = h->value; 3177 r->headers_out.content_type_lowcase = NULL; 3168 3178 3169 3179 for (p = h->value.data; *p; p++) { -
server/src/http/ngx_http_upstream.h
r307b13 re32c59 157 157 ngx_uint_t cache_min_uses; 158 158 ngx_uint_t cache_use_stale; 159 ngx_uint_t cache_methods; 159 160 160 161 ngx_array_t *cache_valid; … … 328 329 329 330 330 extern ngx_module_t ngx_http_upstream_module; 331 extern ngx_module_t ngx_http_upstream_module; 332 extern ngx_conf_bitmask_t ngx_http_upstream_cache_method_mask[]; 333 331 334 332 335 -
server/src/http/ngx_http_variables.c
r963ce7 re32c59 1493 1493 ngx_chain_t *cl; 1494 1494 1495 if (r->request_body == NULL || r->request_body->temp_file) { 1495 if (r->request_body == NULL 1496 || r->request_body->bufs == NULL 1497 || r->request_body->temp_file) 1498 { 1496 1499 v->not_found = 1; 1497 1500
Note: See TracChangeset
for help on using the changeset viewer.
