summaryrefslogtreecommitdiffstats
path: root/Modules
diff options
context:
space:
mode:
Diffstat (limited to 'Modules')
-rw-r--r--Modules/socketmodule.c18
1 files changed, 8 insertions, 10 deletions
diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c
index 211e77b..6565187 100644
--- a/Modules/socketmodule.c
+++ b/Modules/socketmodule.c
@@ -2502,6 +2502,9 @@ internal_connect(PySocketSockObject *s, struct sockaddr *addr, int addrlen,
}
*timeoutp = timeout;
+ if (err == EINTR && PyErr_CheckSignals())
+ return -1;
+
assert(err >= 0);
return err;
@@ -2524,13 +2527,14 @@ sock_connect(PySocketSockObject *s, PyObject *addro)
return NULL;
res = internal_connect(s, SAS2SA(&addrbuf), addrlen, &timeout);
+ if (res < 0)
+ return NULL;
if (timeout == 1) {
PyErr_SetString(socket_timeout, "timed out");
return NULL;
}
- if (res < 0)
- return NULL;
+
if (res != 0) {
#ifdef MS_WINDOWS
WSASetLastError(res);
@@ -2539,8 +2543,8 @@ sock_connect(PySocketSockObject *s, PyObject *addro)
#endif
return s->errorhandler();
}
- Py_INCREF(Py_None);
- return Py_None;
+
+ Py_RETURN_NONE;
}
PyDoc_STRVAR(connect_doc,
@@ -2564,15 +2568,9 @@ sock_connect_ex(PySocketSockObject *s, PyObject *addro)
return NULL;
res = internal_connect(s, SAS2SA(&addrbuf), addrlen, &timeout);
-
if (res < 0)
return NULL;
- /* Signals are not errors (though they may raise exceptions). Adapted
- from PyErr_SetFromErrnoWithFilenameObject(). */
- if (res == EINTR && PyErr_CheckSignals())
- return NULL;
-
return PyLong_FromLong((long) res);
}