#accept timeout socket bug test import threading import socket import errno import time import sys def thread(): s = socket.socket() s.connect(("localhost", 23456)) time.sleep(2) s.close() timeout = 0.0 if len(sys.argv) > 1: timeout = eval(sys.argv[1]) s = socket.socket() s.settimeout(timeout) print (s.gettimeout()) s.bind(("", 23456)) s.listen(4) threading.Thread(target=thread).start() while True: try: s2, a = s.accept() except socket.error as e: if e.errno == errno.EWOULDBLOCK: continue raise break print ("accept socket.gettimeout() = ", s.gettimeout()) print ("accepted socket.gettimeout() = ", s2.gettimeout()) try: s2.recv(10) except socket.error as e: if e.errno == errno.EWOULDBLOCK: socket_is = "nonblocking" else: socket_is = "blocking/timeout" print ("accepted socket is", socket_is) s.close() s2.close()