summaryrefslogtreecommitdiffstats
path: root/Doc/lib/libsocket.tex
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>2002-06-07 03:39:21 (GMT)
committerGuido van Rossum <guido@python.org>2002-06-07 03:39:21 (GMT)
commitfc9823b1a9141c4c5edc93d89006051489ecddfe (patch)
tree55bb049bf0907d747e991551f59548949438fe48 /Doc/lib/libsocket.tex
parente8008f0013f14933aead215891812dd138d798fd (diff)
downloadcpython-fc9823b1a9141c4c5edc93d89006051489ecddfe.zip
cpython-fc9823b1a9141c4c5edc93d89006051489ecddfe.tar.gz
cpython-fc9823b1a9141c4c5edc93d89006051489ecddfe.tar.bz2
Clarify the interaction between blocking and timeouts. Explain that
fromfd() assumes a blocking non-timeout socket.
Diffstat (limited to 'Doc/lib/libsocket.tex')
-rw-r--r--Doc/lib/libsocket.tex39
1 files changed, 23 insertions, 16 deletions
diff --git a/Doc/lib/libsocket.tex b/Doc/lib/libsocket.tex
index 9589cbe..1c1885b 100644
--- a/Doc/lib/libsocket.tex
+++ b/Doc/lib/libsocket.tex
@@ -284,7 +284,8 @@ checked --- subsequent operations on the object may fail if the file
descriptor is invalid. This function is rarely needed, but can be
used to get or set socket options on a socket passed to a program as
standard input or output (such as a server started by the \UNIX{} inet
-daemon).
+daemon). The socket is assumed to be created in blocking mode without
+a timeout.
Availability: \UNIX.
\end{funcdesc}
@@ -515,29 +516,35 @@ block until they can proceed.
\end{methoddesc}
\begin{methoddesc}[socket]{settimeout}{value}
-Set a timeout on blocking socket operations. Value can be any numeric
-value or \code{None}. Socket operations will raise an
-\exception{error} exception if the timeout period \var{value} has
-elapsed before the operation has completed. Setting a timeout of
-\code{None} disables timeouts on socket operations.
+Set a timeout on blocking socket operations. Value can be a
+nonnegative float expressing seconds, or \code{None}. If a float is
+give, subsequent socket operations will raise an \exception{error}
+exception if the timeout period \var{value} has elapsed before the
+operation has completed. Setting a timeout of \code{None} disables
+timeouts on socket operations.
\versionadded{2.3}
\end{methoddesc}
\begin{methoddesc}[socket]{gettimeout}{}
Returns the timeout in floating seconds associated with socket
-operations. A timeout of \code{None} indicates that timeouts on
-socket operations are disabled.
+operations, or \code{None} if no timeout is set.
\versionadded{2.3}
\end{methoddesc}
-Some notes on the interaction between socket blocking and timeouts:
-socket blocking mode takes precedence over timeouts. If a socket is
-set to non-blocking mode, then timeouts are not used.
-The timeout value associated with the socket can still be set using
-\method{settimeout()} and its value retrieved using
-\method{gettimeout()}, but the timeout is never enforced (an exception
-will never be thrown). Otherwise, if the socket is in blocking mode,
-setting the timeout will raise an exception as expected.
+Some notes on the interaction between socket blocking and timeouts: A
+socket object can be in one of three modes: blocking, non-blocking, or
+timout. Sockets are always created in blocking mode. In blocking
+mode, operations block until complete. 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.
+
+Calling \method{settimeout()} cancels non-blocking mode as set by
+\method{setblocking()}; calling \method{setblocking()} cancels a
+previously set timeout. Setting the timeout to zero acts similarly
+but is implemented different than setting the socket in non-blocking
+mode (this could be considered a bug and may even be fixed).
\begin{methoddesc}[socket]{setsockopt}{level, optname, value}
Set the value of the given socket option (see the \UNIX{} manual page