comparison src/http/ngx_http_core_module.c @ 7504:c19ca381b2e6

Variables support in limit_rate and limit_rate_after (ticket #293).
author Ruslan Ermilov <ru@nginx.com>
date Wed, 24 Apr 2019 16:38:54 +0300
parents 4f9b72a229c1
children a7e8f953408e
comparison
equal deleted inserted replaced
7503:b82162b8496a 7504:c19ca381b2e6
477 NULL }, 477 NULL },
478 478
479 { ngx_string("limit_rate"), 479 { ngx_string("limit_rate"),
480 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF 480 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF
481 |NGX_CONF_TAKE1, 481 |NGX_CONF_TAKE1,
482 ngx_conf_set_size_slot, 482 ngx_http_set_complex_value_size_slot,
483 NGX_HTTP_LOC_CONF_OFFSET, 483 NGX_HTTP_LOC_CONF_OFFSET,
484 offsetof(ngx_http_core_loc_conf_t, limit_rate), 484 offsetof(ngx_http_core_loc_conf_t, limit_rate),
485 NULL }, 485 NULL },
486 486
487 { ngx_string("limit_rate_after"), 487 { ngx_string("limit_rate_after"),
488 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF 488 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF
489 |NGX_CONF_TAKE1, 489 |NGX_CONF_TAKE1,
490 ngx_conf_set_size_slot, 490 ngx_http_set_complex_value_size_slot,
491 NGX_HTTP_LOC_CONF_OFFSET, 491 NGX_HTTP_LOC_CONF_OFFSET,
492 offsetof(ngx_http_core_loc_conf_t, limit_rate_after), 492 offsetof(ngx_http_core_loc_conf_t, limit_rate_after),
493 NULL }, 493 NULL },
494 494
495 { ngx_string("keepalive_timeout"), 495 { ngx_string("keepalive_timeout"),
1277 } 1277 }
1278 1278
1279 if (!clcf->tcp_nopush) { 1279 if (!clcf->tcp_nopush) {
1280 /* disable TCP_NOPUSH/TCP_CORK use */ 1280 /* disable TCP_NOPUSH/TCP_CORK use */
1281 r->connection->tcp_nopush = NGX_TCP_NOPUSH_DISABLED; 1281 r->connection->tcp_nopush = NGX_TCP_NOPUSH_DISABLED;
1282 }
1283
1284 if (r->limit_rate == 0) {
1285 r->limit_rate = clcf->limit_rate;
1286 } 1282 }
1287 1283
1288 if (clcf->handler) { 1284 if (clcf->handler) {
1289 r->content_handler = clcf->handler; 1285 r->content_handler = clcf->handler;
1290 } 1286 }
3385 * clcf->client_body_path = NULL; 3381 * clcf->client_body_path = NULL;
3386 * clcf->regex = NULL; 3382 * clcf->regex = NULL;
3387 * clcf->exact_match = 0; 3383 * clcf->exact_match = 0;
3388 * clcf->auto_redirect = 0; 3384 * clcf->auto_redirect = 0;
3389 * clcf->alias = 0; 3385 * clcf->alias = 0;
3386 * clcf->limit_rate = NULL;
3387 * clcf->limit_rate_after = NULL;
3390 * clcf->gzip_proxied = 0; 3388 * clcf->gzip_proxied = 0;
3391 * clcf->keepalive_disable = 0; 3389 * clcf->keepalive_disable = 0;
3392 */ 3390 */
3393 3391
3394 clcf->client_max_body_size = NGX_CONF_UNSET; 3392 clcf->client_max_body_size = NGX_CONF_UNSET;
3415 clcf->tcp_nopush = NGX_CONF_UNSET; 3413 clcf->tcp_nopush = NGX_CONF_UNSET;
3416 clcf->tcp_nodelay = NGX_CONF_UNSET; 3414 clcf->tcp_nodelay = NGX_CONF_UNSET;
3417 clcf->send_timeout = NGX_CONF_UNSET_MSEC; 3415 clcf->send_timeout = NGX_CONF_UNSET_MSEC;
3418 clcf->send_lowat = NGX_CONF_UNSET_SIZE; 3416 clcf->send_lowat = NGX_CONF_UNSET_SIZE;
3419 clcf->postpone_output = NGX_CONF_UNSET_SIZE; 3417 clcf->postpone_output = NGX_CONF_UNSET_SIZE;
3420 clcf->limit_rate = NGX_CONF_UNSET_SIZE;
3421 clcf->limit_rate_after = NGX_CONF_UNSET_SIZE;
3422 clcf->keepalive_timeout = NGX_CONF_UNSET_MSEC; 3418 clcf->keepalive_timeout = NGX_CONF_UNSET_MSEC;
3423 clcf->keepalive_header = NGX_CONF_UNSET; 3419 clcf->keepalive_header = NGX_CONF_UNSET;
3424 clcf->keepalive_requests = NGX_CONF_UNSET_UINT; 3420 clcf->keepalive_requests = NGX_CONF_UNSET_UINT;
3425 clcf->lingering_close = NGX_CONF_UNSET_UINT; 3421 clcf->lingering_close = NGX_CONF_UNSET_UINT;
3426 clcf->lingering_time = NGX_CONF_UNSET_MSEC; 3422 clcf->lingering_time = NGX_CONF_UNSET_MSEC;
3645 3641
3646 ngx_conf_merge_msec_value(conf->send_timeout, prev->send_timeout, 60000); 3642 ngx_conf_merge_msec_value(conf->send_timeout, prev->send_timeout, 60000);
3647 ngx_conf_merge_size_value(conf->send_lowat, prev->send_lowat, 0); 3643 ngx_conf_merge_size_value(conf->send_lowat, prev->send_lowat, 0);
3648 ngx_conf_merge_size_value(conf->postpone_output, prev->postpone_output, 3644 ngx_conf_merge_size_value(conf->postpone_output, prev->postpone_output,
3649 1460); 3645 1460);
3650 ngx_conf_merge_size_value(conf->limit_rate, prev->limit_rate, 0); 3646
3651 ngx_conf_merge_size_value(conf->limit_rate_after, prev->limit_rate_after, 3647 if (conf->limit_rate == NULL) {
3652 0); 3648 conf->limit_rate = prev->limit_rate;
3649 }
3650
3651 if (conf->limit_rate_after == NULL) {
3652 conf->limit_rate_after = prev->limit_rate_after;
3653 }
3654
3653 ngx_conf_merge_msec_value(conf->keepalive_timeout, 3655 ngx_conf_merge_msec_value(conf->keepalive_timeout,
3654 prev->keepalive_timeout, 75000); 3656 prev->keepalive_timeout, 75000);
3655 ngx_conf_merge_sec_value(conf->keepalive_header, 3657 ngx_conf_merge_sec_value(conf->keepalive_header,
3656 prev->keepalive_header, 0); 3658 prev->keepalive_header, 0);
3657 ngx_conf_merge_uint_value(conf->keepalive_requests, 3659 ngx_conf_merge_uint_value(conf->keepalive_requests,