From: Guido van Rossum Date: Mon, 18 Dec 2000 22:23:44 +0000 (+0000) Subject: Adapted from a patch by Barry Scott, SF patch #102875 and SF bug X-Git-Tag: v2.1a1~541 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=20d3fc071bb16bb63333de4bb4d66fd0e7f68b64;p=python Adapted from a patch by Barry Scott, SF patch #102875 and SF bug #125981: closing sockets was not thread-safe. --- diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c index e9b3aadfec..11e87bc5ec 100644 --- a/Modules/socketmodule.c +++ b/Modules/socketmodule.c @@ -904,14 +904,15 @@ pair (host, port); the host must refer to the local host."; static PyObject * PySocketSock_close(PySocketSockObject *s, PyObject *args) { + SOCKET_T fd; if (!PyArg_ParseTuple(args, ":close")) return NULL; - if (s->sock_fd != -1) { + if ((fd = s->sock_fd) != -1) { + s->sock_fd = -1; Py_BEGIN_ALLOW_THREADS - (void) SOCKETCLOSE(s->sock_fd); + (void) SOCKETCLOSE(fd); Py_END_ALLOW_THREADS } - s->sock_fd = -1; Py_INCREF(Py_None); return Py_None; }