Mercurial > hg > nginx-vendor-current
comparison src/http/ngx_http_core_module.c @ 496:f39b9e29530d NGINX_0_8_0
nginx 0.8.0
*) Feature: the "keepalive_requests" directive.
*) Feature: the "limit_rate_after" directive.
Thanks to Ivan Debnar.
*) Bugfix: XLST filter did not work in subrequests.
*) Bugfix: in relative paths handling in nginx/Windows.
*) Bugfix: in proxy_store, fastcgi_store, proxy_cache, and
fastcgi_cache in nginx/Windows.
*) Bugfix: in memory allocation error handling.
Thanks to Maxim Dounin and Kirill A. Korinskiy.
author | Igor Sysoev <http://sysoev.ru> |
---|---|
date | Tue, 02 Jun 2009 00:00:00 +0400 |
parents | 499474178a11 |
children | 4b0d7f0bf22b |
comparison
equal
deleted
inserted
replaced
495:6d9fb4461113 | 496:f39b9e29530d |
---|---|
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, |
449 NULL }, | |
450 | |
451 { ngx_string("keepalive_requests"), | |
452 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, | |
453 ngx_conf_set_num_slot, | |
454 NGX_HTTP_LOC_CONF_OFFSET, | |
455 offsetof(ngx_http_core_loc_conf_t, keepalive_requests), | |
441 NULL }, | 456 NULL }, |
442 | 457 |
443 { ngx_string("satisfy"), | 458 { ngx_string("satisfy"), |
444 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, | 459 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1, |
445 ngx_conf_set_enum_slot, | 460 ngx_conf_set_enum_slot, |
1324 r->request_body_file_log_level = NGX_LOG_WARN; | 1339 r->request_body_file_log_level = NGX_LOG_WARN; |
1325 } | 1340 } |
1326 | 1341 |
1327 r->request_body_in_single_buf = clcf->client_body_in_single_buffer; | 1342 r->request_body_in_single_buf = clcf->client_body_in_single_buffer; |
1328 | 1343 |
1329 if (r->keepalive && clcf->keepalive_timeout == 0) { | 1344 if (r->keepalive) { |
1330 r->keepalive = 0; | 1345 if (clcf->keepalive_timeout == 0) { |
1346 r->keepalive = 0; | |
1347 | |
1348 } else if (r->connection->requests >= clcf->keepalive_requests) { | |
1349 r->keepalive = 0; | |
1350 } | |
1331 } | 1351 } |
1332 | 1352 |
1333 if (!clcf->tcp_nopush) { | 1353 if (!clcf->tcp_nopush) { |
1334 /* disable TCP_NOPUSH/TCP_CORK use */ | 1354 /* disable TCP_NOPUSH/TCP_CORK use */ |
1335 r->connection->tcp_nopush = NGX_TCP_NOPUSH_DISABLED; | 1355 r->connection->tcp_nopush = NGX_TCP_NOPUSH_DISABLED; |
2681 { | 2701 { |
2682 ngx_http_core_main_conf_t *cmcf; | 2702 ngx_http_core_main_conf_t *cmcf; |
2683 | 2703 |
2684 cmcf = ngx_pcalloc(cf->pool, sizeof(ngx_http_core_main_conf_t)); | 2704 cmcf = ngx_pcalloc(cf->pool, sizeof(ngx_http_core_main_conf_t)); |
2685 if (cmcf == NULL) { | 2705 if (cmcf == NULL) { |
2686 return NGX_CONF_ERROR; | 2706 return NULL; |
2687 } | 2707 } |
2688 | 2708 |
2689 if (ngx_array_init(&cmcf->servers, cf->pool, 4, | 2709 if (ngx_array_init(&cmcf->servers, cf->pool, 4, |
2690 sizeof(ngx_http_core_srv_conf_t *)) | 2710 sizeof(ngx_http_core_srv_conf_t *)) |
2691 != NGX_OK) | 2711 != NGX_OK) |
2692 { | 2712 { |
2693 return NGX_CONF_ERROR; | 2713 return NULL; |
2694 } | 2714 } |
2695 | 2715 |
2696 cmcf->server_names_hash_max_size = NGX_CONF_UNSET_UINT; | 2716 cmcf->server_names_hash_max_size = NGX_CONF_UNSET_UINT; |
2697 cmcf->server_names_hash_bucket_size = NGX_CONF_UNSET_UINT; | 2717 cmcf->server_names_hash_bucket_size = NGX_CONF_UNSET_UINT; |
2698 | 2718 |
2740 { | 2760 { |
2741 ngx_http_core_srv_conf_t *cscf; | 2761 ngx_http_core_srv_conf_t *cscf; |
2742 | 2762 |
2743 cscf = ngx_pcalloc(cf->pool, sizeof(ngx_http_core_srv_conf_t)); | 2763 cscf = ngx_pcalloc(cf->pool, sizeof(ngx_http_core_srv_conf_t)); |
2744 if (cscf == NULL) { | 2764 if (cscf == NULL) { |
2745 return NGX_CONF_ERROR; | 2765 return NULL; |
2746 } | 2766 } |
2747 | 2767 |
2748 /* | 2768 /* |
2749 * set by ngx_pcalloc(): | 2769 * set by ngx_pcalloc(): |
2750 * | 2770 * |
2753 | 2773 |
2754 if (ngx_array_init(&cscf->listen, cf->temp_pool, 4, | 2774 if (ngx_array_init(&cscf->listen, cf->temp_pool, 4, |
2755 sizeof(ngx_http_listen_t)) | 2775 sizeof(ngx_http_listen_t)) |
2756 != NGX_OK) | 2776 != NGX_OK) |
2757 { | 2777 { |
2758 return NGX_CONF_ERROR; | 2778 return NULL; |
2759 } | 2779 } |
2760 | 2780 |
2761 if (ngx_array_init(&cscf->server_names, cf->temp_pool, 4, | 2781 if (ngx_array_init(&cscf->server_names, cf->temp_pool, 4, |
2762 sizeof(ngx_http_server_name_t)) | 2782 sizeof(ngx_http_server_name_t)) |
2763 != NGX_OK) | 2783 != NGX_OK) |
2764 { | 2784 { |
2765 return NGX_CONF_ERROR; | 2785 return NULL; |
2766 } | 2786 } |
2767 | 2787 |
2768 cscf->connection_pool_size = NGX_CONF_UNSET_SIZE; | 2788 cscf->connection_pool_size = NGX_CONF_UNSET_SIZE; |
2769 cscf->request_pool_size = NGX_CONF_UNSET_SIZE; | 2789 cscf->request_pool_size = NGX_CONF_UNSET_SIZE; |
2770 cscf->client_header_timeout = NGX_CONF_UNSET_MSEC; | 2790 cscf->client_header_timeout = NGX_CONF_UNSET_MSEC; |
2871 { | 2891 { |
2872 ngx_http_core_loc_conf_t *lcf; | 2892 ngx_http_core_loc_conf_t *lcf; |
2873 | 2893 |
2874 lcf = ngx_pcalloc(cf->pool, sizeof(ngx_http_core_loc_conf_t)); | 2894 lcf = ngx_pcalloc(cf->pool, sizeof(ngx_http_core_loc_conf_t)); |
2875 if (lcf == NULL) { | 2895 if (lcf == NULL) { |
2876 return NGX_CONF_ERROR; | 2896 return NULL; |
2877 } | 2897 } |
2878 | 2898 |
2879 /* | 2899 /* |
2880 * set by ngx_pcalloc(): | 2900 * set by ngx_pcalloc(): |
2881 * | 2901 * |
2910 lcf->tcp_nodelay = NGX_CONF_UNSET; | 2930 lcf->tcp_nodelay = NGX_CONF_UNSET; |
2911 lcf->send_timeout = NGX_CONF_UNSET_MSEC; | 2931 lcf->send_timeout = NGX_CONF_UNSET_MSEC; |
2912 lcf->send_lowat = NGX_CONF_UNSET_SIZE; | 2932 lcf->send_lowat = NGX_CONF_UNSET_SIZE; |
2913 lcf->postpone_output = NGX_CONF_UNSET_SIZE; | 2933 lcf->postpone_output = NGX_CONF_UNSET_SIZE; |
2914 lcf->limit_rate = NGX_CONF_UNSET_SIZE; | 2934 lcf->limit_rate = NGX_CONF_UNSET_SIZE; |
2935 lcf->limit_rate_after = NGX_CONF_UNSET_SIZE; | |
2915 lcf->keepalive_timeout = NGX_CONF_UNSET_MSEC; | 2936 lcf->keepalive_timeout = NGX_CONF_UNSET_MSEC; |
2916 lcf->keepalive_header = NGX_CONF_UNSET; | 2937 lcf->keepalive_header = NGX_CONF_UNSET; |
2938 lcf->keepalive_requests = NGX_CONF_UNSET_UINT; | |
2917 lcf->lingering_time = NGX_CONF_UNSET_MSEC; | 2939 lcf->lingering_time = NGX_CONF_UNSET_MSEC; |
2918 lcf->lingering_timeout = NGX_CONF_UNSET_MSEC; | 2940 lcf->lingering_timeout = NGX_CONF_UNSET_MSEC; |
2919 lcf->resolver_timeout = NGX_CONF_UNSET_MSEC; | 2941 lcf->resolver_timeout = NGX_CONF_UNSET_MSEC; |
2920 lcf->reset_timedout_connection = NGX_CONF_UNSET; | 2942 lcf->reset_timedout_connection = NGX_CONF_UNSET; |
2921 lcf->server_name_in_redirect = NGX_CONF_UNSET; | 2943 lcf->server_name_in_redirect = NGX_CONF_UNSET; |
3108 ngx_conf_merge_msec_value(conf->send_timeout, prev->send_timeout, 60000); | 3130 ngx_conf_merge_msec_value(conf->send_timeout, prev->send_timeout, 60000); |
3109 ngx_conf_merge_size_value(conf->send_lowat, prev->send_lowat, 0); | 3131 ngx_conf_merge_size_value(conf->send_lowat, prev->send_lowat, 0); |
3110 ngx_conf_merge_size_value(conf->postpone_output, prev->postpone_output, | 3132 ngx_conf_merge_size_value(conf->postpone_output, prev->postpone_output, |
3111 1460); | 3133 1460); |
3112 ngx_conf_merge_size_value(conf->limit_rate, prev->limit_rate, 0); | 3134 ngx_conf_merge_size_value(conf->limit_rate, prev->limit_rate, 0); |
3135 ngx_conf_merge_size_value(conf->limit_rate_after, prev->limit_rate_after, | |
3136 0); | |
3113 ngx_conf_merge_msec_value(conf->keepalive_timeout, | 3137 ngx_conf_merge_msec_value(conf->keepalive_timeout, |
3114 prev->keepalive_timeout, 75000); | 3138 prev->keepalive_timeout, 75000); |
3115 ngx_conf_merge_sec_value(conf->keepalive_header, | 3139 ngx_conf_merge_sec_value(conf->keepalive_header, |
3116 prev->keepalive_header, 0); | 3140 prev->keepalive_header, 0); |
3141 ngx_conf_merge_uint_value(conf->keepalive_requests, | |
3142 prev->keepalive_requests, 100); | |
3117 ngx_conf_merge_msec_value(conf->lingering_time, | 3143 ngx_conf_merge_msec_value(conf->lingering_time, |
3118 prev->lingering_time, 30000); | 3144 prev->lingering_time, 30000); |
3119 ngx_conf_merge_msec_value(conf->lingering_timeout, | 3145 ngx_conf_merge_msec_value(conf->lingering_timeout, |
3120 prev->lingering_timeout, 5000); | 3146 prev->lingering_timeout, 5000); |
3121 ngx_conf_merge_msec_value(conf->resolver_timeout, | 3147 ngx_conf_merge_msec_value(conf->resolver_timeout, |