mirror of
https://github.com/python/cpython.git
synced 2025-08-25 19:24:42 +00:00
gh-117657: Use critical section to make _socket.socket.close thread safe (GH-120490)
This commit is contained in:
parent
c7991cc287
commit
8a5176772c
3 changed files with 41 additions and 10 deletions
|
@ -3331,8 +3331,19 @@ sockets the address is a tuple (ifname, proto [,pkttype [,hatype [,addr]]])");
|
|||
Set the file descriptor to -1 so operations tried subsequently
|
||||
will surely fail. */
|
||||
|
||||
/*[clinic input]
|
||||
@critical_section
|
||||
_socket.socket.close
|
||||
self as s: self(type="PySocketSockObject *")
|
||||
|
||||
close()
|
||||
|
||||
Close the socket. It cannot be used after this call.
|
||||
[clinic start generated code]*/
|
||||
|
||||
static PyObject *
|
||||
sock_close(PySocketSockObject *s, PyObject *Py_UNUSED(ignored))
|
||||
_socket_socket_close_impl(PySocketSockObject *s)
|
||||
/*[clinic end generated code: output=038b2418e07f6f6c input=9839a261e05bcb97]*/
|
||||
{
|
||||
SOCKET_T fd;
|
||||
int res;
|
||||
|
@ -3357,11 +3368,6 @@ sock_close(PySocketSockObject *s, PyObject *Py_UNUSED(ignored))
|
|||
Py_RETURN_NONE;
|
||||
}
|
||||
|
||||
PyDoc_STRVAR(sock_close_doc,
|
||||
"close()\n\
|
||||
\n\
|
||||
Close the socket. It cannot be used after this call.");
|
||||
|
||||
static PyObject *
|
||||
sock_detach(PySocketSockObject *s, PyObject *Py_UNUSED(ignored))
|
||||
{
|
||||
|
@ -5118,8 +5124,7 @@ static PyMethodDef sock_methods[] = {
|
|||
{"bind", (PyCFunction)sock_bind, METH_O,
|
||||
bind_doc},
|
||||
#endif
|
||||
{"close", (PyCFunction)sock_close, METH_NOARGS,
|
||||
sock_close_doc},
|
||||
_SOCKET_SOCKET_CLOSE_METHODDEF
|
||||
#ifdef HAVE_CONNECT
|
||||
{"connect", (PyCFunction)sock_connect, METH_O,
|
||||
connect_doc},
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue