Commit 94681fc4 authored by Martin v. Löwis's avatar Martin v. Löwis

Patch #849595: Add socket.shutdown() constants.

parent 04bf7241
...@@ -638,8 +638,8 @@ structures as strings). ...@@ -638,8 +638,8 @@ structures as strings).
\begin{methoddesc}[socket]{shutdown}{how} \begin{methoddesc}[socket]{shutdown}{how}
Shut down one or both halves of the connection. If \var{how} is Shut down one or both halves of the connection. If \var{how} is
\code{0}, further receives are disallowed. If \var{how} is \code{1}, \constant{SHUT_RD}, further receives are disallowed. If \var{how} is \constant{SHUT_WR},
further sends are disallowed. If \var{how} is \code{2}, further sends further sends are disallowed. If \var{how} is \constant{SHUT_RDWR}, further sends
and receives are disallowed. and receives are disallowed.
\end{methoddesc} \end{methoddesc}
......
...@@ -95,6 +95,8 @@ Core and builtins ...@@ -95,6 +95,8 @@ Core and builtins
Extension modules Extension modules
----------------- -----------------
- socket.SHUT_{RD,WR,RDWR} was added.
- os.getsid was added. - os.getsid was added.
- The pwd module incorrectly advertised its struct type as - The pwd module incorrectly advertised its struct type as
......
...@@ -2097,8 +2097,8 @@ sock_shutdown(PySocketSockObject *s, PyObject *arg) ...@@ -2097,8 +2097,8 @@ sock_shutdown(PySocketSockObject *s, PyObject *arg)
PyDoc_STRVAR(shutdown_doc, PyDoc_STRVAR(shutdown_doc,
"shutdown(flag)\n\ "shutdown(flag)\n\
\n\ \n\
Shut down the reading side of the socket (flag == 0), the writing side\n\ Shut down the reading side of the socket (flag == SHUT_RD), the writing side\n\
of the socket (flag == 1), or both ends (flag == 2)."); of the socket (flag == SHUT_WR), or both ends (flag == SHUT_RDWR).");
/* List of methods for socket objects */ /* List of methods for socket objects */
...@@ -4101,6 +4101,29 @@ init_socket(void) ...@@ -4101,6 +4101,29 @@ init_socket(void)
PyModule_AddIntConstant(m, "NI_DGRAM", NI_DGRAM); PyModule_AddIntConstant(m, "NI_DGRAM", NI_DGRAM);
#endif #endif
/* shutdown() parameters */
#ifdef SHUT_RD
PyModule_AddIntConstant(m, "SHUT_RD", SHUT_RD);
#elif defined(SD_RECEIVE)
PyModule_AddIntConstant(m, "SHUT_RD", SD_RECEIVE);
#else
PyModule_AddIntConstant(m, "SHUT_RD", 0);
#endif
#ifdef SHUT_WR
PyModule_AddIntConstant(m, "SHUT_WR", SHUT_WR);
#elif defined(SD_SEND)
PyModule_AddIntConstant(m, "SHUT_WR", SD_SEND);
#else
PyModule_AddIntConstant(m, "SHUT_WR", 1);
#endif
#ifdef SHUT_RDWR
PyModule_AddIntConstant(m, "SHUT_RDWR", SHUT_RDWR);
#elif defined(SD_BOTH)
PyModule_AddIntConstant(m, "SHUT_RDWR", SD_BOTH);
#else
PyModule_AddIntConstant(m, "SHUT_RDWR", 2);
#endif
/* Initialize gethostbyname lock */ /* Initialize gethostbyname lock */
#if defined(USE_GETHOSTBYNAME_LOCK) || defined(USE_GETADDRINFO_LOCK) #if defined(USE_GETHOSTBYNAME_LOCK) || defined(USE_GETADDRINFO_LOCK)
netdb_lock = PyThread_allocate_lock(); netdb_lock = PyThread_allocate_lock();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment