Variables support in proxy_upload_rate and proxy_download_rate.
Ruslan Ermilov
3 years ago
23 | 23 | ngx_msec_t timeout; |
24 | 24 | ngx_msec_t next_upstream_timeout; |
25 | 25 | size_t buffer_size; |
26 | size_t upload_rate; | |
27 | size_t download_rate; | |
26 | ngx_stream_complex_value_t *upload_rate; | |
27 | ngx_stream_complex_value_t *download_rate; | |
28 | 28 | ngx_uint_t requests; |
29 | 29 | ngx_uint_t responses; |
30 | 30 | ngx_uint_t next_upstream_tries; |
183 | 183 | |
184 | 184 | { ngx_string("proxy_upload_rate"), |
185 | 185 | NGX_STREAM_MAIN_CONF|NGX_STREAM_SRV_CONF|NGX_CONF_TAKE1, |
186 | ngx_conf_set_size_slot, | |
186 | ngx_stream_set_complex_value_size_slot, | |
187 | 187 | NGX_STREAM_SRV_CONF_OFFSET, |
188 | 188 | offsetof(ngx_stream_proxy_srv_conf_t, upload_rate), |
189 | 189 | NULL }, |
190 | 190 | |
191 | 191 | { ngx_string("proxy_download_rate"), |
192 | 192 | NGX_STREAM_MAIN_CONF|NGX_STREAM_SRV_CONF|NGX_CONF_TAKE1, |
193 | ngx_conf_set_size_slot, | |
193 | ngx_stream_set_complex_value_size_slot, | |
194 | 194 | NGX_STREAM_SRV_CONF_OFFSET, |
195 | 195 | offsetof(ngx_stream_proxy_srv_conf_t, download_rate), |
196 | 196 | NULL }, |
894 | 894 | u->proxy_protocol = 0; |
895 | 895 | } |
896 | 896 | |
897 | u->upload_rate = ngx_stream_complex_value_size(s, pscf->upload_rate, 0); | |
898 | u->download_rate = ngx_stream_complex_value_size(s, pscf->download_rate, 0); | |
899 | ||
897 | 900 | u->connected = 1; |
898 | 901 | |
899 | 902 | pc->read->handler = ngx_stream_proxy_upstream_handler; |
1531 | 1534 | src = pc; |
1532 | 1535 | dst = c; |
1533 | 1536 | b = &u->upstream_buf; |
1534 | limit_rate = pscf->download_rate; | |
1537 | limit_rate = u->download_rate; | |
1535 | 1538 | received = &u->received; |
1536 | 1539 | packets = &u->responses; |
1537 | 1540 | out = &u->downstream_out; |
1543 | 1546 | src = c; |
1544 | 1547 | dst = pc; |
1545 | 1548 | b = &u->downstream_buf; |
1546 | limit_rate = pscf->upload_rate; | |
1549 | limit_rate = u->upload_rate; | |
1547 | 1550 | received = &s->received; |
1548 | 1551 | packets = &u->requests; |
1549 | 1552 | out = &u->upstream_out; |
1954 | 1957 | * conf->ssl_certificate = { 0, NULL }; |
1955 | 1958 | * conf->ssl_certificate_key = { 0, NULL }; |
1956 | 1959 | * |
1960 | * conf->upload_rate = NULL; | |
1961 | * conf->download_rate = NULL; | |
1957 | 1962 | * conf->ssl = NULL; |
1958 | 1963 | * conf->upstream = NULL; |
1959 | 1964 | * conf->upstream_value = NULL; |
1963 | 1968 | conf->timeout = NGX_CONF_UNSET_MSEC; |
1964 | 1969 | conf->next_upstream_timeout = NGX_CONF_UNSET_MSEC; |
1965 | 1970 | conf->buffer_size = NGX_CONF_UNSET_SIZE; |
1966 | conf->upload_rate = NGX_CONF_UNSET_SIZE; | |
1967 | conf->download_rate = NGX_CONF_UNSET_SIZE; | |
1968 | 1971 | conf->requests = NGX_CONF_UNSET_UINT; |
1969 | 1972 | conf->responses = NGX_CONF_UNSET_UINT; |
1970 | 1973 | conf->next_upstream_tries = NGX_CONF_UNSET_UINT; |
2004 | 2007 | ngx_conf_merge_size_value(conf->buffer_size, |
2005 | 2008 | prev->buffer_size, 16384); |
2006 | 2009 | |
2007 | ngx_conf_merge_size_value(conf->upload_rate, | |
2008 | prev->upload_rate, 0); | |
2009 | ||
2010 | ngx_conf_merge_size_value(conf->download_rate, | |
2011 | prev->download_rate, 0); | |
2010 | if (conf->upload_rate == NULL) { | |
2011 | conf->upload_rate = prev->upload_rate; | |
2012 | } | |
2013 | ||
2014 | if (conf->download_rate == NULL) { | |
2015 | conf->download_rate = prev->download_rate; | |
2016 | } | |
2012 | 2017 | |
2013 | 2018 | ngx_conf_merge_uint_value(conf->requests, |
2014 | 2019 | prev->requests, 0); |