limit_rate_after support variables
Miroslav Novy
miranovy at gmail.com
Wed Nov 21 14:50:30 UTC 2018
Hi Ruslan,
there is my fix to remove warning "using uninitialized variable".
I have moved the reading value of limit_rate variable from function
ngx_http_update_location_config to function ngx_http_write_filter
because value is initialized later.
Best regards
Miroslav Nový
# HG changeset patch
# User Miroslav Nový <miranovy at gmail.com>
# Date 1542811768 0
# Wed Nov 21 14:49:28 2018 +0000
# Node ID e2139cd62c7263dc182b11a847a6eaf2d9560a0d
# Parent 82eed7650622fd780dcd4a86661de7b80b44199c
Variables support in limit_rate and limit_rate_after fix
Reading value of limit_rate variable moved to function
ngx_http_write_filter because in function
ngx_http_update_location_config is not inicialized yet.
diff -r 82eed7650622 -r e2139cd62c72 src/http/ngx_http_core_module.c
--- a/src/http/ngx_http_core_module.c Wed Nov 21 10:40:01 2018 +0000
+++ b/src/http/ngx_http_core_module.c Wed Nov 21 14:49:28 2018 +0000
@@ -1212,8 +1212,6 @@
void
ngx_http_update_location_config(ngx_http_request_t *r)
{
- size_t limit_rate;
- ngx_str_t val;
ngx_http_core_loc_conf_t *clcf;
clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module);
@@ -1283,20 +1281,6 @@
r->connection->tcp_nopush = NGX_TCP_NOPUSH_DISABLED;
}
- if (r->limit_rate == 0
- && clcf->limit_rate
- && ngx_http_complex_value_size(r, clcf->limit_rate, &val, &limit_rate)
- == NGX_OK)
- {
- if (limit_rate != (size_t) NGX_ERROR) {
- r->limit_rate = limit_rate;
-
- } else if (val.len) {
- ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,
- "invalid \"limit_rate\" value \"%V\"", &val);
- }
- }
-
if (clcf->handler) {
r->content_handler = clcf->handler;
}
diff -r 82eed7650622 -r e2139cd62c72 src/http/ngx_http_write_filter_module.c
--- a/src/http/ngx_http_write_filter_module.c Wed Nov 21 10:40:01 2018 +0000
+++ b/src/http/ngx_http_write_filter_module.c Wed Nov 21 14:49:28 2018 +0000
@@ -48,7 +48,7 @@
ngx_http_write_filter(ngx_http_request_t *r, ngx_chain_t *in)
{
off_t size, sent, nsent, limit;
- size_t limit_rate_after;
+ ssize_t limit_rate, limit_rate_after;
ngx_str_t val;
ngx_uint_t last, flush, sync;
ngx_msec_t delay;
@@ -220,6 +220,25 @@
return NGX_ERROR;
}
+ if (r->limit_rate == 0
+ && clcf->limit_rate
+ && ngx_http_complex_value_size(r, clcf->limit_rate, &val,
+ &limit_rate)
+ == NGX_OK)
+ {
+ if (limit_rate_after != NGX_ERROR) {
+ r->limit_rate = limit_rate;
+
+ } else if (val.len) {
+ ngx_log_error(NGX_LOG_ERR, c->log, 0,
+ "invalid \"limit_rate\" value \"%V\"",
+ &val);
+ }
+ }
+
+ ngx_log_debug1(NGX_LOG_DEBUG_HTTP, c->log, 0, "http limit rate \"%z\"",
+ r->limit_rate);
+
if (r->limit_rate) {
if (r->limit_rate_after == 0
&& clcf->limit_rate_after
@@ -227,7 +246,7 @@
&limit_rate_after)
== NGX_OK)
{
- if (limit_rate_after != (size_t) NGX_ERROR) {
+ if (limit_rate_after != NGX_ERROR) {
r->limit_rate_after = limit_rate_after;
} else if (val.len) {
More information about the nginx-devel
mailing list