Mercurial > cpython-lru_cache-weakref
diff Modules/socketmodule.c @ 6604:f67a6339ede7 legacy-trunk
Add s.connect_ex() which returns errno instead of raising an exception.
| author | Guido van Rossum <guido@python.org> |
|---|---|
| date | Wed, 19 Nov 1997 18:57:13 +0000 |
| parents | 2c29b8982643 |
| children | 04313d4f93ff |
line wrap: on
line diff
--- a/Modules/socketmodule.c Wed Nov 19 18:56:17 1997 +0000 +++ b/Modules/socketmodule.c Wed Nov 19 18:57:13 1997 +0000 @@ -66,6 +66,7 @@ - s.bind(sockaddr) --> None - s.close() --> None - s.connect(sockaddr) --> None +- s.connect_ex(sockaddr) --> 0 or errno (handy for e.g. async connect) - s.fileno() --> file descriptor - s.dup() --> same as socket.fromfd(os.dup(s.fileno(), ...) - s.getpeername() --> sockaddr @@ -681,6 +682,25 @@ } +/* s.connect_ex(sockaddr) method */ + +static PyObject * +BUILD_FUNC_DEF_2(PySocketSock_connect_ex,PySocketSockObject *,s, PyObject *,args) +{ + struct sockaddr *addr; + int addrlen; + int res; + if (!getsockaddrarg(s, args, &addr, &addrlen)) + return NULL; + Py_BEGIN_ALLOW_THREADS + res = connect(s->sock_fd, addr, addrlen); + Py_END_ALLOW_THREADS + if (res != 0) + res = errno; + return PyInt_FromLong((long) res); +} + + /* s.fileno() method */ static PyObject *
