Add s.connect_ex() which returns errno instead of raising an exception.

This commit is contained in:
Guido van Rossum 1997-11-19 18:57:13 +00:00
parent aec7497f6f
commit fc4255db75
1 changed files with 20 additions and 0 deletions

View File

@ -66,6 +66,7 @@ Socket methods:
- s.bind(sockaddr) --> None - s.bind(sockaddr) --> None
- s.close() --> None - s.close() --> None
- s.connect(sockaddr) --> None - s.connect(sockaddr) --> None
- s.connect_ex(sockaddr) --> 0 or errno (handy for e.g. async connect)
- s.fileno() --> file descriptor - s.fileno() --> file descriptor
- s.dup() --> same as socket.fromfd(os.dup(s.fileno(), ...) - s.dup() --> same as socket.fromfd(os.dup(s.fileno(), ...)
- s.getpeername() --> sockaddr - s.getpeername() --> sockaddr
@ -681,6 +682,25 @@ BUILD_FUNC_DEF_2(PySocketSock_connect,PySocketSockObject *,s, PyObject *,args)
} }
/* 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 */ /* s.fileno() method */
static PyObject * static PyObject *