comparison src/http/ngx_http_core_module.c @ 505: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
504:6d9fb4461113 505: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,