comparison src/http/ngx_http_core_module.c @ 502:89dc5654117c NGINX_0_7_63

nginx 0.7.63 *) Security: now "/../" are disabled in "Destination" request header line. *) Change: minimum supported OpenSSL version is 0.9.7. *) Change: the "ask" parameter of the "ssl_verify_client" directive was changed to the "optional" parameter and now it checks a client certificate if it was offered. Thanks to Brice Figureau. *) Feature: now the "-V" switch shows TLS SNI support. *) Feature: the $ssl_client_verify variable. Thanks to Brice Figureau. *) Feature: the "ssl_crl" directive. Thanks to Brice Figureau. *) Bugfix: the $ssl_client_cert variable usage corrupted memory; the bug had appeared in 0.7.7. Thanks to Sergey Zhuravlev. *) Feature: now the start cache loader runs in a separate process; this should improve large caches handling. *) Feature: now temporary files and permanent storage area may reside at different file systems. *) Bugfix: nginx counted incorrectly disk cache size. *) Change: now directive "gzip_disable msie6" does not disable gzipping for MSIE 6.0 SV1. *) Bugfix: nginx always added "Vary: Accept-Encoding" response header line, if both "gzip_static" and "gzip_vary" were on. *) Feature: the "proxy" parameter of the "geo" directive. *) Feature: the ngx_http_geoip_module. *) Feature: the "limit_rate_after" directive. Thanks to Ivan Debnar. *) Feature: the "limit_req_log_level" and "limit_conn_log_level" directives. *) Bugfix: now "limit_req" directive conforms to the leaky bucket algorithm. Thanks to Maxim Dounin. *) Bugfix: in ngx_http_limit_req_module. Thanks to Maxim Dounin. *) Bugfix: now nginx allows underscores in a request method. *) Bugfix: "proxy_pass_header" and "fastcgi_pass_header" directives did not pass to a client the "X-Accel-Redirect", "X-Accel-Limit-Rate", "X-Accel-Buffering", and "X-Accel-Charset" lines from backend response header. Thanks to Maxim Dounin. *) Bugfix: in handling "Last-Modified" and "Accept-Ranges" backend response header lines; the bug had appeared in 0.7.44. Thanks to Maxim Dounin. *) Feature: the "image_filter_transparency" directive. *) Feature: the "image_filter" directive supports variables for setting size. *) Bugfix: in PNG alpha-channel support in the ngx_http_image_filter_module. *) Bugfix: in transparency support in the ngx_http_image_filter_module. *) Feature: now several "perl_modules" directives may be used. *) Bugfix: ngx_http_perl_module responses did not work in subrequests. *) Bugfix: nginx sent '\0' in a "Location" response header line on MKCOL request. Thanks to Xie Zhenye. *) Bugfix: an "error_page" directive did not redirect a 413 error; the bug had appeared in 0.6.10. *) Bugfix: in memory allocation error handling. Thanks to Maxim Dounin and Kirill A. Korinskiy.
author Igor Sysoev <http://sysoev.ru>
date Mon, 26 Oct 2009 00:00:00 +0300
parents ed3d382670c7
children 706fef7f4dcc
comparison
equal deleted inserted replaced
501:dc87c92181c7 502:89dc5654117c
431 ngx_conf_set_size_slot, 431 ngx_conf_set_size_slot,
432 NGX_HTTP_LOC_CONF_OFFSET, 432 NGX_HTTP_LOC_CONF_OFFSET,
433 offsetof(ngx_http_core_loc_conf_t, limit_rate), 433 offsetof(ngx_http_core_loc_conf_t, limit_rate),
434 NULL }, 434 NULL },
435 435
436 { ngx_string("limit_rate_after"),
437 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF
438 |NGX_CONF_TAKE1,
439 ngx_conf_set_size_slot,
440 NGX_HTTP_LOC_CONF_OFFSET,
441 offsetof(ngx_http_core_loc_conf_t, limit_rate_after),
442 NULL },
443
436 { ngx_string("keepalive_timeout"), 444 { ngx_string("keepalive_timeout"),
437 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE12, 445 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE12,
438 ngx_http_core_keepalive, 446 ngx_http_core_keepalive,
439 NGX_HTTP_LOC_CONF_OFFSET, 447 NGX_HTTP_LOC_CONF_OFFSET,
440 0, 448 0,
875 { 883 {
876 ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, 884 ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,
877 "client intended to send too large body: %O bytes", 885 "client intended to send too large body: %O bytes",
878 r->headers_in.content_length_n); 886 r->headers_in.content_length_n);
879 887
888 (void) ngx_http_discard_request_body(r);
880 ngx_http_finalize_request(r, NGX_HTTP_REQUEST_ENTITY_TOO_LARGE); 889 ngx_http_finalize_request(r, NGX_HTTP_REQUEST_ENTITY_TOO_LARGE);
881 return NGX_OK; 890 return NGX_OK;
882 } 891 }
883 892
884 if (rc == NGX_DONE) { 893 if (rc == NGX_DONE) {
2689 { 2698 {
2690 ngx_http_core_main_conf_t *cmcf; 2699 ngx_http_core_main_conf_t *cmcf;
2691 2700
2692 cmcf = ngx_pcalloc(cf->pool, sizeof(ngx_http_core_main_conf_t)); 2701 cmcf = ngx_pcalloc(cf->pool, sizeof(ngx_http_core_main_conf_t));
2693 if (cmcf == NULL) { 2702 if (cmcf == NULL) {
2694 return NGX_CONF_ERROR; 2703 return NULL;
2695 } 2704 }
2696 2705
2697 if (ngx_array_init(&cmcf->servers, cf->pool, 4, 2706 if (ngx_array_init(&cmcf->servers, cf->pool, 4,
2698 sizeof(ngx_http_core_srv_conf_t *)) 2707 sizeof(ngx_http_core_srv_conf_t *))
2699 != NGX_OK) 2708 != NGX_OK)
2700 { 2709 {
2701 return NGX_CONF_ERROR; 2710 return NULL;
2702 } 2711 }
2703 2712
2704 cmcf->server_names_hash_max_size = NGX_CONF_UNSET_UINT; 2713 cmcf->server_names_hash_max_size = NGX_CONF_UNSET_UINT;
2705 cmcf->server_names_hash_bucket_size = NGX_CONF_UNSET_UINT; 2714 cmcf->server_names_hash_bucket_size = NGX_CONF_UNSET_UINT;
2706 2715
2748 { 2757 {
2749 ngx_http_core_srv_conf_t *cscf; 2758 ngx_http_core_srv_conf_t *cscf;
2750 2759
2751 cscf = ngx_pcalloc(cf->pool, sizeof(ngx_http_core_srv_conf_t)); 2760 cscf = ngx_pcalloc(cf->pool, sizeof(ngx_http_core_srv_conf_t));
2752 if (cscf == NULL) { 2761 if (cscf == NULL) {
2753 return NGX_CONF_ERROR; 2762 return NULL;
2754 } 2763 }
2755 2764
2756 /* 2765 /*
2757 * set by ngx_pcalloc(): 2766 * set by ngx_pcalloc():
2758 * 2767 *
2761 2770
2762 if (ngx_array_init(&cscf->listen, cf->temp_pool, 4, 2771 if (ngx_array_init(&cscf->listen, cf->temp_pool, 4,
2763 sizeof(ngx_http_listen_t)) 2772 sizeof(ngx_http_listen_t))
2764 != NGX_OK) 2773 != NGX_OK)
2765 { 2774 {
2766 return NGX_CONF_ERROR; 2775 return NULL;
2767 } 2776 }
2768 2777
2769 if (ngx_array_init(&cscf->server_names, cf->temp_pool, 4, 2778 if (ngx_array_init(&cscf->server_names, cf->temp_pool, 4,
2770 sizeof(ngx_http_server_name_t)) 2779 sizeof(ngx_http_server_name_t))
2771 != NGX_OK) 2780 != NGX_OK)
2772 { 2781 {
2773 return NGX_CONF_ERROR; 2782 return NULL;
2774 } 2783 }
2775 2784
2776 cscf->connection_pool_size = NGX_CONF_UNSET_SIZE; 2785 cscf->connection_pool_size = NGX_CONF_UNSET_SIZE;
2777 cscf->request_pool_size = NGX_CONF_UNSET_SIZE; 2786 cscf->request_pool_size = NGX_CONF_UNSET_SIZE;
2778 cscf->client_header_timeout = NGX_CONF_UNSET_MSEC; 2787 cscf->client_header_timeout = NGX_CONF_UNSET_MSEC;
2879 { 2888 {
2880 ngx_http_core_loc_conf_t *lcf; 2889 ngx_http_core_loc_conf_t *lcf;
2881 2890
2882 lcf = ngx_pcalloc(cf->pool, sizeof(ngx_http_core_loc_conf_t)); 2891 lcf = ngx_pcalloc(cf->pool, sizeof(ngx_http_core_loc_conf_t));
2883 if (lcf == NULL) { 2892 if (lcf == NULL) {
2884 return NGX_CONF_ERROR; 2893 return NULL;
2885 } 2894 }
2886 2895
2887 /* 2896 /*
2888 * set by ngx_pcalloc(): 2897 * set by ngx_pcalloc():
2889 * 2898 *
2918 lcf->tcp_nodelay = NGX_CONF_UNSET; 2927 lcf->tcp_nodelay = NGX_CONF_UNSET;
2919 lcf->send_timeout = NGX_CONF_UNSET_MSEC; 2928 lcf->send_timeout = NGX_CONF_UNSET_MSEC;
2920 lcf->send_lowat = NGX_CONF_UNSET_SIZE; 2929 lcf->send_lowat = NGX_CONF_UNSET_SIZE;
2921 lcf->postpone_output = NGX_CONF_UNSET_SIZE; 2930 lcf->postpone_output = NGX_CONF_UNSET_SIZE;
2922 lcf->limit_rate = NGX_CONF_UNSET_SIZE; 2931 lcf->limit_rate = NGX_CONF_UNSET_SIZE;
2932 lcf->limit_rate_after = NGX_CONF_UNSET_SIZE;
2923 lcf->keepalive_timeout = NGX_CONF_UNSET_MSEC; 2933 lcf->keepalive_timeout = NGX_CONF_UNSET_MSEC;
2924 lcf->keepalive_header = NGX_CONF_UNSET; 2934 lcf->keepalive_header = NGX_CONF_UNSET;
2925 lcf->keepalive_requests = NGX_CONF_UNSET_UINT; 2935 lcf->keepalive_requests = NGX_CONF_UNSET_UINT;
2926 lcf->lingering_time = NGX_CONF_UNSET_MSEC; 2936 lcf->lingering_time = NGX_CONF_UNSET_MSEC;
2927 lcf->lingering_timeout = NGX_CONF_UNSET_MSEC; 2937 lcf->lingering_timeout = NGX_CONF_UNSET_MSEC;
3117 ngx_conf_merge_msec_value(conf->send_timeout, prev->send_timeout, 60000); 3127 ngx_conf_merge_msec_value(conf->send_timeout, prev->send_timeout, 60000);
3118 ngx_conf_merge_size_value(conf->send_lowat, prev->send_lowat, 0); 3128 ngx_conf_merge_size_value(conf->send_lowat, prev->send_lowat, 0);
3119 ngx_conf_merge_size_value(conf->postpone_output, prev->postpone_output, 3129 ngx_conf_merge_size_value(conf->postpone_output, prev->postpone_output,
3120 1460); 3130 1460);
3121 ngx_conf_merge_size_value(conf->limit_rate, prev->limit_rate, 0); 3131 ngx_conf_merge_size_value(conf->limit_rate, prev->limit_rate, 0);
3132 ngx_conf_merge_size_value(conf->limit_rate_after, prev->limit_rate_after,
3133 0);
3122 ngx_conf_merge_msec_value(conf->keepalive_timeout, 3134 ngx_conf_merge_msec_value(conf->keepalive_timeout,
3123 prev->keepalive_timeout, 75000); 3135 prev->keepalive_timeout, 75000);
3124 ngx_conf_merge_sec_value(conf->keepalive_header, 3136 ngx_conf_merge_sec_value(conf->keepalive_header,
3125 prev->keepalive_header, 0); 3137 prev->keepalive_header, 0);
3126 ngx_conf_merge_uint_value(conf->keepalive_requests, 3138 ngx_conf_merge_uint_value(conf->keepalive_requests,