summaryrefslogtreecommitdiffstats
path: root/Modules/socketmodule.c
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>2000-12-18 22:23:44 (GMT)
committerGuido van Rossum <guido@python.org>2000-12-18 22:23:44 (GMT)
commit20d3fc071bb16bb63333de4bb4d66fd0e7f68b64 (patch)
treeebad73be4ff4e966b14e1206cfdcba2960180ea6 /Modules/socketmodule.c
parent99664e455ba9e02e74563e369d7f70bc2faea3e0 (diff)
downloadcpython-20d3fc071bb16bb63333de4bb4d66fd0e7f68b64.zip
cpython-20d3fc071bb16bb63333de4bb4d66fd0e7f68b64.tar.gz
cpython-20d3fc071bb16bb63333de4bb4d66fd0e7f68b64.tar.bz2
Adapted from a patch by Barry Scott, SF patch #102875 and SF bug
#125981: closing sockets was not thread-safe.
Diffstat (limited to 'Modules/socketmodule.c')
-rw-r--r--Modules/socketmodule.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c
index e9b3aad..11e87bc 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;
}