• Guido van Rossum's avatar
    Major overhaul of timeout sockets: · 11ba0949
    Guido van Rossum yazdı
    - setblocking(0) and settimeout(0) are now equivalent, and ditto for
      setblocking(1) and settimeout(None).
    
    - Don't raise an exception from internal_select(); let the final call
      report the error (this means you will get an EAGAIN error instead of
      an ETIMEDOUT error -- I don't care).
    
    - Move the select to inside the Py_{BEGIN,END}_ALLOW_THREADS brackets,
      so other theads can run (this was a bug in the original code).
    
    - Redid the retry logic in connect() and connect_ex() to avoid masking
      errors.  This probably doesn't work for Windows yet; I'll fix that
      next.  It may also fail on other platforms, depending on what
      retrying a connect does; I need help with this.
    
    - Get rid of the retry logic in accept().  I don't think it was needed
      at all.  But I may be wrong.
    11ba0949
libsocket.tex 29.2 KB