Changes between Initial Version and Version 1 of Ticket #1468, comment 13
- Timestamp:
- 01/26/18 12:06:09 (7 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Ticket #1468, comment 13
initial v1 18 18 - processes client connection (handler: `ngx_http_read_client_request_body_handler()`) which terminates connection with 408 due to expired timer 19 19 20 It seems to me that to trigger the issue two EAGAINs need to happen on the client connection: first one sets the timer and the second (if comes after `client_body_request_timeout`) willterminate the connection. This would not happen if the current time stamp was updated more often. Unfortunately [http://nginx.org/r/timer_resolution timer_resolution] will not help, as the signal handler only sets the flag for `ngx_process_events()` to update the time stamp, so it will not happen before returning to the main loop anyway.20 It seems to me that to trigger the issue one EAGAIN is sufficient on the client connection: if processing request took more than `client_body_request_timeout`, EAGAIN will cause time update and immediate timer expiration, which will then terminate the connection. This would not happen if the current time stamp was updated more often. Unfortunately [http://nginx.org/r/timer_resolution timer_resolution] will not help, as the signal handler only sets the flag for `ngx_process_events()` to update the time stamp, so it will not happen before returning to the main loop anyway. 21 21 22 22 I still consider this behavior a bug. When a timer is set, it is set with current time being already in the past, so the timeout is inaccurate.