Commit 944451cd authored by MartinAltmayer's avatar MartinAltmayer Committed by Yury Selivanov

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

parent 9c18b1ae
......@@ -173,10 +173,6 @@ Which clock is used depends on the (platform-specific) event loop
implementation; ideally it is a monotonic clock. This will generally be
a different clock than :func:`time.time`.
.. note::
Timeouts (relative *delay* or absolute *when*) should not exceed one day.
.. method:: AbstractEventLoop.call_later(delay, callback, *args, context=None)
......
......@@ -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
......@@ -1708,7 +1711,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()
......
asyncio's event loop will not pass timeouts longer than one day to
epoll/select etc.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment