mirror of
https://github.com/nginx/nginx.git
synced 2024-12-01 03:17:17 +08:00
Fixed lingering_time check.
There are two significant changes in this patch: 1) The <= 0 comparison is done with a signed type. This fixes the case of ngx_time() being larger than r->lingering_time. 2) Calculation of r->lingering_time - ngx_time() is now always done in the ngx_msec_t type. This ensures the calculation is correct even if time_t is unsigned and differs in size from ngx_msec_t. Thanks to Lanshun Zhou.
This commit is contained in:
parent
dcdf9eed8d
commit
885861b683
@ -3166,8 +3166,8 @@ ngx_http_lingering_close_handler(ngx_event_t *rev)
|
||||
return;
|
||||
}
|
||||
|
||||
timer = (ngx_msec_t) (r->lingering_time - ngx_time());
|
||||
if (timer <= 0) {
|
||||
timer = (ngx_msec_t) r->lingering_time - (ngx_msec_t) ngx_time();
|
||||
if ((ngx_msec_int_t) timer <= 0) {
|
||||
ngx_http_close_request(r, 0);
|
||||
return;
|
||||
}
|
||||
|
@ -570,9 +570,9 @@ ngx_http_discarded_request_body_handler(ngx_http_request_t *r)
|
||||
}
|
||||
|
||||
if (r->lingering_time) {
|
||||
timer = (ngx_msec_t) (r->lingering_time - ngx_time());
|
||||
timer = (ngx_msec_t) r->lingering_time - (ngx_msec_t) ngx_time();
|
||||
|
||||
if (timer <= 0) {
|
||||
if ((ngx_msec_int_t) timer <= 0) {
|
||||
r->discard_body = 0;
|
||||
r->lingering_close = 0;
|
||||
ngx_http_finalize_request(r, NGX_ERROR);
|
||||
|
Loading…
Reference in New Issue
Block a user