• Artem Khramov's avatar
    bpo-37811: FreeBSD, OSX: fix poll(2) usage in sockets module (GH-15202) · 28146206
    Artem Khramov authored
    FreeBSD implementation of poll(2) restricts the timeout argument to be
    either zero, or positive, or equal to INFTIM (-1).
    
    Unless otherwise overridden, socket timeout defaults to -1. This value
    is then converted to milliseconds (-1000) and used as argument to the
    poll syscall. poll returns EINVAL (22), and the connection fails.
    
    This bug was discovered during the EINTR handling testing, and the
    reproduction code can be found in
    https://bugs.python.org/issue23618 (see connect_eintr.py,
    attached). On GNU/Linux, the example runs as expected.
    
    This change is trivial:
    If the supplied timeout value is negative, truncate it to -1.
    28146206
socketmodule.c 242 KB