[3.7] bpo-34263 Cap timeout submitted to epoll/select etc. to one day. (GH-8532) (GH-8586)

This commit is contained in:
Miss Islington (bot) 2018-07-31 08:29:07 -07:00 committed by Yury Selivanov
parent 3e4b688759
commit 172a81e42b
2 changed files with 6 additions and 1 deletions

View File

@ -63,6 +63,9 @@ _FATAL_ERROR_IGNORE = (BrokenPipeError,
_HAS_IPv6 = hasattr(socket, 'AF_INET6')
# Maximum timeout passed to select to avoid OS limitations
MAXIMUM_SELECT_TIMEOUT = 24 * 3600
def _format_handle(handle):
cb = handle._callback
@ -1702,7 +1705,7 @@ class BaseEventLoop(events.AbstractEventLoop):
elif self._scheduled:
# Compute the desired timeout.
when = self._scheduled[0]._when
timeout = max(0, when - self.time())
timeout = min(max(0, when - self.time()), MAXIMUM_SELECT_TIMEOUT)
if self._debug and timeout != 0:
t0 = self.time()

View File

@ -0,0 +1,2 @@
asyncio's event loop will not pass timeouts longer than one day to
epoll/select etc.