zos: fix potential event loop stall
This is a port of 70002c80 to z/OS to fix the same potential issue that
could effectively enter an infinite loop (but not a busy loop) under
certain conditions when polling for events.
PR-URL: https://github.com/libuv/libuv/pull/2725
Reviewed-By: Fedor Indutny <fedor.indutny@gmail.com>
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
Reviewed-By: Jameson Nash <vtjnash@gmail.com>
This commit is contained in:
parent
0a8c1c53b6
commit
d0e323971e
@ -887,12 +887,13 @@ void uv__io_poll(uv_loop_t* loop, int timeout) {
|
||||
if (nfds == 0) {
|
||||
assert(timeout != -1);
|
||||
|
||||
if (timeout > 0) {
|
||||
timeout = real_timeout - timeout;
|
||||
continue;
|
||||
}
|
||||
if (timeout == 0)
|
||||
return;
|
||||
|
||||
return;
|
||||
/* We may have been inside the system call for longer than |timeout|
|
||||
* milliseconds so we need to update the timestamp to avoid drift.
|
||||
*/
|
||||
goto update_timeout;
|
||||
}
|
||||
|
||||
if (nfds == -1) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user