mirror of
https://github.com/python/cpython.git
synced 2025-09-26 18:29:57 +00:00
Put back multi-arg capability on connect/connect_ex/bind, for
backwards compatibility, and to avoid a revolution.
This commit is contained in:
parent
1571a1e34b
commit
527c9bd32a
1 changed files with 15 additions and 21 deletions
|
@ -66,12 +66,15 @@ Module interface:
|
||||||
- a UNIX domain socket address is a string specifying the pathname
|
- a UNIX domain socket address is a string specifying the pathname
|
||||||
|
|
||||||
Socket methods:
|
Socket methods:
|
||||||
|
(NB: an argument list of the form (sockaddr...) means that multiple
|
||||||
|
arguments are treated the same as a single tuple argument, for backwards
|
||||||
|
compatibility.)
|
||||||
|
|
||||||
- s.accept() --> new socket object, sockaddr
|
- s.accept() --> new socket object, sockaddr
|
||||||
- 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.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
|
||||||
|
@ -849,7 +852,7 @@ If a nonzero buffersize argument is given, the return value is a\n\
|
||||||
string of that length; otherwise it is an integer.";
|
string of that length; otherwise it is an integer.";
|
||||||
|
|
||||||
|
|
||||||
/* s.bind(sockaddr) method */
|
/* s.bind(sockaddr...) method */
|
||||||
|
|
||||||
static PyObject *
|
static PyObject *
|
||||||
BUILD_FUNC_DEF_2(PySocketSock_bind,PySocketSockObject *,s, PyObject *,args)
|
BUILD_FUNC_DEF_2(PySocketSock_bind,PySocketSockObject *,s, PyObject *,args)
|
||||||
|
@ -857,10 +860,7 @@ BUILD_FUNC_DEF_2(PySocketSock_bind,PySocketSockObject *,s, PyObject *,args)
|
||||||
struct sockaddr *addr;
|
struct sockaddr *addr;
|
||||||
int addrlen;
|
int addrlen;
|
||||||
int res;
|
int res;
|
||||||
PyObject *addro;
|
if (!getsockaddrarg(s, args, &addr, &addrlen))
|
||||||
if (!PyArg_ParseTuple(args, "O:bind", &addro))
|
|
||||||
return NULL;
|
|
||||||
if (!getsockaddrarg(s, addro, &addr, &addrlen))
|
|
||||||
return NULL;
|
return NULL;
|
||||||
Py_BEGIN_ALLOW_THREADS
|
Py_BEGIN_ALLOW_THREADS
|
||||||
res = bind(s->sock_fd, addr, addrlen);
|
res = bind(s->sock_fd, addr, addrlen);
|
||||||
|
@ -903,7 +903,7 @@ static char close_doc[] =
|
||||||
Close the socket. It cannot be used after this call.";
|
Close the socket. It cannot be used after this call.";
|
||||||
|
|
||||||
|
|
||||||
/* s.connect(sockaddr) method */
|
/* s.connect(sockaddr...) method */
|
||||||
|
|
||||||
static PyObject *
|
static PyObject *
|
||||||
BUILD_FUNC_DEF_2(PySocketSock_connect,PySocketSockObject *,s, PyObject *,args)
|
BUILD_FUNC_DEF_2(PySocketSock_connect,PySocketSockObject *,s, PyObject *,args)
|
||||||
|
@ -911,10 +911,7 @@ BUILD_FUNC_DEF_2(PySocketSock_connect,PySocketSockObject *,s, PyObject *,args)
|
||||||
struct sockaddr *addr;
|
struct sockaddr *addr;
|
||||||
int addrlen;
|
int addrlen;
|
||||||
int res;
|
int res;
|
||||||
PyObject *addro;
|
if (!getsockaddrarg(s, args, &addr, &addrlen))
|
||||||
if (!PyArg_ParseTuple(args, "O:connect", &addro))
|
|
||||||
return NULL;
|
|
||||||
if (!getsockaddrarg(s, addro, &addr, &addrlen))
|
|
||||||
return NULL;
|
return NULL;
|
||||||
Py_BEGIN_ALLOW_THREADS
|
Py_BEGIN_ALLOW_THREADS
|
||||||
res = connect(s->sock_fd, addr, addrlen);
|
res = connect(s->sock_fd, addr, addrlen);
|
||||||
|
@ -932,7 +929,7 @@ Connect the socket to a remote address. For IP sockets, the address\n\
|
||||||
is a pair (host, port).";
|
is a pair (host, port).";
|
||||||
|
|
||||||
|
|
||||||
/* s.connect_ex(sockaddr) method */
|
/* s.connect_ex(sockaddr...) method */
|
||||||
|
|
||||||
static PyObject *
|
static PyObject *
|
||||||
BUILD_FUNC_DEF_2(PySocketSock_connect_ex,PySocketSockObject *,s, PyObject *,args)
|
BUILD_FUNC_DEF_2(PySocketSock_connect_ex,PySocketSockObject *,s, PyObject *,args)
|
||||||
|
@ -940,10 +937,7 @@ BUILD_FUNC_DEF_2(PySocketSock_connect_ex,PySocketSockObject *,s, PyObject *,args
|
||||||
struct sockaddr *addr;
|
struct sockaddr *addr;
|
||||||
int addrlen;
|
int addrlen;
|
||||||
int res;
|
int res;
|
||||||
PyObject *addro;
|
if (!getsockaddrarg(s, args, &addr, &addrlen))
|
||||||
if (!PyArg_ParseTuple(args, "O:connect_ex", &addro))
|
|
||||||
return NULL;
|
|
||||||
if (!getsockaddrarg(s, addro, &addr, &addrlen))
|
|
||||||
return NULL;
|
return NULL;
|
||||||
Py_BEGIN_ALLOW_THREADS
|
Py_BEGIN_ALLOW_THREADS
|
||||||
res = connect(s->sock_fd, addr, addrlen);
|
res = connect(s->sock_fd, addr, addrlen);
|
||||||
|
@ -1310,13 +1304,13 @@ of the socket (flag == 1), or both ends (flag == 2).";
|
||||||
static PyMethodDef PySocketSock_methods[] = {
|
static PyMethodDef PySocketSock_methods[] = {
|
||||||
{"accept", (PyCFunction)PySocketSock_accept, 1,
|
{"accept", (PyCFunction)PySocketSock_accept, 1,
|
||||||
accept_doc},
|
accept_doc},
|
||||||
{"bind", (PyCFunction)PySocketSock_bind, 1,
|
{"bind", (PyCFunction)PySocketSock_bind, 0,
|
||||||
bind_doc},
|
bind_doc},
|
||||||
{"close", (PyCFunction)PySocketSock_close, 1,
|
{"close", (PyCFunction)PySocketSock_close, 1,
|
||||||
close_doc},
|
close_doc},
|
||||||
{"connect", (PyCFunction)PySocketSock_connect, 1,
|
{"connect", (PyCFunction)PySocketSock_connect, 0,
|
||||||
connect_doc},
|
connect_doc},
|
||||||
{"connect_ex", (PyCFunction)PySocketSock_connect_ex, 1,
|
{"connect_ex", (PyCFunction)PySocketSock_connect_ex, 0,
|
||||||
connect_ex_doc},
|
connect_ex_doc},
|
||||||
#ifndef NO_DUP
|
#ifndef NO_DUP
|
||||||
{"dup", (PyCFunction)PySocketSock_dup, 1,
|
{"dup", (PyCFunction)PySocketSock_dup, 1,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue