Skip to content

Commit

Permalink
bpo-15999: Always pass bool instead of int to socket.setblocking(). (G…
Browse files Browse the repository at this point in the history
  • Loading branch information
serhiy-storchaka authored Sep 1, 2019
1 parent eb89746 commit 5eca7f3
Show file tree
Hide file tree
Showing 7 changed files with 18 additions and 18 deletions.
2 changes: 1 addition & 1 deletion Doc/howto/sockets.rst
Original file line number Diff line number Diff line change
Expand Up @@ -317,7 +317,7 @@ know about the mechanics of using sockets. You'll still use the same calls, in
much the same ways. It's just that, if you do it right, your app will be almost
inside-out.

In Python, you use ``socket.setblocking(0)`` to make it non-blocking. In C, it's
In Python, you use ``socket.setblocking(False)`` to make it non-blocking. In C, it's
more complex, (for one thing, you'll need to choose between the BSD flavor
``O_NONBLOCK`` and the almost indistinguishable Posix flavor ``O_NDELAY``, which
is completely different from ``TCP_NODELAY``), but it's the exact same idea. You
Expand Down
4 changes: 2 additions & 2 deletions Lib/asyncore.py
Original file line number Diff line number Diff line change
Expand Up @@ -228,7 +228,7 @@ def __init__(self, sock=None, map=None):
if sock:
# Set to nonblocking just to make sure for cases where we
# get a socket from a blocking source.
sock.setblocking(0)
sock.setblocking(False)
self.set_socket(sock, map)
self.connected = True
# The constructor no longer requires that the socket
Expand Down Expand Up @@ -280,7 +280,7 @@ def del_channel(self, map=None):
def create_socket(self, family=socket.AF_INET, type=socket.SOCK_STREAM):
self.family_and_type = family, type
sock = socket.socket(family, type)
sock.setblocking(0)
sock.setblocking(False)
self.set_socket(sock)

def set_socket(self, sock, map=None):
Expand Down
2 changes: 1 addition & 1 deletion Lib/test/test_asyncio/functional.py
Original file line number Diff line number Diff line change
Expand Up @@ -225,7 +225,7 @@ def stop(self):
def run(self):
try:
with self._sock:
self._sock.setblocking(0)
self._sock.setblocking(False)
self._run()
finally:
self._s1.close()
Expand Down
10 changes: 5 additions & 5 deletions Lib/test/test_socket.py
Original file line number Diff line number Diff line change
Expand Up @@ -4597,7 +4597,7 @@ def _testInheritFlagsTimeout(self):

def testAccept(self):
# Testing non-blocking accept
self.serv.setblocking(0)
self.serv.setblocking(False)

# connect() didn't start: non-blocking accept() fails
start_time = time.monotonic()
Expand Down Expand Up @@ -4628,7 +4628,7 @@ def testRecv(self):
# Testing non-blocking recv
conn, addr = self.serv.accept()
self.addCleanup(conn.close)
conn.setblocking(0)
conn.setblocking(False)

# the server didn't send data yet: non-blocking recv() fails
with self.assertRaises(BlockingIOError):
Expand Down Expand Up @@ -5698,15 +5698,15 @@ def test_SOCK_NONBLOCK(self):
with socket.socket(socket.AF_INET,
socket.SOCK_STREAM | socket.SOCK_NONBLOCK) as s:
self.checkNonblock(s)
s.setblocking(1)
s.setblocking(True)
self.checkNonblock(s, nonblock=False)
s.setblocking(0)
s.setblocking(False)
self.checkNonblock(s)
s.settimeout(None)
self.checkNonblock(s, nonblock=False)
s.settimeout(2.0)
self.checkNonblock(s, timeout=2.0)
s.setblocking(1)
s.setblocking(True)
self.checkNonblock(s, nonblock=False)
# defaulttimeout
t = socket.getdefaulttimeout()
Expand Down
4 changes: 2 additions & 2 deletions Lib/test/test_ssl.py
Original file line number Diff line number Diff line change
Expand Up @@ -2209,7 +2209,7 @@ def __init__(self, server, connsock, addr):
self.running = False
self.sock = connsock
self.addr = addr
self.sock.setblocking(1)
self.sock.setblocking(True)
self.sslconn = None
threading.Thread.__init__(self)
self.daemon = True
Expand Down Expand Up @@ -3255,7 +3255,7 @@ def test_starttls(self):
wrapped = False
with server:
s = socket.socket()
s.setblocking(1)
s.setblocking(True)
s.connect((HOST, server.port))
if support.verbose:
sys.stdout.write("\n")
Expand Down
12 changes: 6 additions & 6 deletions Lib/test/test_timeout.py
Original file line number Diff line number Diff line change
Expand Up @@ -79,24 +79,24 @@ def testRangeCheck(self):
def testTimeoutThenBlocking(self):
# Test settimeout() followed by setblocking()
self.sock.settimeout(10)
self.sock.setblocking(1)
self.sock.setblocking(True)
self.assertEqual(self.sock.gettimeout(), None)
self.sock.setblocking(0)
self.sock.setblocking(False)
self.assertEqual(self.sock.gettimeout(), 0.0)

self.sock.settimeout(10)
self.sock.setblocking(0)
self.sock.setblocking(False)
self.assertEqual(self.sock.gettimeout(), 0.0)
self.sock.setblocking(1)
self.sock.setblocking(True)
self.assertEqual(self.sock.gettimeout(), None)

def testBlockingThenTimeout(self):
# Test setblocking() followed by settimeout()
self.sock.setblocking(0)
self.sock.setblocking(False)
self.sock.settimeout(1)
self.assertEqual(self.sock.gettimeout(), 1)

self.sock.setblocking(1)
self.sock.setblocking(True)
self.sock.settimeout(1)
self.assertEqual(self.sock.gettimeout(), 1)

Expand Down
2 changes: 1 addition & 1 deletion Modules/socketmodule.c
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ recvfrom_into(buffer[, nbytes, [, flags])\n\
sendall(data[, flags]) -- send all data\n\
send(data[, flags]) -- send data, may not send all of it\n\
sendto(data[, flags], addr) -- send data to a given address\n\
setblocking(0 | 1) -- set or clear the blocking I/O flag\n\
setblocking(bool) -- set or clear the blocking I/O flag\n\
getblocking() -- return True if socket is blocking, False if non-blocking\n\
setsockopt(level, optname, value[, optlen]) -- set socket options\n\
settimeout(None | float) -- set or clear the timeout\n\
Expand Down

0 comments on commit 5eca7f3

Please sign in to comment.