summaryrefslogtreecommitdiffstats
path: root/Doc/library/socket.rst
diff options
context:
space:
mode:
authorGregory P. Smith <greg@mad-scientist.com>2009-02-18 05:46:11 (GMT)
committerGregory P. Smith <greg@mad-scientist.com>2009-02-18 05:46:11 (GMT)
commit8367becc02316140d9f01261aec89567d0563e9f (patch)
tree0d3766a614a0955b462995e1ddc7f4afa5e897a7 /Doc/library/socket.rst
parent580d7c1f57d2ea422fc467be7c46e4b9852e7353 (diff)
downloadcpython-8367becc02316140d9f01261aec89567d0563e9f.zip
cpython-8367becc02316140d9f01261aec89567d0563e9f.tar.gz
cpython-8367becc02316140d9f01261aec89567d0563e9f.tar.bz2
Clarify socket timeout behavior vs system network stack behavior on connect
for issue5293.
Diffstat (limited to 'Doc/library/socket.rst')
-rw-r--r--Doc/library/socket.rst11
1 files changed, 7 insertions, 4 deletions
diff --git a/Doc/library/socket.rst b/Doc/library/socket.rst
index 4f2a32e..37ef4a5 100644
--- a/Doc/library/socket.rst
+++ b/Doc/library/socket.rst
@@ -726,12 +726,13 @@ correspond to Unix system calls applicable to sockets.
Some notes on socket blocking and timeouts: A socket object can be in one of
three modes: blocking, non-blocking, or timeout. Sockets are always created in
-blocking mode. In blocking mode, operations block until complete. In
+blocking mode. In blocking mode, operations block until complete or
+the system returns an error (such as connection timed out). In
non-blocking mode, operations fail (with an error that is unfortunately
system-dependent) if they cannot be completed immediately. In timeout mode,
operations fail if they cannot be completed within the timeout specified for the
-socket. The :meth:`setblocking` method is simply a shorthand for certain
-:meth:`settimeout` calls.
+socket or if the system returns an error. The :meth:`setblocking` method is simply
+a shorthand for certain :meth:`settimeout` calls.
Timeout mode internally sets the socket in non-blocking mode. The blocking and
timeout modes are shared between file descriptors and socket objects that refer
@@ -742,7 +743,9 @@ completed immediately will fail.
Note that the :meth:`connect` operation is subject to the timeout setting, and
in general it is recommended to call :meth:`settimeout` before calling
-:meth:`connect`.
+:meth:`connect` or pass a timeout parameter to :meth:`create_connection`.
+The system network stack may return a connection timeout error
+of its own regardless of any python socket timeout setting.
.. method:: socket.setsockopt(level, optname, value)