Mercurial > cpython-lru_cache-weakref
annotate Modules/socketmodule.c @ 66978:aed2bbafa550 3.1
Blocked revisions 87324 via svnmerge
........
r87324 | r.david.murray | 2010-12-16 14:08:51 -0500 (Thu, 16 Dec 2010) | 9 lines
#10719: restore messages generated on invalid compileall args
Before the introduction of filename arguments to compileall it gave semi useful
messages about not being able to 'list' names that weren't valid directories.
This fix restores that behavior. In addition to the test for this case, the
patch also adds a test for the default behavior of compileall when no arguments
are provided, and fixes a bug in one of the previously added tests.
........
| author | R. David Murray <rdmurray@bitdance.com> |
|---|---|
| date | Thu, 16 Dec 2010 19:10:16 +0000 |
| parents | add1bc05e426 |
| children | bf94b6a73fc8 3c9232a684ae |
| rev | line source |
|---|---|
| 294 | 1 /* Socket module */ |
| 2 | |
| 3 /* | |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4 |
| 294 | 5 This module provides an interface to Berkeley socket IPC. |
| 6 | |
| 7 Limitations: | |
| 8 | |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
9 - Only AF_INET, AF_INET6 and AF_UNIX address families are supported in a |
|
44568
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
10 portable manner, though AF_PACKET, AF_NETLINK and AF_TIPC are supported |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
11 under Linux. |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
12 - No read/write operations (use sendall/recv or makefile instead). |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
13 - Additional restrictions apply on some non-Unix platforms (compensated |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
14 for by socket.py). |
| 294 | 15 |
|
2565
912813d573b4
fixed up comments describing interface
Guido van Rossum <guido@python.org>
parents:
2532
diff
changeset
|
16 Module interface: |
| 294 | 17 |
|
2565
912813d573b4
fixed up comments describing interface
Guido van Rossum <guido@python.org>
parents:
2532
diff
changeset
|
18 - socket.error: exception raised for socket specific errors |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
19 - socket.gaierror: exception raised for getaddrinfo/getnameinfo errors, |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
20 a subclass of socket.error |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
21 - socket.herror: exception raised for gethostby* errors, |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
22 a subclass of socket.error |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
23 - socket.gethostbyname(hostname) --> host IP address (string: 'dd.dd.dd.dd') |
|
2055
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
24 - socket.gethostbyaddr(IP address) --> (hostname, [alias, ...], [IP addr, ...]) |
|
2565
912813d573b4
fixed up comments describing interface
Guido van Rossum <guido@python.org>
parents:
2532
diff
changeset
|
25 - socket.gethostname() --> host name (string: 'spam' or 'spam.domain.com') |
|
4783
feba6d58d204
Added the new getprotobyname() call to the module overview at the top.
Guido van Rossum <guido@python.org>
parents:
4782
diff
changeset
|
26 - socket.getprotobyname(protocolname) --> protocol number |
|
32429
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32213
diff
changeset
|
27 - socket.getservbyname(servicename[, protocolname]) --> port number |
|
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32213
diff
changeset
|
28 - socket.getservbyport(portnumber[, protocolname]) --> service name |
|
41809
8e062e572ea4
Sockets facelift. APIs that could return binary data (e.g. aton() and
Guido van Rossum <guido@python.org>
parents:
41770
diff
changeset
|
29 - socket.socket([family[, type [, proto, fileno]]]) --> new socket object |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
30 (fileno specifies a pre-existing socket file descriptor) |
|
33063
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
31 - socket.socketpair([family[, type [, proto]]]) --> (socket, socket) |
|
3673
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
32 - socket.ntohs(16 bit value) --> new int object |
|
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
33 - socket.ntohl(32 bit value) --> new int object |
|
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
34 - socket.htons(16 bit value) --> new int object |
|
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
35 - socket.htonl(32 bit value) --> new int object |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
36 - socket.getaddrinfo(host, port [, family, socktype, proto, flags]) |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
37 --> List of (family, socktype, proto, canonname, sockaddr) |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
38 - socket.getnameinfo(sockaddr, flags) --> (host, port) |
|
2565
912813d573b4
fixed up comments describing interface
Guido van Rossum <guido@python.org>
parents:
2532
diff
changeset
|
39 - socket.AF_INET, socket.SOCK_STREAM, etc.: constants from <socket.h> |
|
28818
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
40 - socket.has_ipv6: boolean value indicating if IPv6 is supported |
|
11217
f406e78ec10b
Patch by Ben Gertzfield to add inet_aton() and inet_ntoa() calls.
Guido van Rossum <guido@python.org>
parents:
11182
diff
changeset
|
41 - socket.inet_aton(IP address) -> 32-bit packed IP representation |
|
f406e78ec10b
Patch by Ben Gertzfield to add inet_aton() and inet_ntoa() calls.
Guido van Rossum <guido@python.org>
parents:
11182
diff
changeset
|
42 - socket.inet_ntoa(packed IP) -> IP address string |
|
24293
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
43 - socket.getdefaulttimeout() -> None | float |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
44 - socket.setdefaulttimeout(None | float) |
| 294 | 45 - an Internet socket address is a pair (hostname, port) |
| 46 where hostname can be anything recognized by gethostbyname() | |
| 47 (including the dd.dd.dd.dd notation) and port is in host byte order | |
| 48 - where a hostname is returned, the dd.dd.dd.dd notation is used | |
|
2565
912813d573b4
fixed up comments describing interface
Guido van Rossum <guido@python.org>
parents:
2532
diff
changeset
|
49 - a UNIX domain socket address is a string specifying the pathname |
|
16410
3d4a7cd0bf17
SF patch 101137 from Grant Edwards
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16400
diff
changeset
|
50 - an AF_PACKET socket address is a tuple containing a string |
|
3d4a7cd0bf17
SF patch 101137 from Grant Edwards
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16400
diff
changeset
|
51 specifying the ethernet interface and an integer specifying |
|
3d4a7cd0bf17
SF patch 101137 from Grant Edwards
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16400
diff
changeset
|
52 the Ethernet protocol number to be received. For example: |
|
16427
c8ef864ba861
fix a couple last-minute bugs in the raw socket support
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16410
diff
changeset
|
53 ("eth0",0x1234). Optional 3rd,4th,5th elements in the tuple |
|
32611
8b3288f607e1
[Patch #947352 from Jason Andryuk] Add support for AF_PACKET hardware addresses
Andrew M. Kuchling <amk@amk.ca>
parents:
32578
diff
changeset
|
54 specify packet-type and ha-type/addr. |
|
44568
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
55 - an AF_TIPC socket address is expressed as |
|
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
56 (addr_type, v1, v2, v3 [, scope]); where addr_type can be one of: |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
57 TIPC_ADDR_NAMESEQ, TIPC_ADDR_NAME, and TIPC_ADDR_ID; |
|
44568
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
58 and scope can be one of: |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
59 TIPC_ZONE_SCOPE, TIPC_CLUSTER_SCOPE, and TIPC_NODE_SCOPE. |
|
44568
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
60 The meaning of v1, v2 and v3 depends on the value of addr_type: |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
61 if addr_type is TIPC_ADDR_NAME: |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
62 v1 is the server type |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
63 v2 is the port identifier |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
64 v3 is ignored |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
65 if addr_type is TIPC_ADDR_NAMESEQ: |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
66 v1 is the server type |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
67 v2 is the lower port number |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
68 v3 is the upper port number |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
69 if addr_type is TIPC_ADDR_ID: |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
70 v1 is the node |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
71 v2 is the ref |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
72 v3 is ignored |
|
44568
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
73 |
| 294 | 74 |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
75 Local naming conventions: |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
76 |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
77 - names starting with sock_ are socket object methods |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
78 - names starting with socket_ are module-level functions |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
79 - names starting with PySocket are exported through socketmodule.h |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
80 |
| 294 | 81 */ |
| 82 | |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
83 #ifdef __APPLE__ |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
84 /* |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
85 * inet_aton is not available on OSX 10.3, yet we want to use a binary |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
86 * that was build on 10.4 or later to work on that release, weak linking |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
87 * comes to the rescue. |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
88 */ |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
89 # pragma weak inet_aton |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
90 #endif |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
91 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
92 #include "Python.h" |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36684
diff
changeset
|
93 #include "structmember.h" |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
94 |
|
28818
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
95 #undef MAX |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
96 #define MAX(x, y) ((x) < (y) ? (y) : (x)) |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
97 |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
98 /* Socket object documentation */ |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
99 PyDoc_STRVAR(sock_doc, |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
100 "socket([family[, type[, proto]]]) -> socket object\n\ |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
101 \n\ |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
102 Open a socket of the given type. The family argument specifies the\n\ |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
103 address family; it defaults to AF_INET. The type argument specifies\n\ |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
104 whether this is a stream (SOCK_STREAM, this is the default)\n\ |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
105 or datagram (SOCK_DGRAM) socket. The protocol argument defaults to 0,\n\ |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
106 specifying the default protocol. Keyword arguments are accepted.\n\ |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
107 \n\ |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
108 A socket object represents one endpoint of a network connection.\n\ |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
109 \n\ |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
110 Methods of socket objects (keyword arguments not allowed):\n\ |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
111 \n\ |
|
43881
70cfc7b504c2
This is roughly socket2.diff from issue 1378, with a few changes applied
Guido van Rossum <guido@python.org>
parents:
43877
diff
changeset
|
112 _accept() -- accept connection, returning new socket fd and client address\n\ |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
113 bind(addr) -- bind the socket to a local address\n\ |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
114 close() -- close the socket\n\ |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
115 connect(addr) -- connect the socket to a remote address\n\ |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
116 connect_ex(addr) -- connect, return an error code instead of an exception\n\ |
|
43881
70cfc7b504c2
This is roughly socket2.diff from issue 1378, with a few changes applied
Guido van Rossum <guido@python.org>
parents:
43877
diff
changeset
|
117 _dup() -- return a new socket fd duplicated from fileno()\n\ |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
118 fileno() -- return underlying file descriptor\n\ |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
119 getpeername() -- return remote address [*]\n\ |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
120 getsockname() -- return local address\n\ |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
121 getsockopt(level, optname[, buflen]) -- get socket options\n\ |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
122 gettimeout() -- return timeout or None\n\ |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
123 listen(n) -- start listening for incoming connections\n\ |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
124 recv(buflen[, flags]) -- receive data\n\ |
|
38673
a19c20c5e5c7
Merge the rest of the trunk.
Thomas Wouters <thomas@python.org>
parents:
38669
diff
changeset
|
125 recv_into(buffer[, nbytes[, flags]]) -- receive data (into a buffer)\n\ |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
126 recvfrom(buflen[, flags]) -- receive data and sender\'s address\n\ |
|
38673
a19c20c5e5c7
Merge the rest of the trunk.
Thomas Wouters <thomas@python.org>
parents:
38669
diff
changeset
|
127 recvfrom_into(buffer[, nbytes, [, flags])\n\ |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
128 -- receive data and sender\'s address (into a buffer)\n\ |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
129 sendall(data[, flags]) -- send all data\n\ |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
130 send(data[, flags]) -- send data, may not send all of it\n\ |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
131 sendto(data[, flags], addr) -- send data to a given address\n\ |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
132 setblocking(0 | 1) -- set or clear the blocking I/O flag\n\ |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
133 setsockopt(level, optname, value) -- set socket options\n\ |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
134 settimeout(None | float) -- set or clear the timeout\n\ |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
135 shutdown(how) -- shut down traffic in one or both directions\n\ |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
136 \n\ |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
137 [*] not available on all platforms!"); |
|
10442
9184c9e108f9
Clean up pass for the previous patches.
Guido van Rossum <guido@python.org>
parents:
10441
diff
changeset
|
138 |
|
30722
651fc8d98d99
Fix a bunch of typos in documentation, docstrings and comments.
Walter Dörwald <walter@livinglogic.de>
parents:
30683
diff
changeset
|
139 /* XXX This is a terrible mess of platform-dependent preprocessor hacks. |
|
20727
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
140 I hope some day someone can clean this up please... */ |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
141 |
|
11288
adf87d13a0c1
(1) On Linux, we really need to trust the configure script to select
Guido van Rossum <guido@python.org>
parents:
11268
diff
changeset
|
142 /* Hacks for gethostbyname_r(). On some non-Linux platforms, the configure |
|
adf87d13a0c1
(1) On Linux, we really need to trust the configure script to select
Guido van Rossum <guido@python.org>
parents:
11268
diff
changeset
|
143 script doesn't get this right, so we hardcode some platform checks below. |
|
adf87d13a0c1
(1) On Linux, we really need to trust the configure script to select
Guido van Rossum <guido@python.org>
parents:
11268
diff
changeset
|
144 On the other hand, not all Linux versions agree, so there the settings |
|
adf87d13a0c1
(1) On Linux, we really need to trust the configure script to select
Guido van Rossum <guido@python.org>
parents:
11268
diff
changeset
|
145 computed by the configure script are needed! */ |
|
adf87d13a0c1
(1) On Linux, we really need to trust the configure script to select
Guido van Rossum <guido@python.org>
parents:
11268
diff
changeset
|
146 |
|
adf87d13a0c1
(1) On Linux, we really need to trust the configure script to select
Guido van Rossum <guido@python.org>
parents:
11268
diff
changeset
|
147 #ifndef linux |
|
21959
3957d155f8c5
Break SSL support out of _socket module and place it into a new
Marc-André Lemburg <mal@egenix.com>
parents:
21757
diff
changeset
|
148 # undef HAVE_GETHOSTBYNAME_R_3_ARG |
|
3957d155f8c5
Break SSL support out of _socket module and place it into a new
Marc-André Lemburg <mal@egenix.com>
parents:
21757
diff
changeset
|
149 # undef HAVE_GETHOSTBYNAME_R_5_ARG |
|
3957d155f8c5
Break SSL support out of _socket module and place it into a new
Marc-André Lemburg <mal@egenix.com>
parents:
21757
diff
changeset
|
150 # undef HAVE_GETHOSTBYNAME_R_6_ARG |
|
11288
adf87d13a0c1
(1) On Linux, we really need to trust the configure script to select
Guido van Rossum <guido@python.org>
parents:
11268
diff
changeset
|
151 #endif |
|
10454
dad14ffe1c22
Implement two suggestions by Jonathan Giddy: (1) in AIX, clear the
Guido van Rossum <guido@python.org>
parents:
10453
diff
changeset
|
152 |
|
10579
1ed1eb5bc6ec
Put back __osf__ support for gethostbyname_r(); the real bug was that
Guido van Rossum <guido@python.org>
parents:
10561
diff
changeset
|
153 #ifndef WITH_THREAD |
|
21959
3957d155f8c5
Break SSL support out of _socket module and place it into a new
Marc-André Lemburg <mal@egenix.com>
parents:
21757
diff
changeset
|
154 # undef HAVE_GETHOSTBYNAME_R |
|
10579
1ed1eb5bc6ec
Put back __osf__ support for gethostbyname_r(); the real bug was that
Guido van Rossum <guido@python.org>
parents:
10561
diff
changeset
|
155 #endif |
|
1ed1eb5bc6ec
Put back __osf__ support for gethostbyname_r(); the real bug was that
Guido van Rossum <guido@python.org>
parents:
10561
diff
changeset
|
156 |
|
10454
dad14ffe1c22
Implement two suggestions by Jonathan Giddy: (1) in AIX, clear the
Guido van Rossum <guido@python.org>
parents:
10453
diff
changeset
|
157 #ifdef HAVE_GETHOSTBYNAME_R |
|
21959
3957d155f8c5
Break SSL support out of _socket module and place it into a new
Marc-André Lemburg <mal@egenix.com>
parents:
21757
diff
changeset
|
158 # if defined(_AIX) || defined(__osf__) |
|
3957d155f8c5
Break SSL support out of _socket module and place it into a new
Marc-André Lemburg <mal@egenix.com>
parents:
21757
diff
changeset
|
159 # define HAVE_GETHOSTBYNAME_R_3_ARG |
|
3957d155f8c5
Break SSL support out of _socket module and place it into a new
Marc-André Lemburg <mal@egenix.com>
parents:
21757
diff
changeset
|
160 # elif defined(__sun) || defined(__sgi) |
|
3957d155f8c5
Break SSL support out of _socket module and place it into a new
Marc-André Lemburg <mal@egenix.com>
parents:
21757
diff
changeset
|
161 # define HAVE_GETHOSTBYNAME_R_5_ARG |
|
3957d155f8c5
Break SSL support out of _socket module and place it into a new
Marc-André Lemburg <mal@egenix.com>
parents:
21757
diff
changeset
|
162 # elif defined(linux) |
|
11288
adf87d13a0c1
(1) On Linux, we really need to trust the configure script to select
Guido van Rossum <guido@python.org>
parents:
11268
diff
changeset
|
163 /* Rely on the configure script */ |
|
21959
3957d155f8c5
Break SSL support out of _socket module and place it into a new
Marc-André Lemburg <mal@egenix.com>
parents:
21757
diff
changeset
|
164 # else |
|
3957d155f8c5
Break SSL support out of _socket module and place it into a new
Marc-André Lemburg <mal@egenix.com>
parents:
21757
diff
changeset
|
165 # undef HAVE_GETHOSTBYNAME_R |
|
3957d155f8c5
Break SSL support out of _socket module and place it into a new
Marc-André Lemburg <mal@egenix.com>
parents:
21757
diff
changeset
|
166 # endif |
|
10454
dad14ffe1c22
Implement two suggestions by Jonathan Giddy: (1) in AIX, clear the
Guido van Rossum <guido@python.org>
parents:
10453
diff
changeset
|
167 #endif |
|
dad14ffe1c22
Implement two suggestions by Jonathan Giddy: (1) in AIX, clear the
Guido van Rossum <guido@python.org>
parents:
10453
diff
changeset
|
168 |
|
23723
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
169 #if !defined(HAVE_GETHOSTBYNAME_R) && defined(WITH_THREAD) && \ |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
170 !defined(MS_WINDOWS) |
|
21959
3957d155f8c5
Break SSL support out of _socket module and place it into a new
Marc-André Lemburg <mal@egenix.com>
parents:
21757
diff
changeset
|
171 # define USE_GETHOSTBYNAME_LOCK |
|
10442
9184c9e108f9
Clean up pass for the previous patches.
Guido van Rossum <guido@python.org>
parents:
10441
diff
changeset
|
172 #endif |
|
9184c9e108f9
Clean up pass for the previous patches.
Guido van Rossum <guido@python.org>
parents:
10441
diff
changeset
|
173 |
|
35635
27e1426b7f31
Patch #1288833: Removed thread lock from socket.getaddrinfo on
Hye-Shik Chang <hyeshik@gmail.com>
parents:
35551
diff
changeset
|
174 /* To use __FreeBSD_version */ |
|
27e1426b7f31
Patch #1288833: Removed thread lock from socket.getaddrinfo on
Hye-Shik Chang <hyeshik@gmail.com>
parents:
35551
diff
changeset
|
175 #ifdef HAVE_SYS_PARAM_H |
|
27e1426b7f31
Patch #1288833: Removed thread lock from socket.getaddrinfo on
Hye-Shik Chang <hyeshik@gmail.com>
parents:
35551
diff
changeset
|
176 #include <sys/param.h> |
|
27e1426b7f31
Patch #1288833: Removed thread lock from socket.getaddrinfo on
Hye-Shik Chang <hyeshik@gmail.com>
parents:
35551
diff
changeset
|
177 #endif |
|
29035
e1d5ca8ab7dc
[ 731644] & [ 604210 ] Release the GIL around getaddrinfo(), yet protect
Just van Rossum <just@letterror.com>
parents:
28953
diff
changeset
|
178 /* On systems on which getaddrinfo() is believed to not be thread-safe, |
|
29036
ccf7e138a126
Addition to [731644]: also use the lock when using the getaddrinfo
Just van Rossum <just@letterror.com>
parents:
29035
diff
changeset
|
179 (this includes the getaddrinfo emulation) protect access with a lock. */ |
|
35635
27e1426b7f31
Patch #1288833: Removed thread lock from socket.getaddrinfo on
Hye-Shik Chang <hyeshik@gmail.com>
parents:
35551
diff
changeset
|
180 #if defined(WITH_THREAD) && (defined(__APPLE__) || \ |
|
27e1426b7f31
Patch #1288833: Removed thread lock from socket.getaddrinfo on
Hye-Shik Chang <hyeshik@gmail.com>
parents:
35551
diff
changeset
|
181 (defined(__FreeBSD__) && __FreeBSD_version+0 < 503000) || \ |
|
39442
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
182 defined(__OpenBSD__) || defined(__NetBSD__) || \ |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
183 defined(__VMS) || !defined(HAVE_GETADDRINFO)) |
|
29035
e1d5ca8ab7dc
[ 731644] & [ 604210 ] Release the GIL around getaddrinfo(), yet protect
Just van Rossum <just@letterror.com>
parents:
28953
diff
changeset
|
184 #define USE_GETADDRINFO_LOCK |
|
e1d5ca8ab7dc
[ 731644] & [ 604210 ] Release the GIL around getaddrinfo(), yet protect
Just van Rossum <just@letterror.com>
parents:
28953
diff
changeset
|
185 #endif |
|
e1d5ca8ab7dc
[ 731644] & [ 604210 ] Release the GIL around getaddrinfo(), yet protect
Just van Rossum <just@letterror.com>
parents:
28953
diff
changeset
|
186 |
|
e1d5ca8ab7dc
[ 731644] & [ 604210 ] Release the GIL around getaddrinfo(), yet protect
Just van Rossum <just@letterror.com>
parents:
28953
diff
changeset
|
187 #ifdef USE_GETADDRINFO_LOCK |
|
e1d5ca8ab7dc
[ 731644] & [ 604210 ] Release the GIL around getaddrinfo(), yet protect
Just van Rossum <just@letterror.com>
parents:
28953
diff
changeset
|
188 #define ACQUIRE_GETADDRINFO_LOCK PyThread_acquire_lock(netdb_lock, 1); |
|
e1d5ca8ab7dc
[ 731644] & [ 604210 ] Release the GIL around getaddrinfo(), yet protect
Just van Rossum <just@letterror.com>
parents:
28953
diff
changeset
|
189 #define RELEASE_GETADDRINFO_LOCK PyThread_release_lock(netdb_lock); |
|
e1d5ca8ab7dc
[ 731644] & [ 604210 ] Release the GIL around getaddrinfo(), yet protect
Just van Rossum <just@letterror.com>
parents:
28953
diff
changeset
|
190 #else |
|
e1d5ca8ab7dc
[ 731644] & [ 604210 ] Release the GIL around getaddrinfo(), yet protect
Just van Rossum <just@letterror.com>
parents:
28953
diff
changeset
|
191 #define ACQUIRE_GETADDRINFO_LOCK |
|
e1d5ca8ab7dc
[ 731644] & [ 604210 ] Release the GIL around getaddrinfo(), yet protect
Just van Rossum <just@letterror.com>
parents:
28953
diff
changeset
|
192 #define RELEASE_GETADDRINFO_LOCK |
|
e1d5ca8ab7dc
[ 731644] & [ 604210 ] Release the GIL around getaddrinfo(), yet protect
Just van Rossum <just@letterror.com>
parents:
28953
diff
changeset
|
193 #endif |
|
e1d5ca8ab7dc
[ 731644] & [ 604210 ] Release the GIL around getaddrinfo(), yet protect
Just van Rossum <just@letterror.com>
parents:
28953
diff
changeset
|
194 |
|
e1d5ca8ab7dc
[ 731644] & [ 604210 ] Release the GIL around getaddrinfo(), yet protect
Just van Rossum <just@letterror.com>
parents:
28953
diff
changeset
|
195 #if defined(USE_GETHOSTBYNAME_LOCK) || defined(USE_GETADDRINFO_LOCK) |
|
21959
3957d155f8c5
Break SSL support out of _socket module and place it into a new
Marc-André Lemburg <mal@egenix.com>
parents:
21757
diff
changeset
|
196 # include "pythread.h" |
|
7942
ee2aaa2f722a
Threading speedup patches by Christopher Lindblad <cjl@infoseek.com>.
Guido van Rossum <guido@python.org>
parents:
6718
diff
changeset
|
197 #endif |
| 294 | 198 |
|
6626
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
199 #if defined(PYCC_VACPP) |
|
21959
3957d155f8c5
Break SSL support out of _socket module and place it into a new
Marc-André Lemburg <mal@egenix.com>
parents:
21757
diff
changeset
|
200 # include <types.h> |
|
3957d155f8c5
Break SSL support out of _socket module and place it into a new
Marc-André Lemburg <mal@egenix.com>
parents:
21757
diff
changeset
|
201 # include <io.h> |
|
3957d155f8c5
Break SSL support out of _socket module and place it into a new
Marc-André Lemburg <mal@egenix.com>
parents:
21757
diff
changeset
|
202 # include <sys/ioctl.h> |
|
3957d155f8c5
Break SSL support out of _socket module and place it into a new
Marc-André Lemburg <mal@egenix.com>
parents:
21757
diff
changeset
|
203 # include <utils.h> |
|
3957d155f8c5
Break SSL support out of _socket module and place it into a new
Marc-André Lemburg <mal@egenix.com>
parents:
21757
diff
changeset
|
204 # include <ctype.h> |
|
6626
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
205 #endif |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
206 |
|
26551
0c995cd07026
Don't include <ioctl.h> unless on __VMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
26550
diff
changeset
|
207 #if defined(__VMS) |
|
26550
b9c912e2c3c0
Patch #614055: Support OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
25994
diff
changeset
|
208 # include <ioctl.h> |
|
b9c912e2c3c0
Patch #614055: Support OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
25994
diff
changeset
|
209 #endif |
|
b9c912e2c3c0
Patch #614055: Support OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
25994
diff
changeset
|
210 |
|
6626
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
211 #if defined(PYOS_OS2) |
|
21959
3957d155f8c5
Break SSL support out of _socket module and place it into a new
Marc-André Lemburg <mal@egenix.com>
parents:
21757
diff
changeset
|
212 # define INCL_DOS |
|
3957d155f8c5
Break SSL support out of _socket module and place it into a new
Marc-André Lemburg <mal@egenix.com>
parents:
21757
diff
changeset
|
213 # define INCL_DOSERRORS |
|
3957d155f8c5
Break SSL support out of _socket module and place it into a new
Marc-André Lemburg <mal@egenix.com>
parents:
21757
diff
changeset
|
214 # define INCL_NOPMAPI |
|
3957d155f8c5
Break SSL support out of _socket module and place it into a new
Marc-André Lemburg <mal@egenix.com>
parents:
21757
diff
changeset
|
215 # include <os2.h> |
|
6626
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
216 #endif |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
217 |
|
29929
08d2636b8e58
Get socketmodule compiling on IRIX 6.5.10.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
29790
diff
changeset
|
218 #if defined(__sgi) && _COMPILER_VERSION>700 && !_SGIAPI |
|
25327
337fcc24985b
Patch #608999: Fix portability problems with MIPSPro 7.x
Martin v. Löwis <martin@v.loewis.de>
parents:
25105
diff
changeset
|
219 /* make sure that the reentrant (gethostbyaddr_r etc) |
|
337fcc24985b
Patch #608999: Fix portability problems with MIPSPro 7.x
Martin v. Löwis <martin@v.loewis.de>
parents:
25105
diff
changeset
|
220 functions are declared correctly if compiling with |
|
337fcc24985b
Patch #608999: Fix portability problems with MIPSPro 7.x
Martin v. Löwis <martin@v.loewis.de>
parents:
25105
diff
changeset
|
221 MIPSPro 7.x in ANSI C mode (default) */ |
|
29929
08d2636b8e58
Get socketmodule compiling on IRIX 6.5.10.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
29790
diff
changeset
|
222 |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
223 /* XXX Using _SGIAPI is the wrong thing, |
|
29929
08d2636b8e58
Get socketmodule compiling on IRIX 6.5.10.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
29790
diff
changeset
|
224 but I don't know what the right thing is. */ |
|
33478
1b3ac674a57c
Patch for compilation on IRIX from rwgk on http://python.org/sf/728330
Trent Mick <trentm@activestate.com>
parents:
33427
diff
changeset
|
225 #undef _SGIAPI /* to avoid warning */ |
|
25327
337fcc24985b
Patch #608999: Fix portability problems with MIPSPro 7.x
Martin v. Löwis <martin@v.loewis.de>
parents:
25105
diff
changeset
|
226 #define _SGIAPI 1 |
|
29929
08d2636b8e58
Get socketmodule compiling on IRIX 6.5.10.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
29790
diff
changeset
|
227 |
|
33478
1b3ac674a57c
Patch for compilation on IRIX from rwgk on http://python.org/sf/728330
Trent Mick <trentm@activestate.com>
parents:
33427
diff
changeset
|
228 #undef _XOPEN_SOURCE |
|
1b3ac674a57c
Patch for compilation on IRIX from rwgk on http://python.org/sf/728330
Trent Mick <trentm@activestate.com>
parents:
33427
diff
changeset
|
229 #include <sys/socket.h> |
|
1b3ac674a57c
Patch for compilation on IRIX from rwgk on http://python.org/sf/728330
Trent Mick <trentm@activestate.com>
parents:
33427
diff
changeset
|
230 #include <sys/types.h> |
|
1b3ac674a57c
Patch for compilation on IRIX from rwgk on http://python.org/sf/728330
Trent Mick <trentm@activestate.com>
parents:
33427
diff
changeset
|
231 #include <netinet/in.h> |
|
1b3ac674a57c
Patch for compilation on IRIX from rwgk on http://python.org/sf/728330
Trent Mick <trentm@activestate.com>
parents:
33427
diff
changeset
|
232 #ifdef _SS_ALIGNSIZE |
|
1b3ac674a57c
Patch for compilation on IRIX from rwgk on http://python.org/sf/728330
Trent Mick <trentm@activestate.com>
parents:
33427
diff
changeset
|
233 #define HAVE_GETADDRINFO 1 |
|
1b3ac674a57c
Patch for compilation on IRIX from rwgk on http://python.org/sf/728330
Trent Mick <trentm@activestate.com>
parents:
33427
diff
changeset
|
234 #define HAVE_GETNAMEINFO 1 |
|
1b3ac674a57c
Patch for compilation on IRIX from rwgk on http://python.org/sf/728330
Trent Mick <trentm@activestate.com>
parents:
33427
diff
changeset
|
235 #endif |
|
1b3ac674a57c
Patch for compilation on IRIX from rwgk on http://python.org/sf/728330
Trent Mick <trentm@activestate.com>
parents:
33427
diff
changeset
|
236 |
|
29929
08d2636b8e58
Get socketmodule compiling on IRIX 6.5.10.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
29790
diff
changeset
|
237 #define HAVE_INET_PTON |
|
08d2636b8e58
Get socketmodule compiling on IRIX 6.5.10.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
29790
diff
changeset
|
238 #include <netdb.h> |
|
25327
337fcc24985b
Patch #608999: Fix portability problems with MIPSPro 7.x
Martin v. Löwis <martin@v.loewis.de>
parents:
25105
diff
changeset
|
239 #endif |
|
337fcc24985b
Patch #608999: Fix portability problems with MIPSPro 7.x
Martin v. Löwis <martin@v.loewis.de>
parents:
25105
diff
changeset
|
240 |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
241 /* Irix 6.5 fails to define this variable at all. This is needed |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
242 for both GCC and SGI's compiler. I'd say that the SGI headers |
|
36610
0671f3c462d5
Bug #854823: socketmodule now builds on Sun platforms even when
Georg Brandl <georg@python.org>
parents:
36476
diff
changeset
|
243 are just busted. Same thing for Solaris. */ |
|
0671f3c462d5
Bug #854823: socketmodule now builds on Sun platforms even when
Georg Brandl <georg@python.org>
parents:
36476
diff
changeset
|
244 #if (defined(__sgi) || defined(sun)) && !defined(INET_ADDRSTRLEN) |
|
30646
a6fb6822814a
made the SGI INET_ADDRSTRLEN define apply for any compiler on Irix. Both the
Anthony Baxter <anthonybaxter@gmail.com>
parents:
30630
diff
changeset
|
245 #define INET_ADDRSTRLEN 16 |
|
a6fb6822814a
made the SGI INET_ADDRSTRLEN define apply for any compiler on Irix. Both the
Anthony Baxter <anthonybaxter@gmail.com>
parents:
30630
diff
changeset
|
246 #endif |
|
a6fb6822814a
made the SGI INET_ADDRSTRLEN define apply for any compiler on Irix. Both the
Anthony Baxter <anthonybaxter@gmail.com>
parents:
30630
diff
changeset
|
247 |
|
21959
3957d155f8c5
Break SSL support out of _socket module and place it into a new
Marc-André Lemburg <mal@egenix.com>
parents:
21757
diff
changeset
|
248 /* Generic includes */ |
|
39442
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
249 #ifdef HAVE_SYS_TYPES_H |
|
1746
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1413
diff
changeset
|
250 #include <sys/types.h> |
|
39442
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
251 #endif |
|
21959
3957d155f8c5
Break SSL support out of _socket module and place it into a new
Marc-André Lemburg <mal@egenix.com>
parents:
21757
diff
changeset
|
252 |
|
21961
ea23e6e49290
Also fix the comment.
Marc-André Lemburg <mal@egenix.com>
parents:
21960
diff
changeset
|
253 /* Generic socket object definitions and includes */ |
|
21959
3957d155f8c5
Break SSL support out of _socket module and place it into a new
Marc-André Lemburg <mal@egenix.com>
parents:
21757
diff
changeset
|
254 #define PySocket_BUILDING_SOCKET |
|
21960
7a917ad8f442
Fix the name of the header file.
Marc-André Lemburg <mal@egenix.com>
parents:
21959
diff
changeset
|
255 #include "socketmodule.h" |
|
21959
3957d155f8c5
Break SSL support out of _socket module and place it into a new
Marc-André Lemburg <mal@egenix.com>
parents:
21757
diff
changeset
|
256 |
|
3957d155f8c5
Break SSL support out of _socket module and place it into a new
Marc-André Lemburg <mal@egenix.com>
parents:
21757
diff
changeset
|
257 /* Addressing includes */ |
|
3957d155f8c5
Break SSL support out of _socket module and place it into a new
Marc-André Lemburg <mal@egenix.com>
parents:
21757
diff
changeset
|
258 |
|
3738
ce74bba8a6a6
Slightly different Windows ifdefs
Guido van Rossum <guido@python.org>
parents:
3702
diff
changeset
|
259 #ifndef MS_WINDOWS |
|
21959
3957d155f8c5
Break SSL support out of _socket module and place it into a new
Marc-André Lemburg <mal@egenix.com>
parents:
21757
diff
changeset
|
260 |
|
3957d155f8c5
Break SSL support out of _socket module and place it into a new
Marc-André Lemburg <mal@egenix.com>
parents:
21757
diff
changeset
|
261 /* Non-MS WINDOWS includes */ |
|
3957d155f8c5
Break SSL support out of _socket module and place it into a new
Marc-André Lemburg <mal@egenix.com>
parents:
21757
diff
changeset
|
262 # include <netdb.h> |
|
11217
f406e78ec10b
Patch by Ben Gertzfield to add inet_aton() and inet_ntoa() calls.
Guido van Rossum <guido@python.org>
parents:
11182
diff
changeset
|
263 |
|
11288
adf87d13a0c1
(1) On Linux, we really need to trust the configure script to select
Guido van Rossum <guido@python.org>
parents:
11268
diff
changeset
|
264 /* Headers needed for inet_ntoa() and inet_addr() */ |
| 42645 | 265 # if defined(PYOS_OS2) && defined(PYCC_VACPP) |
|
21959
3957d155f8c5
Break SSL support out of _socket module and place it into a new
Marc-André Lemburg <mal@egenix.com>
parents:
21757
diff
changeset
|
266 # include <netdb.h> |
|
20871
f576ffd57966
SF patch 473749 compile under OS/2 VA C++, from Michael Muller.
Tim Peters <tim.peters@gmail.com>
parents:
20853
diff
changeset
|
267 typedef size_t socklen_t; |
|
21959
3957d155f8c5
Break SSL support out of _socket module and place it into a new
Marc-André Lemburg <mal@egenix.com>
parents:
21757
diff
changeset
|
268 # else |
|
3957d155f8c5
Break SSL support out of _socket module and place it into a new
Marc-André Lemburg <mal@egenix.com>
parents:
21757
diff
changeset
|
269 # include <arpa/inet.h> |
|
3957d155f8c5
Break SSL support out of _socket module and place it into a new
Marc-André Lemburg <mal@egenix.com>
parents:
21757
diff
changeset
|
270 # endif |
|
3957d155f8c5
Break SSL support out of _socket module and place it into a new
Marc-André Lemburg <mal@egenix.com>
parents:
21757
diff
changeset
|
271 |
|
3957d155f8c5
Break SSL support out of _socket module and place it into a new
Marc-André Lemburg <mal@egenix.com>
parents:
21757
diff
changeset
|
272 # include <fcntl.h> |
|
3957d155f8c5
Break SSL support out of _socket module and place it into a new
Marc-André Lemburg <mal@egenix.com>
parents:
21757
diff
changeset
|
273 |
|
20654
edd9d0b3c47e
SF patch #474590 -- RISC OS support
Guido van Rossum <guido@python.org>
parents:
20648
diff
changeset
|
274 #else |
|
21959
3957d155f8c5
Break SSL support out of _socket module and place it into a new
Marc-André Lemburg <mal@egenix.com>
parents:
21757
diff
changeset
|
275 |
|
3957d155f8c5
Break SSL support out of _socket module and place it into a new
Marc-André Lemburg <mal@egenix.com>
parents:
21757
diff
changeset
|
276 /* MS_WINDOWS includes */ |
|
39442
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
277 # ifdef HAVE_FCNTL_H |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
278 # include <fcntl.h> |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
279 # endif |
|
21959
3957d155f8c5
Break SSL support out of _socket module and place it into a new
Marc-André Lemburg <mal@egenix.com>
parents:
21757
diff
changeset
|
280 |
|
16410
3d4a7cd0bf17
SF patch 101137 from Grant Edwards
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16400
diff
changeset
|
281 #endif |
|
3d4a7cd0bf17
SF patch 101137 from Grant Edwards
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16400
diff
changeset
|
282 |
|
31504
2abc52c3d4c2
remove support for missing ANSI C header files (limits.h, stddef.h, etc).
Skip Montanaro <skip@pobox.com>
parents:
31443
diff
changeset
|
283 #include <stddef.h> |
|
18263
41491d196748
Provide a definition for offsetof.
Martin v. Löwis <martin@v.loewis.de>
parents:
18262
diff
changeset
|
284 |
|
41491d196748
Provide a definition for offsetof.
Martin v. Löwis <martin@v.loewis.de>
parents:
18262
diff
changeset
|
285 #ifndef offsetof |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
286 # define offsetof(type, member) ((size_t)(&((type *)0)->member)) |
|
18263
41491d196748
Provide a definition for offsetof.
Martin v. Löwis <martin@v.loewis.de>
parents:
18262
diff
changeset
|
287 #endif |
|
41491d196748
Provide a definition for offsetof.
Martin v. Löwis <martin@v.loewis.de>
parents:
18262
diff
changeset
|
288 |
|
25994
bb813346b227
Use O_NONBLOCK rather than O_NDELAY, so we get POSIX non-blocking I/O.
Neal Norwitz <nnorwitz@gmail.com>
parents:
25327
diff
changeset
|
289 #ifndef O_NONBLOCK |
|
bb813346b227
Use O_NONBLOCK rather than O_NDELAY, so we get POSIX non-blocking I/O.
Neal Norwitz <nnorwitz@gmail.com>
parents:
25327
diff
changeset
|
290 # define O_NONBLOCK O_NDELAY |
|
2055
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
291 #endif |
|
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
292 |
|
33427
8480b72aa624
Apply patch from http://python.org/sf/728330 to fix socket module compilation on Solaris 2.6, HP-UX 11, AIX 5.1 and (possibly) some IRIX versions.
Trent Mick <trentm@activestate.com>
parents:
33280
diff
changeset
|
293 /* include Python's addrinfo.h unless it causes trouble */ |
|
8480b72aa624
Apply patch from http://python.org/sf/728330 to fix socket module compilation on Solaris 2.6, HP-UX 11, AIX 5.1 and (possibly) some IRIX versions.
Trent Mick <trentm@activestate.com>
parents:
33280
diff
changeset
|
294 #if defined(__sgi) && _COMPILER_VERSION>700 && defined(_SS_ALIGNSIZE) |
|
8480b72aa624
Apply patch from http://python.org/sf/728330 to fix socket module compilation on Solaris 2.6, HP-UX 11, AIX 5.1 and (possibly) some IRIX versions.
Trent Mick <trentm@activestate.com>
parents:
33280
diff
changeset
|
295 /* Do not include addinfo.h on some newer IRIX versions. |
|
8480b72aa624
Apply patch from http://python.org/sf/728330 to fix socket module compilation on Solaris 2.6, HP-UX 11, AIX 5.1 and (possibly) some IRIX versions.
Trent Mick <trentm@activestate.com>
parents:
33280
diff
changeset
|
296 * _SS_ALIGNSIZE is defined in sys/socket.h by 6.5.21, |
|
8480b72aa624
Apply patch from http://python.org/sf/728330 to fix socket module compilation on Solaris 2.6, HP-UX 11, AIX 5.1 and (possibly) some IRIX versions.
Trent Mick <trentm@activestate.com>
parents:
33280
diff
changeset
|
297 * for example, but not by 6.5.10. |
|
8480b72aa624
Apply patch from http://python.org/sf/728330 to fix socket module compilation on Solaris 2.6, HP-UX 11, AIX 5.1 and (possibly) some IRIX versions.
Trent Mick <trentm@activestate.com>
parents:
33280
diff
changeset
|
298 */ |
|
39442
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
299 #elif defined(_MSC_VER) && _MSC_VER>1201 |
|
33427
8480b72aa624
Apply patch from http://python.org/sf/728330 to fix socket module compilation on Solaris 2.6, HP-UX 11, AIX 5.1 and (possibly) some IRIX versions.
Trent Mick <trentm@activestate.com>
parents:
33280
diff
changeset
|
300 /* Do not include addrinfo.h for MSVC7 or greater. 'addrinfo' and |
|
8480b72aa624
Apply patch from http://python.org/sf/728330 to fix socket module compilation on Solaris 2.6, HP-UX 11, AIX 5.1 and (possibly) some IRIX versions.
Trent Mick <trentm@activestate.com>
parents:
33280
diff
changeset
|
301 * EAI_* constants are defined in (the already included) ws2tcpip.h. |
|
8480b72aa624
Apply patch from http://python.org/sf/728330 to fix socket module compilation on Solaris 2.6, HP-UX 11, AIX 5.1 and (possibly) some IRIX versions.
Trent Mick <trentm@activestate.com>
parents:
33280
diff
changeset
|
302 */ |
|
8480b72aa624
Apply patch from http://python.org/sf/728330 to fix socket module compilation on Solaris 2.6, HP-UX 11, AIX 5.1 and (possibly) some IRIX versions.
Trent Mick <trentm@activestate.com>
parents:
33280
diff
changeset
|
303 #else |
|
8480b72aa624
Apply patch from http://python.org/sf/728330 to fix socket module compilation on Solaris 2.6, HP-UX 11, AIX 5.1 and (possibly) some IRIX versions.
Trent Mick <trentm@activestate.com>
parents:
33280
diff
changeset
|
304 # include "addrinfo.h" |
|
8480b72aa624
Apply patch from http://python.org/sf/728330 to fix socket module compilation on Solaris 2.6, HP-UX 11, AIX 5.1 and (possibly) some IRIX versions.
Trent Mick <trentm@activestate.com>
parents:
33280
diff
changeset
|
305 #endif |
|
33066
cda0455bd0a0
Bug #1001857: socketmodule does not build under cygwin
Jason Tishler <jason@tishler.net>
parents:
33063
diff
changeset
|
306 |
|
18262
6b0a8157be3b
Emulate inet_{pton,ntop} on systems that don't provide it.
Martin v. Löwis <martin@v.loewis.de>
parents:
18253
diff
changeset
|
307 #ifndef HAVE_INET_PTON |
|
43926
2de7d00fbf19
The patch from weck does a better job than my original idea. Thanks!
Christian Heimes <christian@cheimes.de>
parents:
43881
diff
changeset
|
308 #if !defined(NTDDI_VERSION) || (NTDDI_VERSION < NTDDI_LONGHORN) |
|
23723
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
309 int inet_pton(int af, const char *src, void *dst); |
|
18790
7cd22bf56d7b
Silence warnings in MSVC++: hide unused variables, add constness back to
Martin v. Löwis <martin@v.loewis.de>
parents:
18753
diff
changeset
|
310 const char *inet_ntop(int af, const void *src, char *dst, socklen_t size); |
|
18262
6b0a8157be3b
Emulate inet_{pton,ntop} on systems that don't provide it.
Martin v. Löwis <martin@v.loewis.de>
parents:
18253
diff
changeset
|
311 #endif |
| 43874 | 312 #endif |
|
18262
6b0a8157be3b
Emulate inet_{pton,ntop} on systems that don't provide it.
Martin v. Löwis <martin@v.loewis.de>
parents:
18253
diff
changeset
|
313 |
|
18954
fefcc1e80cee
Do not use the system getaddrinfo on Mac OS X. Fixes bug #445928.
Martin v. Löwis <martin@v.loewis.de>
parents:
18915
diff
changeset
|
314 #ifdef __APPLE__ |
|
fefcc1e80cee
Do not use the system getaddrinfo on Mac OS X. Fixes bug #445928.
Martin v. Löwis <martin@v.loewis.de>
parents:
18915
diff
changeset
|
315 /* On OS X, getaddrinfo returns no error indication of lookup |
|
fefcc1e80cee
Do not use the system getaddrinfo on Mac OS X. Fixes bug #445928.
Martin v. Löwis <martin@v.loewis.de>
parents:
18915
diff
changeset
|
316 failure, so we must use the emulation instead of the libinfo |
|
fefcc1e80cee
Do not use the system getaddrinfo on Mac OS X. Fixes bug #445928.
Martin v. Löwis <martin@v.loewis.de>
parents:
18915
diff
changeset
|
317 implementation. Unfortunately, performing an autoconf test |
|
fefcc1e80cee
Do not use the system getaddrinfo on Mac OS X. Fixes bug #445928.
Martin v. Löwis <martin@v.loewis.de>
parents:
18915
diff
changeset
|
318 for this bug would require DNS access for the machine performing |
|
fefcc1e80cee
Do not use the system getaddrinfo on Mac OS X. Fixes bug #445928.
Martin v. Löwis <martin@v.loewis.de>
parents:
18915
diff
changeset
|
319 the configuration, which is not acceptable. Therefore, we |
|
fefcc1e80cee
Do not use the system getaddrinfo on Mac OS X. Fixes bug #445928.
Martin v. Löwis <martin@v.loewis.de>
parents:
18915
diff
changeset
|
320 determine the bug just by checking for __APPLE__. If this bug |
|
fefcc1e80cee
Do not use the system getaddrinfo on Mac OS X. Fixes bug #445928.
Martin v. Löwis <martin@v.loewis.de>
parents:
18915
diff
changeset
|
321 gets ever fixed, perhaps checking for sys/version.h would be |
|
fefcc1e80cee
Do not use the system getaddrinfo on Mac OS X. Fixes bug #445928.
Martin v. Löwis <martin@v.loewis.de>
parents:
18915
diff
changeset
|
322 appropriate, which is 10/0 on the system with the bug. */ |
|
24078
702a5900df7d
Mac OS X Jaguar (developer preview) seems to have a working getaddrinfo().
Jack Jansen <jack.jansen@cwi.nl>
parents:
23832
diff
changeset
|
323 #ifndef HAVE_GETNAMEINFO |
|
702a5900df7d
Mac OS X Jaguar (developer preview) seems to have a working getaddrinfo().
Jack Jansen <jack.jansen@cwi.nl>
parents:
23832
diff
changeset
|
324 /* This bug seems to be fixed in Jaguar. Ths easiest way I could |
|
702a5900df7d
Mac OS X Jaguar (developer preview) seems to have a working getaddrinfo().
Jack Jansen <jack.jansen@cwi.nl>
parents:
23832
diff
changeset
|
325 Find to check for Jaguar is that it has getnameinfo(), which |
|
702a5900df7d
Mac OS X Jaguar (developer preview) seems to have a working getaddrinfo().
Jack Jansen <jack.jansen@cwi.nl>
parents:
23832
diff
changeset
|
326 older releases don't have */ |
|
18954
fefcc1e80cee
Do not use the system getaddrinfo on Mac OS X. Fixes bug #445928.
Martin v. Löwis <martin@v.loewis.de>
parents:
18915
diff
changeset
|
327 #undef HAVE_GETADDRINFO |
|
fefcc1e80cee
Do not use the system getaddrinfo on Mac OS X. Fixes bug #445928.
Martin v. Löwis <martin@v.loewis.de>
parents:
18915
diff
changeset
|
328 #endif |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
329 |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
330 #ifdef HAVE_INET_ATON |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
331 #define USE_INET_ATON_WEAKLINK |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
332 #endif |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
333 |
|
24078
702a5900df7d
Mac OS X Jaguar (developer preview) seems to have a working getaddrinfo().
Jack Jansen <jack.jansen@cwi.nl>
parents:
23832
diff
changeset
|
334 #endif |
|
18954
fefcc1e80cee
Do not use the system getaddrinfo on Mac OS X. Fixes bug #445928.
Martin v. Löwis <martin@v.loewis.de>
parents:
18915
diff
changeset
|
335 |
|
18246
c4db09b87424
Patch #401196: Configuration machinery for IPv6.
Martin v. Löwis <martin@v.loewis.de>
parents:
17806
diff
changeset
|
336 /* I know this is a bad practice, but it is the easiest... */ |
|
18954
fefcc1e80cee
Do not use the system getaddrinfo on Mac OS X. Fixes bug #445928.
Martin v. Löwis <martin@v.loewis.de>
parents:
18915
diff
changeset
|
337 #if !defined(HAVE_GETADDRINFO) |
|
28913
b04c074586aa
Patch #725942: Always rename emulation functions.
Martin v. Löwis <martin@v.loewis.de>
parents:
28818
diff
changeset
|
338 /* avoid clashes with the C library definition of the symbol. */ |
|
b04c074586aa
Patch #725942: Always rename emulation functions.
Martin v. Löwis <martin@v.loewis.de>
parents:
28818
diff
changeset
|
339 #define getaddrinfo fake_getaddrinfo |
|
b04c074586aa
Patch #725942: Always rename emulation functions.
Martin v. Löwis <martin@v.loewis.de>
parents:
28818
diff
changeset
|
340 #define gai_strerror fake_gai_strerror |
|
b04c074586aa
Patch #725942: Always rename emulation functions.
Martin v. Löwis <martin@v.loewis.de>
parents:
28818
diff
changeset
|
341 #define freeaddrinfo fake_freeaddrinfo |
|
18246
c4db09b87424
Patch #401196: Configuration machinery for IPv6.
Martin v. Löwis <martin@v.loewis.de>
parents:
17806
diff
changeset
|
342 #include "getaddrinfo.c" |
|
c4db09b87424
Patch #401196: Configuration machinery for IPv6.
Martin v. Löwis <martin@v.loewis.de>
parents:
17806
diff
changeset
|
343 #endif |
|
18954
fefcc1e80cee
Do not use the system getaddrinfo on Mac OS X. Fixes bug #445928.
Martin v. Löwis <martin@v.loewis.de>
parents:
18915
diff
changeset
|
344 #if !defined(HAVE_GETNAMEINFO) |
|
28913
b04c074586aa
Patch #725942: Always rename emulation functions.
Martin v. Löwis <martin@v.loewis.de>
parents:
28818
diff
changeset
|
345 #define getnameinfo fake_getnameinfo |
|
18246
c4db09b87424
Patch #401196: Configuration machinery for IPv6.
Martin v. Löwis <martin@v.loewis.de>
parents:
17806
diff
changeset
|
346 #include "getnameinfo.c" |
|
c4db09b87424
Patch #401196: Configuration machinery for IPv6.
Martin v. Löwis <martin@v.loewis.de>
parents:
17806
diff
changeset
|
347 #endif |
|
c4db09b87424
Patch #401196: Configuration machinery for IPv6.
Martin v. Löwis <martin@v.loewis.de>
parents:
17806
diff
changeset
|
348 |
|
43881
70cfc7b504c2
This is roughly socket2.diff from issue 1378, with a few changes applied
Guido van Rossum <guido@python.org>
parents:
43877
diff
changeset
|
349 #ifdef MS_WINDOWS |
|
70cfc7b504c2
This is roughly socket2.diff from issue 1378, with a few changes applied
Guido van Rossum <guido@python.org>
parents:
43877
diff
changeset
|
350 /* On Windows a socket is really a handle not an fd */ |
|
70cfc7b504c2
This is roughly socket2.diff from issue 1378, with a few changes applied
Guido van Rossum <guido@python.org>
parents:
43877
diff
changeset
|
351 static SOCKET |
|
70cfc7b504c2
This is roughly socket2.diff from issue 1378, with a few changes applied
Guido van Rossum <guido@python.org>
parents:
43877
diff
changeset
|
352 dup_socket(SOCKET handle) |
|
70cfc7b504c2
This is roughly socket2.diff from issue 1378, with a few changes applied
Guido van Rossum <guido@python.org>
parents:
43877
diff
changeset
|
353 { |
|
64393
633166d4fc12
Merged revisions 84450 via svnmerge from
Daniel Stutzbach <daniel@stutzbachenterprises.com>
parents:
64121
diff
changeset
|
354 WSAPROTOCOL_INFO info; |
|
633166d4fc12
Merged revisions 84450 via svnmerge from
Daniel Stutzbach <daniel@stutzbachenterprises.com>
parents:
64121
diff
changeset
|
355 |
|
633166d4fc12
Merged revisions 84450 via svnmerge from
Daniel Stutzbach <daniel@stutzbachenterprises.com>
parents:
64121
diff
changeset
|
356 if (WSADuplicateSocket(handle, GetCurrentProcessId(), &info)) |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
357 return INVALID_SOCKET; |
|
64393
633166d4fc12
Merged revisions 84450 via svnmerge from
Daniel Stutzbach <daniel@stutzbachenterprises.com>
parents:
64121
diff
changeset
|
358 |
|
633166d4fc12
Merged revisions 84450 via svnmerge from
Daniel Stutzbach <daniel@stutzbachenterprises.com>
parents:
64121
diff
changeset
|
359 return WSASocket(FROM_PROTOCOL_INFO, FROM_PROTOCOL_INFO, |
|
633166d4fc12
Merged revisions 84450 via svnmerge from
Daniel Stutzbach <daniel@stutzbachenterprises.com>
parents:
64121
diff
changeset
|
360 FROM_PROTOCOL_INFO, &info, 0, 0); |
|
43881
70cfc7b504c2
This is roughly socket2.diff from issue 1378, with a few changes applied
Guido van Rossum <guido@python.org>
parents:
43877
diff
changeset
|
361 } |
|
12436
dff7b26116de
Use an explicit macro SOCKETCLOSE which expands to closesocket (on
Guido van Rossum <guido@python.org>
parents:
12319
diff
changeset
|
362 #define SOCKETCLOSE closesocket |
|
43881
70cfc7b504c2
This is roughly socket2.diff from issue 1378, with a few changes applied
Guido van Rossum <guido@python.org>
parents:
43877
diff
changeset
|
363 #else |
|
70cfc7b504c2
This is roughly socket2.diff from issue 1378, with a few changes applied
Guido van Rossum <guido@python.org>
parents:
43877
diff
changeset
|
364 /* On Unix we can use dup to duplicate the file descriptor of a socket*/ |
|
70cfc7b504c2
This is roughly socket2.diff from issue 1378, with a few changes applied
Guido van Rossum <guido@python.org>
parents:
43877
diff
changeset
|
365 #define dup_socket(fd) dup(fd) |
|
1792
a584b4bbbc59
Changes to make it work and compile on NT, by Mark Hammond.
Guido van Rossum <guido@python.org>
parents:
1760
diff
changeset
|
366 #endif |
|
a584b4bbbc59
Changes to make it work and compile on NT, by Mark Hammond.
Guido van Rossum <guido@python.org>
parents:
1760
diff
changeset
|
367 |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
368 #ifdef MS_WIN32 |
|
23723
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
369 #define EAFNOSUPPORT WSAEAFNOSUPPORT |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
370 #define snprintf _snprintf |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
371 #endif |
|
13171
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
372 |
|
22115
d104bb50a194
OS/2 EMX port changes (Modules part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
22096
diff
changeset
|
373 #if defined(PYOS_OS2) && !defined(PYCC_GCC) |
|
12436
dff7b26116de
Use an explicit macro SOCKETCLOSE which expands to closesocket (on
Guido van Rossum <guido@python.org>
parents:
12319
diff
changeset
|
374 #define SOCKETCLOSE soclose |
|
6626
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
375 #define NO_DUP /* Sockets are Not Actual File Handles under OS/2 */ |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
376 #endif |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
377 |
|
12436
dff7b26116de
Use an explicit macro SOCKETCLOSE which expands to closesocket (on
Guido van Rossum <guido@python.org>
parents:
12319
diff
changeset
|
378 #ifndef SOCKETCLOSE |
|
dff7b26116de
Use an explicit macro SOCKETCLOSE which expands to closesocket (on
Guido van Rossum <guido@python.org>
parents:
12319
diff
changeset
|
379 #define SOCKETCLOSE close |
|
dff7b26116de
Use an explicit macro SOCKETCLOSE which expands to closesocket (on
Guido van Rossum <guido@python.org>
parents:
12319
diff
changeset
|
380 #endif |
|
dff7b26116de
Use an explicit macro SOCKETCLOSE which expands to closesocket (on
Guido van Rossum <guido@python.org>
parents:
12319
diff
changeset
|
381 |
|
65429
15859740aae6
Merged revisions 85586-85587,85596-85598 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
65245
diff
changeset
|
382 #if (defined(HAVE_BLUETOOTH_H) || defined(HAVE_BLUETOOTH_BLUETOOTH_H)) && !defined(__NetBSD__) && !defined(__DragonFly__) |
|
31443
afb4c9726d1a
Add FreeBSD support for bluetooth sockets.
Hye-Shik Chang <hyeshik@gmail.com>
parents:
31441
diff
changeset
|
383 #define USE_BLUETOOTH 1 |
|
afb4c9726d1a
Add FreeBSD support for bluetooth sockets.
Hye-Shik Chang <hyeshik@gmail.com>
parents:
31441
diff
changeset
|
384 #if defined(__FreeBSD__) |
|
afb4c9726d1a
Add FreeBSD support for bluetooth sockets.
Hye-Shik Chang <hyeshik@gmail.com>
parents:
31441
diff
changeset
|
385 #define BTPROTO_L2CAP BLUETOOTH_PROTO_L2CAP |
|
afb4c9726d1a
Add FreeBSD support for bluetooth sockets.
Hye-Shik Chang <hyeshik@gmail.com>
parents:
31441
diff
changeset
|
386 #define BTPROTO_RFCOMM BLUETOOTH_PROTO_RFCOMM |
|
40893
32c4897b5d46
Merged revisions 53623-53858 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40638
diff
changeset
|
387 #define BTPROTO_HCI BLUETOOTH_PROTO_HCI |
|
42084
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41943
diff
changeset
|
388 #define SOL_HCI SOL_HCI_RAW |
|
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41943
diff
changeset
|
389 #define HCI_FILTER SO_HCI_RAW_FILTER |
|
31443
afb4c9726d1a
Add FreeBSD support for bluetooth sockets.
Hye-Shik Chang <hyeshik@gmail.com>
parents:
31441
diff
changeset
|
390 #define sockaddr_l2 sockaddr_l2cap |
|
afb4c9726d1a
Add FreeBSD support for bluetooth sockets.
Hye-Shik Chang <hyeshik@gmail.com>
parents:
31441
diff
changeset
|
391 #define sockaddr_rc sockaddr_rfcomm |
|
42084
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41943
diff
changeset
|
392 #define hci_dev hci_node |
|
31443
afb4c9726d1a
Add FreeBSD support for bluetooth sockets.
Hye-Shik Chang <hyeshik@gmail.com>
parents:
31441
diff
changeset
|
393 #define _BT_L2_MEMB(sa, memb) ((sa)->l2cap_##memb) |
|
afb4c9726d1a
Add FreeBSD support for bluetooth sockets.
Hye-Shik Chang <hyeshik@gmail.com>
parents:
31441
diff
changeset
|
394 #define _BT_RC_MEMB(sa, memb) ((sa)->rfcomm_##memb) |
|
40893
32c4897b5d46
Merged revisions 53623-53858 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40638
diff
changeset
|
395 #define _BT_HCI_MEMB(sa, memb) ((sa)->hci_##memb) |
|
65429
15859740aae6
Merged revisions 85586-85587,85596-85598 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
65245
diff
changeset
|
396 #elif defined(__NetBSD__) || defined(__DragonFly__) |
|
39442
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
397 #define sockaddr_l2 sockaddr_bt |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
398 #define sockaddr_rc sockaddr_bt |
|
40893
32c4897b5d46
Merged revisions 53623-53858 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40638
diff
changeset
|
399 #define sockaddr_hci sockaddr_bt |
|
39442
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
400 #define sockaddr_sco sockaddr_bt |
|
65429
15859740aae6
Merged revisions 85586-85587,85596-85598 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
65245
diff
changeset
|
401 #define SOL_HCI BTPROTO_HCI |
|
15859740aae6
Merged revisions 85586-85587,85596-85598 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
65245
diff
changeset
|
402 #define HCI_DATA_DIR SO_HCI_DIRECTION |
|
39442
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
403 #define _BT_L2_MEMB(sa, memb) ((sa)->bt_##memb) |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
404 #define _BT_RC_MEMB(sa, memb) ((sa)->bt_##memb) |
|
40893
32c4897b5d46
Merged revisions 53623-53858 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40638
diff
changeset
|
405 #define _BT_HCI_MEMB(sa, memb) ((sa)->bt_##memb) |
|
39442
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
406 #define _BT_SCO_MEMB(sa, memb) ((sa)->bt_##memb) |
|
31443
afb4c9726d1a
Add FreeBSD support for bluetooth sockets.
Hye-Shik Chang <hyeshik@gmail.com>
parents:
31441
diff
changeset
|
407 #else |
|
afb4c9726d1a
Add FreeBSD support for bluetooth sockets.
Hye-Shik Chang <hyeshik@gmail.com>
parents:
31441
diff
changeset
|
408 #define _BT_L2_MEMB(sa, memb) ((sa)->l2_##memb) |
|
afb4c9726d1a
Add FreeBSD support for bluetooth sockets.
Hye-Shik Chang <hyeshik@gmail.com>
parents:
31441
diff
changeset
|
409 #define _BT_RC_MEMB(sa, memb) ((sa)->rc_##memb) |
|
40893
32c4897b5d46
Merged revisions 53623-53858 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40638
diff
changeset
|
410 #define _BT_HCI_MEMB(sa, memb) ((sa)->hci_##memb) |
|
31443
afb4c9726d1a
Add FreeBSD support for bluetooth sockets.
Hye-Shik Chang <hyeshik@gmail.com>
parents:
31441
diff
changeset
|
411 #define _BT_SCO_MEMB(sa, memb) ((sa)->sco_##memb) |
|
afb4c9726d1a
Add FreeBSD support for bluetooth sockets.
Hye-Shik Chang <hyeshik@gmail.com>
parents:
31441
diff
changeset
|
412 #endif |
|
afb4c9726d1a
Add FreeBSD support for bluetooth sockets.
Hye-Shik Chang <hyeshik@gmail.com>
parents:
31441
diff
changeset
|
413 #endif |
|
afb4c9726d1a
Add FreeBSD support for bluetooth sockets.
Hye-Shik Chang <hyeshik@gmail.com>
parents:
31441
diff
changeset
|
414 |
|
39442
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
415 #ifdef __VMS |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
416 /* TCP/IP Services for VMS uses a maximum send/recv buffer length */ |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
417 #define SEGMENT_SIZE (32 * 1024 -1) |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
418 #endif |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
419 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
420 #define SAS2SA(x) ((struct sockaddr *)(x)) |
|
40450
cc992d75d5b3
Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents:
39610
diff
changeset
|
421 |
|
28953
09422c301826
Patch #724588: Check whether the address of hstrerror and inet_pton can
Martin v. Löwis <martin@v.loewis.de>
parents:
28949
diff
changeset
|
422 /* |
|
09422c301826
Patch #724588: Check whether the address of hstrerror and inet_pton can
Martin v. Löwis <martin@v.loewis.de>
parents:
28949
diff
changeset
|
423 * Constants for getnameinfo() |
|
09422c301826
Patch #724588: Check whether the address of hstrerror and inet_pton can
Martin v. Löwis <martin@v.loewis.de>
parents:
28949
diff
changeset
|
424 */ |
|
09422c301826
Patch #724588: Check whether the address of hstrerror and inet_pton can
Martin v. Löwis <martin@v.loewis.de>
parents:
28949
diff
changeset
|
425 #if !defined(NI_MAXHOST) |
|
09422c301826
Patch #724588: Check whether the address of hstrerror and inet_pton can
Martin v. Löwis <martin@v.loewis.de>
parents:
28949
diff
changeset
|
426 #define NI_MAXHOST 1025 |
|
09422c301826
Patch #724588: Check whether the address of hstrerror and inet_pton can
Martin v. Löwis <martin@v.loewis.de>
parents:
28949
diff
changeset
|
427 #endif |
|
09422c301826
Patch #724588: Check whether the address of hstrerror and inet_pton can
Martin v. Löwis <martin@v.loewis.de>
parents:
28949
diff
changeset
|
428 #if !defined(NI_MAXSERV) |
|
09422c301826
Patch #724588: Check whether the address of hstrerror and inet_pton can
Martin v. Löwis <martin@v.loewis.de>
parents:
28949
diff
changeset
|
429 #define NI_MAXSERV 32 |
|
09422c301826
Patch #724588: Check whether the address of hstrerror and inet_pton can
Martin v. Löwis <martin@v.loewis.de>
parents:
28949
diff
changeset
|
430 #endif |
|
09422c301826
Patch #724588: Check whether the address of hstrerror and inet_pton can
Martin v. Löwis <martin@v.loewis.de>
parents:
28949
diff
changeset
|
431 |
|
41809
8e062e572ea4
Sockets facelift. APIs that could return binary data (e.g. aton() and
Guido van Rossum <guido@python.org>
parents:
41770
diff
changeset
|
432 #ifndef INVALID_SOCKET /* MS defines this */ |
|
8e062e572ea4
Sockets facelift. APIs that could return binary data (e.g. aton() and
Guido van Rossum <guido@python.org>
parents:
41770
diff
changeset
|
433 #define INVALID_SOCKET (-1) |
|
8e062e572ea4
Sockets facelift. APIs that could return binary data (e.g. aton() and
Guido van Rossum <guido@python.org>
parents:
41770
diff
changeset
|
434 #endif |
|
8e062e572ea4
Sockets facelift. APIs that could return binary data (e.g. aton() and
Guido van Rossum <guido@python.org>
parents:
41770
diff
changeset
|
435 |
|
20727
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
436 /* XXX There's a problem here: *static* functions are not supposed to have |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
437 a Py prefix (or use CapitalizedWords). Later... */ |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
438 |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
439 /* Global variable holding the exception type for errors detected |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
440 by this module (but not argument type or memory errors, etc.). */ |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
441 static PyObject *socket_error; |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
442 static PyObject *socket_herror; |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
443 static PyObject *socket_gaierror; |
|
29651
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
444 static PyObject *socket_timeout; |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
445 |
|
21970
b1a871dc5196
Moved the declaration of PySocketSock_Type from socketmodule.h to
Tim Peters <tim.peters@gmail.com>
parents:
21964
diff
changeset
|
446 /* A forward reference to the socket type object. |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
447 The sock_type variable contains pointers to various functions, |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
448 some of which call new_sockobject(), which uses sock_type, so |
|
21970
b1a871dc5196
Moved the declaration of PySocketSock_Type from socketmodule.h to
Tim Peters <tim.peters@gmail.com>
parents:
21964
diff
changeset
|
449 there has to be a circular reference. */ |
|
24280
1598a1e473e2
staticforward bites the dust.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24078
diff
changeset
|
450 static PyTypeObject sock_type; |
|
16947
b25131bc6ec7
RISCOS changes by dschwertberger.
Guido van Rossum <guido@python.org>
parents:
16472
diff
changeset
|
451 |
|
39442
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
452 #if defined(HAVE_POLL_H) |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
453 #include <poll.h> |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
454 #elif defined(HAVE_SYS_POLL_H) |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
455 #include <sys/poll.h> |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
456 #endif |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
457 |
|
36476
c073dffbe70e
Introduce Py_SOCKET_FD_CAN_BE_GE_FD_SETSIZE.
Martin v. Löwis <martin@v.loewis.de>
parents:
36452
diff
changeset
|
458 #ifdef Py_SOCKET_FD_CAN_BE_GE_FD_SETSIZE |
|
c073dffbe70e
Introduce Py_SOCKET_FD_CAN_BE_GE_FD_SETSIZE.
Martin v. Löwis <martin@v.loewis.de>
parents:
36452
diff
changeset
|
459 /* Platform can select file descriptors beyond FD_SETSIZE */ |
|
c073dffbe70e
Introduce Py_SOCKET_FD_CAN_BE_GE_FD_SETSIZE.
Martin v. Löwis <martin@v.loewis.de>
parents:
36452
diff
changeset
|
460 #define IS_SELECTABLE(s) 1 |
|
39442
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
461 #elif defined(HAVE_POLL) |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
462 /* Instead of select(), we'll use poll() since poll() works on any fd. */ |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
463 #define IS_SELECTABLE(s) 1 |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
464 /* Can we call select() with this socket without a buffer overrun? */ |
|
36476
c073dffbe70e
Introduce Py_SOCKET_FD_CAN_BE_GE_FD_SETSIZE.
Martin v. Löwis <martin@v.loewis.de>
parents:
36452
diff
changeset
|
465 #else |
|
c073dffbe70e
Introduce Py_SOCKET_FD_CAN_BE_GE_FD_SETSIZE.
Martin v. Löwis <martin@v.loewis.de>
parents:
36452
diff
changeset
|
466 /* POSIX says selecting file descriptors beyond FD_SETSIZE |
|
39442
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
467 has undefined behaviour. If there's no timeout left, we don't have to |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
468 call select, so it's a safe, little white lie. */ |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
469 #define IS_SELECTABLE(s) ((s)->sock_fd < FD_SETSIZE || s->sock_timeout <= 0.0) |
|
36476
c073dffbe70e
Introduce Py_SOCKET_FD_CAN_BE_GE_FD_SETSIZE.
Martin v. Löwis <martin@v.loewis.de>
parents:
36452
diff
changeset
|
470 #endif |
|
36452
7789cc557e1e
Bug #876637, prevent stack corruption when socket descriptor
Neal Norwitz <nnorwitz@gmail.com>
parents:
36324
diff
changeset
|
471 |
|
7789cc557e1e
Bug #876637, prevent stack corruption when socket descriptor
Neal Norwitz <nnorwitz@gmail.com>
parents:
36324
diff
changeset
|
472 static PyObject* |
|
7789cc557e1e
Bug #876637, prevent stack corruption when socket descriptor
Neal Norwitz <nnorwitz@gmail.com>
parents:
36324
diff
changeset
|
473 select_error(void) |
|
7789cc557e1e
Bug #876637, prevent stack corruption when socket descriptor
Neal Norwitz <nnorwitz@gmail.com>
parents:
36324
diff
changeset
|
474 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
475 PyErr_SetString(socket_error, "unable to select on socket"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
476 return NULL; |
|
36452
7789cc557e1e
Bug #876637, prevent stack corruption when socket descriptor
Neal Norwitz <nnorwitz@gmail.com>
parents:
36324
diff
changeset
|
477 } |
|
7789cc557e1e
Bug #876637, prevent stack corruption when socket descriptor
Neal Norwitz <nnorwitz@gmail.com>
parents:
36324
diff
changeset
|
478 |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
479 /* Convenience function to raise an error according to errno |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
480 and return a NULL pointer from a function. */ |
| 294 | 481 |
| 1970 | 482 static PyObject * |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
483 set_error(void) |
| 294 | 484 { |
|
3702
3408756ec601
changed windows test symbols; removed debug printf from sockets
Guido van Rossum <guido@python.org>
parents:
3700
diff
changeset
|
485 #ifdef MS_WINDOWS |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
486 int err_no = WSAGetLastError(); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
487 /* PyErr_SetExcFromWindowsErr() invokes FormatMessage() which |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
488 recognizes the error codes used by both GetLastError() and |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
489 WSAGetLastError */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
490 if (err_no) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
491 return PyErr_SetExcFromWindowsErr(socket_error, err_no); |
|
1915
80818c106e3e
* Modules/xxmodule.c: integrated with xxobject.c by Jack
Guido van Rossum <guido@python.org>
parents:
1867
diff
changeset
|
492 #endif |
|
6626
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
493 |
|
22115
d104bb50a194
OS/2 EMX port changes (Modules part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
22096
diff
changeset
|
494 #if defined(PYOS_OS2) && !defined(PYCC_GCC) |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
495 if (sock_errno() != NO_ERROR) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
496 APIRET rc; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
497 ULONG msglen; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
498 char outbuf[100]; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
499 int myerrorcode = sock_errno(); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
500 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
501 /* Retrieve socket-related error message from MPTN.MSG file */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
502 rc = DosGetMessage(NULL, 0, outbuf, sizeof(outbuf), |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
503 myerrorcode - SOCBASEERR + 26, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
504 "mptn.msg", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
505 &msglen); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
506 if (rc == NO_ERROR) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
507 PyObject *v; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
508 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
509 /* OS/2 doesn't guarantee a terminator */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
510 outbuf[msglen] = '\0'; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
511 if (strlen(outbuf) > 0) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
512 /* If non-empty msg, trim CRLF */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
513 char *lastc = &outbuf[ strlen(outbuf)-1 ]; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
514 while (lastc > outbuf && |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
515 isspace(Py_CHARMASK(*lastc))) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
516 /* Trim trailing whitespace (CRLF) */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
517 *lastc-- = '\0'; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
518 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
519 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
520 v = Py_BuildValue("(is)", myerrorcode, outbuf); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
521 if (v != NULL) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
522 PyErr_SetObject(socket_error, v); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
523 Py_DECREF(v); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
524 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
525 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
526 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
527 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
528 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
529 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
530 return PyErr_SetFromErrno(socket_error); |
| 294 | 531 } |
| 532 | |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
533 |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
534 static PyObject * |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
535 set_herror(int h_error) |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
536 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
537 PyObject *v; |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
538 |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
539 #ifdef HAVE_HSTRERROR |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
540 v = Py_BuildValue("(is)", h_error, (char *)hstrerror(h_error)); |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
541 #else |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
542 v = Py_BuildValue("(is)", h_error, "host not found"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
543 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
544 if (v != NULL) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
545 PyErr_SetObject(socket_herror, v); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
546 Py_DECREF(v); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
547 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
548 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
549 return NULL; |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
550 } |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
551 |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
552 |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
553 static PyObject * |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
554 set_gaierror(int error) |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
555 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
556 PyObject *v; |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
557 |
|
22096
9e5ff6747437
Patch #520062: Support IPv6 with VC.NET.
Martin v. Löwis <martin@v.loewis.de>
parents:
21970
diff
changeset
|
558 #ifdef EAI_SYSTEM |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
559 /* EAI_SYSTEM is not available on Windows XP. */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
560 if (error == EAI_SYSTEM) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
561 return set_error(); |
|
22096
9e5ff6747437
Patch #520062: Support IPv6 with VC.NET.
Martin v. Löwis <martin@v.loewis.de>
parents:
21970
diff
changeset
|
562 #endif |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
563 |
|
19278
1afc3116c602
Fix portability problems with glibc 2.0, as reported in #449157.
Martin v. Löwis <martin@v.loewis.de>
parents:
19197
diff
changeset
|
564 #ifdef HAVE_GAI_STRERROR |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
565 v = Py_BuildValue("(is)", error, gai_strerror(error)); |
|
19278
1afc3116c602
Fix portability problems with glibc 2.0, as reported in #449157.
Martin v. Löwis <martin@v.loewis.de>
parents:
19197
diff
changeset
|
566 #else |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
567 v = Py_BuildValue("(is)", error, "getaddrinfo failed"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
568 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
569 if (v != NULL) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
570 PyErr_SetObject(socket_gaierror, v); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
571 Py_DECREF(v); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
572 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
573 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
574 return NULL; |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
575 } |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
576 |
|
39442
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
577 #ifdef __VMS |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
578 /* Function to send in segments */ |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
579 static int |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
580 sendsegmented(int sock_fd, char *buf, int len, int flags) |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
581 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
582 int n = 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
583 int remaining = len; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
584 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
585 while (remaining > 0) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
586 unsigned int segment; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
587 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
588 segment = (remaining >= SEGMENT_SIZE ? SEGMENT_SIZE : remaining); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
589 n = send(sock_fd, buf, segment, flags); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
590 if (n < 0) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
591 return n; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
592 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
593 remaining -= segment; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
594 buf += segment; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
595 } /* end while */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
596 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
597 return len; |
|
39442
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
598 } |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
599 #endif |
|
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
600 |
|
23723
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
601 /* Function to perform the setting of socket blocking mode |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
602 internally. block = (1 | 0). */ |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
603 static int |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
604 internal_setblocking(PySocketSockObject *s, int block) |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
605 { |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
606 #ifndef MS_WINDOWS |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
607 int delay_flag; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
608 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
609 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
610 Py_BEGIN_ALLOW_THREADS |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
611 #ifndef MS_WINDOWS |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
612 #if defined(PYOS_OS2) && !defined(PYCC_GCC) |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
613 block = !block; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
614 ioctl(s->sock_fd, FIONBIO, (caddr_t)&block, sizeof(block)); |
|
26550
b9c912e2c3c0
Patch #614055: Support OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
25994
diff
changeset
|
615 #elif defined(__VMS) |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
616 block = !block; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
617 ioctl(s->sock_fd, FIONBIO, (unsigned int *)&block); |
|
39442
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
618 #else /* !PYOS_OS2 && !__VMS */ |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
619 delay_flag = fcntl(s->sock_fd, F_GETFL, 0); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
620 if (block) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
621 delay_flag &= (~O_NONBLOCK); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
622 else |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
623 delay_flag |= O_NONBLOCK; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
624 fcntl(s->sock_fd, F_SETFL, delay_flag); |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
625 #endif /* !PYOS_OS2 */ |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
626 #else /* MS_WINDOWS */ |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
627 block = !block; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
628 ioctlsocket(s->sock_fd, FIONBIO, (u_long*)&block); |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
629 #endif /* MS_WINDOWS */ |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
630 Py_END_ALLOW_THREADS |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
631 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
632 /* Since these don't return anything */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
633 return 1; |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
634 } |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
635 |
|
39442
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
636 /* Do a select()/poll() on the socket, if necessary (sock_timeout > 0). |
|
23815
203d1412a7e8
Major overhaul of timeout sockets:
Guido van Rossum <guido@python.org>
parents:
23807
diff
changeset
|
637 The argument writing indicates the direction. |
|
29651
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
638 This does not raise an exception; we'll let our caller do that |
|
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
639 after they've reacquired the interpreter lock. |
|
39442
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
640 Returns 1 on timeout, -1 on error, 0 otherwise. */ |
|
29651
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
641 static int |
|
23722
75c51999c8d5
Correct several blunders in the timeout code, mostly my own fault (for
Guido van Rossum <guido@python.org>
parents:
23715
diff
changeset
|
642 internal_select(PySocketSockObject *s, int writing) |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
643 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
644 int n; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
645 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
646 /* Nothing to do unless we're in timeout mode (not non-blocking) */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
647 if (s->sock_timeout <= 0.0) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
648 return 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
649 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
650 /* Guard against closed socket */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
651 if (s->sock_fd < 0) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
652 return 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
653 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
654 /* Prefer poll, if available, since you can poll() any fd |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
655 * which can't be done with select(). */ |
|
39442
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
656 #ifdef HAVE_POLL |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
657 { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
658 struct pollfd pollfd; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
659 int timeout; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
660 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
661 pollfd.fd = s->sock_fd; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
662 pollfd.events = writing ? POLLOUT : POLLIN; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
663 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
664 /* s->sock_timeout is in seconds, timeout in ms */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
665 timeout = (int)(s->sock_timeout * 1000 + 0.5); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
666 n = poll(&pollfd, 1, timeout); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
667 } |
|
39442
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
668 #else |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
669 { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
670 /* Construct the arguments to select */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
671 fd_set fds; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
672 struct timeval tv; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
673 tv.tv_sec = (int)s->sock_timeout; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
674 tv.tv_usec = (int)((s->sock_timeout - tv.tv_sec) * 1e6); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
675 FD_ZERO(&fds); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
676 FD_SET(s->sock_fd, &fds); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
677 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
678 /* See if the socket is ready */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
679 if (writing) |
|
64121
2a4ceebdfcfb
Merged revisions 84146-84147,84150 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61467
diff
changeset
|
680 n = select(Py_SAFE_DOWNCAST(s->sock_fd+1, SOCKET_T, int), |
|
2a4ceebdfcfb
Merged revisions 84146-84147,84150 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61467
diff
changeset
|
681 NULL, &fds, NULL, &tv); |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
682 else |
|
64121
2a4ceebdfcfb
Merged revisions 84146-84147,84150 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61467
diff
changeset
|
683 n = select(Py_SAFE_DOWNCAST(s->sock_fd+1, SOCKET_T, int), |
|
2a4ceebdfcfb
Merged revisions 84146-84147,84150 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61467
diff
changeset
|
684 &fds, NULL, NULL, &tv); |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
685 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
686 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
687 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
688 if (n < 0) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
689 return -1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
690 if (n == 0) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
691 return 1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
692 return 0; |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
693 } |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
694 |
|
20727
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
695 /* Initialize a new socket object. */ |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
696 |
|
24305
428cbbf05639
A Python float is a C double; redeclare defaulttimeout as such; stops
Tim Peters <tim.peters@gmail.com>
parents:
24303
diff
changeset
|
697 static double defaulttimeout = -1.0; /* Default timeout for new sockets */ |
|
24293
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
698 |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
699 static void |
|
20727
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
700 init_sockobject(PySocketSockObject *s, |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
701 SOCKET_T fd, int family, int type, int proto) |
|
20727
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
702 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
703 s->sock_fd = fd; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
704 s->sock_family = family; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
705 s->sock_type = type; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
706 s->sock_proto = proto; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
707 s->sock_timeout = defaulttimeout; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
708 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
709 s->errorhandler = &set_error; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
710 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
711 if (defaulttimeout >= 0.0) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
712 internal_setblocking(s, 0); |
|
24293
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
713 |
|
20727
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
714 } |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
715 |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
716 |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
717 /* Create a new socket object. |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
718 This just creates the object and initializes it. |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
719 If the creation fails, return NULL and set an exception (implicit |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
720 in NEWOBJ()). */ |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
721 |
| 1970 | 722 static PySocketSockObject * |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
723 new_sockobject(SOCKET_T fd, int family, int type, int proto) |
| 294 | 724 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
725 PySocketSockObject *s; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
726 s = (PySocketSockObject *) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
727 PyType_GenericNew(&sock_type, NULL, NULL); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
728 if (s != NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
729 init_sockobject(s, fd, family, type, proto); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
730 return s; |
| 294 | 731 } |
| 732 | |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
733 |
|
16947
b25131bc6ec7
RISCOS changes by dschwertberger.
Guido van Rossum <guido@python.org>
parents:
16472
diff
changeset
|
734 /* Lock to allow python interpreter to continue, but only allow one |
|
29035
e1d5ca8ab7dc
[ 731644] & [ 604210 ] Release the GIL around getaddrinfo(), yet protect
Just van Rossum <just@letterror.com>
parents:
28953
diff
changeset
|
735 thread to be in gethostbyname or getaddrinfo */ |
|
e1d5ca8ab7dc
[ 731644] & [ 604210 ] Release the GIL around getaddrinfo(), yet protect
Just van Rossum <just@letterror.com>
parents:
28953
diff
changeset
|
736 #if defined(USE_GETHOSTBYNAME_LOCK) || defined(USE_GETADDRINFO_LOCK) |
|
e1d5ca8ab7dc
[ 731644] & [ 604210 ] Release the GIL around getaddrinfo(), yet protect
Just van Rossum <just@letterror.com>
parents:
28953
diff
changeset
|
737 PyThread_type_lock netdb_lock; |
|
7942
ee2aaa2f722a
Threading speedup patches by Christopher Lindblad <cjl@infoseek.com>.
Guido van Rossum <guido@python.org>
parents:
6718
diff
changeset
|
738 #endif |
|
ee2aaa2f722a
Threading speedup patches by Christopher Lindblad <cjl@infoseek.com>.
Guido van Rossum <guido@python.org>
parents:
6718
diff
changeset
|
739 |
|
ee2aaa2f722a
Threading speedup patches by Christopher Lindblad <cjl@infoseek.com>.
Guido van Rossum <guido@python.org>
parents:
6718
diff
changeset
|
740 |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
741 /* Convert a string specifying a host name or one of a few symbolic |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
742 names to a numeric IP address. This usually calls gethostbyname() |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
743 to do the work; the names "" and "<broadcast>" are special. |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
744 Return the length (IPv4 should be 4 bytes), or negative if |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
745 an error occurred; then an exception is raised. */ |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
746 |
| 294 | 747 static int |
|
24411
8e266d0acd10
Pass length of result structure into setipaddr. Fixes bug #565747.
Martin v. Löwis <martin@v.loewis.de>
parents:
24380
diff
changeset
|
748 setipaddr(char *name, struct sockaddr *addr_ret, size_t addr_ret_size, int af) |
| 294 | 749 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
750 struct addrinfo hints, *res; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
751 int error; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
752 int d1, d2, d3, d4; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
753 char ch; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
754 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
755 memset((void *) addr_ret, '\0', sizeof(*addr_ret)); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
756 if (name[0] == '\0') { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
757 int siz; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
758 memset(&hints, 0, sizeof(hints)); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
759 hints.ai_family = af; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
760 hints.ai_socktype = SOCK_DGRAM; /*dummy*/ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
761 hints.ai_flags = AI_PASSIVE; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
762 Py_BEGIN_ALLOW_THREADS |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
763 ACQUIRE_GETADDRINFO_LOCK |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
764 error = getaddrinfo(NULL, "0", &hints, &res); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
765 Py_END_ALLOW_THREADS |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
766 /* We assume that those thread-unsafe getaddrinfo() versions |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
767 *are* safe regarding their return value, ie. that a |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
768 subsequent call to getaddrinfo() does not destroy the |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
769 outcome of the first call. */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
770 RELEASE_GETADDRINFO_LOCK |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
771 if (error) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
772 set_gaierror(error); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
773 return -1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
774 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
775 switch (res->ai_family) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
776 case AF_INET: |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
777 siz = 4; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
778 break; |
|
21128
15ff504632ed
Remove INET6 define. Use ENABLE_IPV6 instead.
Martin v. Löwis <martin@v.loewis.de>
parents:
21094
diff
changeset
|
779 #ifdef ENABLE_IPV6 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
780 case AF_INET6: |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
781 siz = 16; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
782 break; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
783 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
784 default: |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
785 freeaddrinfo(res); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
786 PyErr_SetString(socket_error, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
787 "unsupported address family"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
788 return -1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
789 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
790 if (res->ai_next) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
791 freeaddrinfo(res); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
792 PyErr_SetString(socket_error, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
793 "wildcard resolved to multiple address"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
794 return -1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
795 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
796 if (res->ai_addrlen < addr_ret_size) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
797 addr_ret_size = res->ai_addrlen; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
798 memcpy(addr_ret, res->ai_addr, addr_ret_size); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
799 freeaddrinfo(res); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
800 return siz; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
801 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
802 if (name[0] == '<' && strcmp(name, "<broadcast>") == 0) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
803 struct sockaddr_in *sin; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
804 if (af != AF_INET && af != AF_UNSPEC) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
805 PyErr_SetString(socket_error, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
806 "address family mismatched"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
807 return -1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
808 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
809 sin = (struct sockaddr_in *)addr_ret; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
810 memset((void *) sin, '\0', sizeof(*sin)); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
811 sin->sin_family = AF_INET; |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
812 #ifdef HAVE_SOCKADDR_SA_LEN |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
813 sin->sin_len = sizeof(*sin); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
814 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
815 sin->sin_addr.s_addr = INADDR_BROADCAST; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
816 return sizeof(sin->sin_addr); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
817 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
818 if (sscanf(name, "%d.%d.%d.%d%c", &d1, &d2, &d3, &d4, &ch) == 4 && |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
819 0 <= d1 && d1 <= 255 && 0 <= d2 && d2 <= 255 && |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
820 0 <= d3 && d3 <= 255 && 0 <= d4 && d4 <= 255) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
821 struct sockaddr_in *sin; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
822 sin = (struct sockaddr_in *)addr_ret; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
823 sin->sin_addr.s_addr = htonl( |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
824 ((long) d1 << 24) | ((long) d2 << 16) | |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
825 ((long) d3 << 8) | ((long) d4 << 0)); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
826 sin->sin_family = AF_INET; |
|
28925
a769e079bb12
Patch 731209: Restore socketmodule's behaviour with dotted quad addresses
Anthony Baxter <anthonybaxter@gmail.com>
parents:
28913
diff
changeset
|
827 #ifdef HAVE_SOCKADDR_SA_LEN |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
828 sin->sin_len = sizeof(*sin); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
829 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
830 return 4; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
831 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
832 memset(&hints, 0, sizeof(hints)); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
833 hints.ai_family = af; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
834 Py_BEGIN_ALLOW_THREADS |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
835 ACQUIRE_GETADDRINFO_LOCK |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
836 error = getaddrinfo(name, NULL, &hints, &res); |
|
20661
f7009167dd67
After discussion with itojun, it was clarified that Tru64 is in error,
Martin v. Löwis <martin@v.loewis.de>
parents:
20654
diff
changeset
|
837 #if defined(__digital__) && defined(__unix__) |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
838 if (error == EAI_NONAME && af == AF_UNSPEC) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
839 /* On Tru64 V5.1, numeric-to-addr conversion fails |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
840 if no address family is given. Assume IPv4 for now.*/ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
841 hints.ai_family = AF_INET; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
842 error = getaddrinfo(name, NULL, &hints, &res); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
843 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
844 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
845 Py_END_ALLOW_THREADS |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
846 RELEASE_GETADDRINFO_LOCK /* see comment in setipaddr() */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
847 if (error) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
848 set_gaierror(error); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
849 return -1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
850 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
851 if (res->ai_addrlen < addr_ret_size) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
852 addr_ret_size = res->ai_addrlen; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
853 memcpy((char *) addr_ret, res->ai_addr, addr_ret_size); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
854 freeaddrinfo(res); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
855 switch (addr_ret->sa_family) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
856 case AF_INET: |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
857 return 4; |
|
21128
15ff504632ed
Remove INET6 define. Use ENABLE_IPV6 instead.
Martin v. Löwis <martin@v.loewis.de>
parents:
21094
diff
changeset
|
858 #ifdef ENABLE_IPV6 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
859 case AF_INET6: |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
860 return 16; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
861 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
862 default: |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
863 PyErr_SetString(socket_error, "unknown address family"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
864 return -1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
865 } |
| 294 | 866 } |
| 867 | |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
868 |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
869 /* Create a string object representing an IP address. |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
870 This is always a string of the form 'dd.dd.dd.dd' (with variable |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
871 size numbers). */ |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
872 |
| 1970 | 873 static PyObject * |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
874 makeipaddr(struct sockaddr *addr, int addrlen) |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
875 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
876 char buf[NI_MAXHOST]; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
877 int error; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
878 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
879 error = getnameinfo(addr, addrlen, buf, sizeof(buf), NULL, 0, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
880 NI_NUMERICHOST); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
881 if (error) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
882 set_gaierror(error); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
883 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
884 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
885 return PyUnicode_FromString(buf); |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
886 } |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
887 |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
888 |
|
32213
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
889 #ifdef USE_BLUETOOTH |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
890 /* Convert a string representation of a Bluetooth address into a numeric |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
891 address. Returns the length (6), or raises an exception and returns -1 if |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
892 an error occurred. */ |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
893 |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
894 static int |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
895 setbdaddr(char *name, bdaddr_t *bdaddr) |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
896 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
897 unsigned int b0, b1, b2, b3, b4, b5; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
898 char ch; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
899 int n; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
900 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
901 n = sscanf(name, "%X:%X:%X:%X:%X:%X%c", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
902 &b5, &b4, &b3, &b2, &b1, &b0, &ch); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
903 if (n == 6 && (b0 | b1 | b2 | b3 | b4 | b5) < 256) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
904 bdaddr->b[0] = b0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
905 bdaddr->b[1] = b1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
906 bdaddr->b[2] = b2; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
907 bdaddr->b[3] = b3; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
908 bdaddr->b[4] = b4; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
909 bdaddr->b[5] = b5; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
910 return 6; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
911 } else { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
912 PyErr_SetString(socket_error, "bad bluetooth address"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
913 return -1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
914 } |
|
32213
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
915 } |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
916 |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
917 /* Create a string representation of the Bluetooth address. This is always a |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
918 string of the form 'XX:XX:XX:XX:XX:XX' where XX is a two digit hexadecimal |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
919 value (zero padded if necessary). */ |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
920 |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
921 static PyObject * |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
922 makebdaddr(bdaddr_t *bdaddr) |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
923 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
924 char buf[(6 * 2) + 5 + 1]; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
925 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
926 sprintf(buf, "%02X:%02X:%02X:%02X:%02X:%02X", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
927 bdaddr->b[5], bdaddr->b[4], bdaddr->b[3], |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
928 bdaddr->b[2], bdaddr->b[1], bdaddr->b[0]); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
929 return PyUnicode_FromString(buf); |
|
32213
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
930 } |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
931 #endif |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
932 |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
933 |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
934 /* Create an object representing the given socket address, |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
935 suitable for passing it back to bind(), connect() etc. |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
936 The family field of the sockaddr structure is inspected |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
937 to determine what kind of address it really is. */ |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
938 |
| 294 | 939 /*ARGSUSED*/ |
| 1970 | 940 static PyObject * |
|
64121
2a4ceebdfcfb
Merged revisions 84146-84147,84150 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61467
diff
changeset
|
941 makesockaddr(SOCKET_T sockfd, struct sockaddr *addr, size_t addrlen, int proto) |
| 294 | 942 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
943 if (addrlen == 0) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
944 /* No address -- may be recvfrom() from known socket */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
945 Py_INCREF(Py_None); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
946 return Py_None; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
947 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
948 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
949 switch (addr->sa_family) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
950 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
951 case AF_INET: |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
952 { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
953 struct sockaddr_in *a; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
954 PyObject *addrobj = makeipaddr(addr, sizeof(*a)); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
955 PyObject *ret = NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
956 if (addrobj) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
957 a = (struct sockaddr_in *)addr; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
958 ret = Py_BuildValue("Oi", addrobj, ntohs(a->sin_port)); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
959 Py_DECREF(addrobj); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
960 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
961 return ret; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
962 } |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
963 |
|
31867
51aaceeaabe1
OS/2's TCP/IP stack supports AF_UNIX sockets, with the limitation that
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
31790
diff
changeset
|
964 #if defined(AF_UNIX) |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
965 case AF_UNIX: |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
966 { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
967 struct sockaddr_un *a = (struct sockaddr_un *) addr; |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36684
diff
changeset
|
968 #ifdef linux |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
969 if (a->sun_path[0] == 0) { /* Linux abstract namespace */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
970 addrlen -= offsetof(struct sockaddr_un, sun_path); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
971 return PyBytes_FromStringAndSize(a->sun_path, addrlen); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
972 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
973 else |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36684
diff
changeset
|
974 #endif /* linux */ |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
975 { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
976 /* regular NULL-terminated string */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
977 return PyUnicode_FromString(a->sun_path); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
978 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
979 } |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
980 #endif /* AF_UNIX */ |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
981 |
|
36286
ae4480935016
Patch #1103116: AF_NETLINK sockets basic support.
Martin v. Löwis <martin@v.loewis.de>
parents:
36090
diff
changeset
|
982 #if defined(AF_NETLINK) |
|
ae4480935016
Patch #1103116: AF_NETLINK sockets basic support.
Martin v. Löwis <martin@v.loewis.de>
parents:
36090
diff
changeset
|
983 case AF_NETLINK: |
|
ae4480935016
Patch #1103116: AF_NETLINK sockets basic support.
Martin v. Löwis <martin@v.loewis.de>
parents:
36090
diff
changeset
|
984 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
985 struct sockaddr_nl *a = (struct sockaddr_nl *) addr; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
986 return Py_BuildValue("II", a->nl_pid, a->nl_groups); |
|
36286
ae4480935016
Patch #1103116: AF_NETLINK sockets basic support.
Martin v. Löwis <martin@v.loewis.de>
parents:
36090
diff
changeset
|
987 } |
|
ae4480935016
Patch #1103116: AF_NETLINK sockets basic support.
Martin v. Löwis <martin@v.loewis.de>
parents:
36090
diff
changeset
|
988 #endif /* AF_NETLINK */ |
|
ae4480935016
Patch #1103116: AF_NETLINK sockets basic support.
Martin v. Löwis <martin@v.loewis.de>
parents:
36090
diff
changeset
|
989 |
|
21128
15ff504632ed
Remove INET6 define. Use ENABLE_IPV6 instead.
Martin v. Löwis <martin@v.loewis.de>
parents:
21094
diff
changeset
|
990 #ifdef ENABLE_IPV6 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
991 case AF_INET6: |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
992 { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
993 struct sockaddr_in6 *a; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
994 PyObject *addrobj = makeipaddr(addr, sizeof(*a)); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
995 PyObject *ret = NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
996 if (addrobj) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
997 a = (struct sockaddr_in6 *)addr; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
998 ret = Py_BuildValue("Oiii", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
999 addrobj, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1000 ntohs(a->sin6_port), |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1001 a->sin6_flowinfo, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1002 a->sin6_scope_id); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1003 Py_DECREF(addrobj); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1004 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1005 return ret; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1006 } |
|
16410
3d4a7cd0bf17
SF patch 101137 from Grant Edwards
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16400
diff
changeset
|
1007 #endif |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1008 |
|
32213
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1009 #ifdef USE_BLUETOOTH |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1010 case AF_BLUETOOTH: |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1011 switch (proto) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1012 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1013 case BTPROTO_L2CAP: |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1014 { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1015 struct sockaddr_l2 *a = (struct sockaddr_l2 *) addr; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1016 PyObject *addrobj = makebdaddr(&_BT_L2_MEMB(a, bdaddr)); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1017 PyObject *ret = NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1018 if (addrobj) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1019 ret = Py_BuildValue("Oi", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1020 addrobj, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1021 _BT_L2_MEMB(a, psm)); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1022 Py_DECREF(addrobj); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1023 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1024 return ret; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1025 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1026 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1027 case BTPROTO_RFCOMM: |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1028 { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1029 struct sockaddr_rc *a = (struct sockaddr_rc *) addr; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1030 PyObject *addrobj = makebdaddr(&_BT_RC_MEMB(a, bdaddr)); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1031 PyObject *ret = NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1032 if (addrobj) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1033 ret = Py_BuildValue("Oi", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1034 addrobj, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1035 _BT_RC_MEMB(a, channel)); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1036 Py_DECREF(addrobj); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1037 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1038 return ret; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1039 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1040 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1041 case BTPROTO_HCI: |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1042 { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1043 struct sockaddr_hci *a = (struct sockaddr_hci *) addr; |
|
65429
15859740aae6
Merged revisions 85586-85587,85596-85598 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
65245
diff
changeset
|
1044 #if defined(__NetBSD__) || defined(__DragonFly__) |
|
15859740aae6
Merged revisions 85586-85587,85596-85598 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
65245
diff
changeset
|
1045 return makebdaddr(&_BT_HCI_MEMB(a, bdaddr)); |
|
15859740aae6
Merged revisions 85586-85587,85596-85598 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
65245
diff
changeset
|
1046 #else |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1047 PyObject *ret = NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1048 ret = Py_BuildValue("i", _BT_HCI_MEMB(a, dev)); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1049 return ret; |
|
65429
15859740aae6
Merged revisions 85586-85587,85596-85598 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
65245
diff
changeset
|
1050 #endif |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1051 } |
|
40893
32c4897b5d46
Merged revisions 53623-53858 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40638
diff
changeset
|
1052 |
|
32213
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1053 #if !defined(__FreeBSD__) |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1054 case BTPROTO_SCO: |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1055 { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1056 struct sockaddr_sco *a = (struct sockaddr_sco *) addr; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1057 return makebdaddr(&_BT_SCO_MEMB(a, bdaddr)); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1058 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1059 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1060 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1061 default: |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1062 PyErr_SetString(PyExc_ValueError, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1063 "Unknown Bluetooth protocol"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1064 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1065 } |
|
32213
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1066 #endif |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1067 |
|
65668
add1bc05e426
Merged revisions 85868 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
65429
diff
changeset
|
1068 #if defined(HAVE_NETPACKET_PACKET_H) && defined(SIOCGIFNAME) |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1069 case AF_PACKET: |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1070 { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1071 struct sockaddr_ll *a = (struct sockaddr_ll *)addr; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1072 char *ifname = ""; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1073 struct ifreq ifr; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1074 /* need to look up interface name give index */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1075 if (a->sll_ifindex) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1076 ifr.ifr_ifindex = a->sll_ifindex; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1077 if (ioctl(sockfd, SIOCGIFNAME, &ifr) == 0) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1078 ifname = ifr.ifr_name; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1079 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1080 return Py_BuildValue("shbhy#", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1081 ifname, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1082 ntohs(a->sll_protocol), |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1083 a->sll_pkttype, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1084 a->sll_hatype, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1085 a->sll_addr, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1086 a->sll_halen); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1087 } |
|
16410
3d4a7cd0bf17
SF patch 101137 from Grant Edwards
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16400
diff
changeset
|
1088 #endif |
|
16947
b25131bc6ec7
RISCOS changes by dschwertberger.
Guido van Rossum <guido@python.org>
parents:
16472
diff
changeset
|
1089 |
|
44568
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
1090 #ifdef HAVE_LINUX_TIPC_H |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1091 case AF_TIPC: |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1092 { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1093 struct sockaddr_tipc *a = (struct sockaddr_tipc *) addr; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1094 if (a->addrtype == TIPC_ADDR_NAMESEQ) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1095 return Py_BuildValue("IIIII", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1096 a->addrtype, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1097 a->addr.nameseq.type, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1098 a->addr.nameseq.lower, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1099 a->addr.nameseq.upper, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1100 a->scope); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1101 } else if (a->addrtype == TIPC_ADDR_NAME) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1102 return Py_BuildValue("IIIII", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1103 a->addrtype, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1104 a->addr.name.name.type, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1105 a->addr.name.name.instance, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1106 a->addr.name.name.instance, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1107 a->scope); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1108 } else if (a->addrtype == TIPC_ADDR_ID) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1109 return Py_BuildValue("IIIII", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1110 a->addrtype, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1111 a->addr.id.node, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1112 a->addr.id.ref, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1113 0, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1114 a->scope); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1115 } else { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1116 PyErr_SetString(PyExc_ValueError, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1117 "Invalid address type"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1118 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1119 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1120 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1121 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1122 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1123 /* More cases here... */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1124 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1125 default: |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1126 /* If we don't know the address family, don't raise an |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1127 exception -- return it as an (int, bytes) tuple. */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1128 return Py_BuildValue("iy#", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1129 addr->sa_family, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1130 addr->sa_data, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1131 sizeof(addr->sa_data)); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1132 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1133 } |
| 294 | 1134 } |
| 1135 | |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1136 |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1137 /* Parse a socket address argument according to the socket object's |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1138 address family. Return 1 if the address was in the proper format, |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1139 0 of not. The address is returned through addr_ret, its length |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1140 through len_ret. */ |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1141 |
| 294 | 1142 static int |
|
16947
b25131bc6ec7
RISCOS changes by dschwertberger.
Guido van Rossum <guido@python.org>
parents:
16472
diff
changeset
|
1143 getsockaddrarg(PySocketSockObject *s, PyObject *args, |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1144 struct sockaddr *addr_ret, int *len_ret) |
| 294 | 1145 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1146 switch (s->sock_family) { |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1147 |
|
31867
51aaceeaabe1
OS/2's TCP/IP stack supports AF_UNIX sockets, with the limitation that
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
31790
diff
changeset
|
1148 #if defined(AF_UNIX) |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1149 case AF_UNIX: |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1150 { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1151 struct sockaddr_un* addr; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1152 char *path; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1153 int len; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1154 if (!PyArg_Parse(args, "s#", &path, &len)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1155 return 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1156 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1157 addr = (struct sockaddr_un*)addr_ret; |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36684
diff
changeset
|
1158 #ifdef linux |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1159 if (len > 0 && path[0] == 0) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1160 /* Linux abstract namespace extension */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1161 if (len > sizeof addr->sun_path) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1162 PyErr_SetString(socket_error, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1163 "AF_UNIX path too long"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1164 return 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1165 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1166 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1167 else |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36684
diff
changeset
|
1168 #endif /* linux */ |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1169 { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1170 /* regular NULL-terminated string */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1171 if (len >= sizeof addr->sun_path) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1172 PyErr_SetString(socket_error, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1173 "AF_UNIX path too long"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1174 return 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1175 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1176 addr->sun_path[len] = 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1177 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1178 addr->sun_family = s->sock_family; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1179 memcpy(addr->sun_path, path, len); |
|
31896
ca2fb5cf2fd5
Fixes for AF_UNIX support on OS/2:
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
31867
diff
changeset
|
1180 #if defined(PYOS_OS2) |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1181 *len_ret = sizeof(*addr); |
|
31896
ca2fb5cf2fd5
Fixes for AF_UNIX support on OS/2:
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
31867
diff
changeset
|
1182 #else |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1183 *len_ret = len + offsetof(struct sockaddr_un, sun_path); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1184 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1185 return 1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1186 } |
|
1746
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1413
diff
changeset
|
1187 #endif /* AF_UNIX */ |
| 294 | 1188 |
|
36286
ae4480935016
Patch #1103116: AF_NETLINK sockets basic support.
Martin v. Löwis <martin@v.loewis.de>
parents:
36090
diff
changeset
|
1189 #if defined(AF_NETLINK) |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1190 case AF_NETLINK: |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1191 { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1192 struct sockaddr_nl* addr; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1193 int pid, groups; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1194 addr = (struct sockaddr_nl *)addr_ret; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1195 if (!PyTuple_Check(args)) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1196 PyErr_Format( |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1197 PyExc_TypeError, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1198 "getsockaddrarg: " |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1199 "AF_NETLINK address must be tuple, not %.500s", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1200 Py_TYPE(args)->tp_name); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1201 return 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1202 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1203 if (!PyArg_ParseTuple(args, "II:getsockaddrarg", &pid, &groups)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1204 return 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1205 addr->nl_family = AF_NETLINK; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1206 addr->nl_pid = pid; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1207 addr->nl_groups = groups; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1208 *len_ret = sizeof(*addr); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1209 return 1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1210 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1211 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1212 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1213 case AF_INET: |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1214 { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1215 struct sockaddr_in* addr; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1216 char *host; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1217 int port, result; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1218 if (!PyTuple_Check(args)) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1219 PyErr_Format( |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1220 PyExc_TypeError, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1221 "getsockaddrarg: " |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1222 "AF_INET address must be tuple, not %.500s", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1223 Py_TYPE(args)->tp_name); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1224 return 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1225 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1226 if (!PyArg_ParseTuple(args, "eti:getsockaddrarg", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1227 "idna", &host, &port)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1228 return 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1229 addr=(struct sockaddr_in*)addr_ret; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1230 result = setipaddr(host, (struct sockaddr *)addr, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1231 sizeof(*addr), AF_INET); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1232 PyMem_Free(host); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1233 if (result < 0) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1234 return 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1235 if (port < 0 || port > 0xffff) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1236 PyErr_SetString( |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1237 PyExc_OverflowError, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1238 "getsockaddrarg: port must be 0-65535."); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1239 return 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1240 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1241 addr->sin_family = AF_INET; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1242 addr->sin_port = htons((short)port); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1243 *len_ret = sizeof *addr; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1244 return 1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1245 } |
| 294 | 1246 |
|
21128
15ff504632ed
Remove INET6 define. Use ENABLE_IPV6 instead.
Martin v. Löwis <martin@v.loewis.de>
parents:
21094
diff
changeset
|
1247 #ifdef ENABLE_IPV6 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1248 case AF_INET6: |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1249 { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1250 struct sockaddr_in6* addr; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1251 char *host; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1252 int port, flowinfo, scope_id, result; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1253 flowinfo = scope_id = 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1254 if (!PyTuple_Check(args)) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1255 PyErr_Format( |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1256 PyExc_TypeError, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1257 "getsockaddrarg: " |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1258 "AF_INET6 address must be tuple, not %.500s", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1259 Py_TYPE(args)->tp_name); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1260 return 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1261 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1262 if (!PyArg_ParseTuple(args, "eti|ii", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1263 "idna", &host, &port, &flowinfo, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1264 &scope_id)) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1265 return 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1266 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1267 addr = (struct sockaddr_in6*)addr_ret; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1268 result = setipaddr(host, (struct sockaddr *)addr, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1269 sizeof(*addr), AF_INET6); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1270 PyMem_Free(host); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1271 if (result < 0) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1272 return 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1273 if (port < 0 || port > 0xffff) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1274 PyErr_SetString( |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1275 PyExc_OverflowError, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1276 "getsockaddrarg: port must be 0-65535."); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1277 return 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1278 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1279 addr->sin6_family = s->sock_family; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1280 addr->sin6_port = htons((short)port); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1281 addr->sin6_flowinfo = flowinfo; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1282 addr->sin6_scope_id = scope_id; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1283 *len_ret = sizeof *addr; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1284 return 1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1285 } |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
1286 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
1287 |
|
31443
afb4c9726d1a
Add FreeBSD support for bluetooth sockets.
Hye-Shik Chang <hyeshik@gmail.com>
parents:
31441
diff
changeset
|
1288 #ifdef USE_BLUETOOTH |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1289 case AF_BLUETOOTH: |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1290 { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1291 switch (s->sock_proto) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1292 case BTPROTO_L2CAP: |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1293 { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1294 struct sockaddr_l2 *addr; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1295 char *straddr; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1296 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1297 addr = (struct sockaddr_l2 *)addr_ret; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1298 memset(addr, 0, sizeof(struct sockaddr_l2)); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1299 _BT_L2_MEMB(addr, family) = AF_BLUETOOTH; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1300 if (!PyArg_ParseTuple(args, "si", &straddr, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1301 &_BT_L2_MEMB(addr, psm))) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1302 PyErr_SetString(socket_error, "getsockaddrarg: " |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1303 "wrong format"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1304 return 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1305 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1306 if (setbdaddr(straddr, &_BT_L2_MEMB(addr, bdaddr)) < 0) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1307 return 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1308 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1309 *len_ret = sizeof *addr; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1310 return 1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1311 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1312 case BTPROTO_RFCOMM: |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1313 { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1314 struct sockaddr_rc *addr; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1315 char *straddr; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1316 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1317 addr = (struct sockaddr_rc *)addr_ret; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1318 _BT_RC_MEMB(addr, family) = AF_BLUETOOTH; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1319 if (!PyArg_ParseTuple(args, "si", &straddr, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1320 &_BT_RC_MEMB(addr, channel))) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1321 PyErr_SetString(socket_error, "getsockaddrarg: " |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1322 "wrong format"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1323 return 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1324 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1325 if (setbdaddr(straddr, &_BT_RC_MEMB(addr, bdaddr)) < 0) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1326 return 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1327 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1328 *len_ret = sizeof *addr; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1329 return 1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1330 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1331 case BTPROTO_HCI: |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1332 { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1333 struct sockaddr_hci *addr = (struct sockaddr_hci *)addr_ret; |
|
65429
15859740aae6
Merged revisions 85586-85587,85596-85598 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
65245
diff
changeset
|
1334 #if defined(__NetBSD__) || defined(__DragonFly__) |
|
15859740aae6
Merged revisions 85586-85587,85596-85598 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
65245
diff
changeset
|
1335 char *straddr = PyBytes_AS_STRING(args); |
|
15859740aae6
Merged revisions 85586-85587,85596-85598 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
65245
diff
changeset
|
1336 |
|
15859740aae6
Merged revisions 85586-85587,85596-85598 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
65245
diff
changeset
|
1337 _BT_HCI_MEMB(addr, family) = AF_BLUETOOTH; |
|
15859740aae6
Merged revisions 85586-85587,85596-85598 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
65245
diff
changeset
|
1338 if (straddr == NULL) { |
|
15859740aae6
Merged revisions 85586-85587,85596-85598 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
65245
diff
changeset
|
1339 PyErr_SetString(socket_error, "getsockaddrarg: " |
|
15859740aae6
Merged revisions 85586-85587,85596-85598 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
65245
diff
changeset
|
1340 "wrong format"); |
|
15859740aae6
Merged revisions 85586-85587,85596-85598 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
65245
diff
changeset
|
1341 return 0; |
|
15859740aae6
Merged revisions 85586-85587,85596-85598 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
65245
diff
changeset
|
1342 } |
|
15859740aae6
Merged revisions 85586-85587,85596-85598 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
65245
diff
changeset
|
1343 if (setbdaddr(straddr, &_BT_HCI_MEMB(addr, bdaddr)) < 0) |
|
15859740aae6
Merged revisions 85586-85587,85596-85598 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
65245
diff
changeset
|
1344 return 0; |
|
15859740aae6
Merged revisions 85586-85587,85596-85598 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
65245
diff
changeset
|
1345 #else |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1346 _BT_HCI_MEMB(addr, family) = AF_BLUETOOTH; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1347 if (!PyArg_ParseTuple(args, "i", &_BT_HCI_MEMB(addr, dev))) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1348 PyErr_SetString(socket_error, "getsockaddrarg: " |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1349 "wrong format"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1350 return 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1351 } |
|
65429
15859740aae6
Merged revisions 85586-85587,85596-85598 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
65245
diff
changeset
|
1352 #endif |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1353 *len_ret = sizeof *addr; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1354 return 1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1355 } |
|
32213
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1356 #if !defined(__FreeBSD__) |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1357 case BTPROTO_SCO: |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1358 { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1359 struct sockaddr_sco *addr; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1360 char *straddr; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1361 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1362 addr = (struct sockaddr_sco *)addr_ret; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1363 _BT_SCO_MEMB(addr, family) = AF_BLUETOOTH; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1364 if (!PyBytes_Check(args)) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1365 PyErr_SetString(socket_error, "getsockaddrarg: " |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1366 "wrong format"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1367 return 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1368 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1369 straddr = PyBytes_AS_STRING(args); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1370 if (setbdaddr(straddr, &_BT_SCO_MEMB(addr, bdaddr)) < 0) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1371 return 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1372 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1373 *len_ret = sizeof *addr; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1374 return 1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1375 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1376 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1377 default: |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1378 PyErr_SetString(socket_error, "getsockaddrarg: unknown Bluetooth protocol"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1379 return 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1380 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1381 } |
|
31441
493707692671
Patch #874083: Bluetooth support for socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
31274
diff
changeset
|
1382 #endif |
|
493707692671
Patch #874083: Bluetooth support for socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
31274
diff
changeset
|
1383 |
|
65668
add1bc05e426
Merged revisions 85868 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
65429
diff
changeset
|
1384 #if defined(HAVE_NETPACKET_PACKET_H) && defined(SIOCGIFINDEX) |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1385 case AF_PACKET: |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1386 { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1387 struct sockaddr_ll* addr; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1388 struct ifreq ifr; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1389 char *interfaceName; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1390 int protoNumber; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1391 int hatype = 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1392 int pkttype = 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1393 char *haddr = NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1394 unsigned int halen = 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1395 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1396 if (!PyTuple_Check(args)) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1397 PyErr_Format( |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1398 PyExc_TypeError, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1399 "getsockaddrarg: " |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1400 "AF_PACKET address must be tuple, not %.500s", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1401 Py_TYPE(args)->tp_name); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1402 return 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1403 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1404 if (!PyArg_ParseTuple(args, "si|iiy#", &interfaceName, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1405 &protoNumber, &pkttype, &hatype, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1406 &haddr, &halen)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1407 return 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1408 strncpy(ifr.ifr_name, interfaceName, sizeof(ifr.ifr_name)); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1409 ifr.ifr_name[(sizeof(ifr.ifr_name))-1] = '\0'; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1410 if (ioctl(s->sock_fd, SIOCGIFINDEX, &ifr) < 0) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1411 s->errorhandler(); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1412 return 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1413 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1414 if (halen > 8) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1415 PyErr_SetString(PyExc_ValueError, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1416 "Hardware address must be 8 bytes or less"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1417 return 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1418 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1419 if (protoNumber < 0 || protoNumber > 0xffff) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1420 PyErr_SetString( |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1421 PyExc_OverflowError, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1422 "getsockaddrarg: protoNumber must be 0-65535."); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1423 return 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1424 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1425 addr = (struct sockaddr_ll*)addr_ret; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1426 addr->sll_family = AF_PACKET; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1427 addr->sll_protocol = htons((short)protoNumber); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1428 addr->sll_ifindex = ifr.ifr_ifindex; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1429 addr->sll_pkttype = pkttype; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1430 addr->sll_hatype = hatype; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1431 if (halen != 0) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1432 memcpy(&addr->sll_addr, haddr, halen); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1433 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1434 addr->sll_halen = halen; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1435 *len_ret = sizeof *addr; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1436 return 1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1437 } |
|
16947
b25131bc6ec7
RISCOS changes by dschwertberger.
Guido van Rossum <guido@python.org>
parents:
16472
diff
changeset
|
1438 #endif |
|
b25131bc6ec7
RISCOS changes by dschwertberger.
Guido van Rossum <guido@python.org>
parents:
16472
diff
changeset
|
1439 |
|
44568
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
1440 #ifdef HAVE_LINUX_TIPC_H |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1441 case AF_TIPC: |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1442 { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1443 unsigned int atype, v1, v2, v3; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1444 unsigned int scope = TIPC_CLUSTER_SCOPE; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1445 struct sockaddr_tipc *addr; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1446 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1447 if (!PyTuple_Check(args)) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1448 PyErr_Format( |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1449 PyExc_TypeError, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1450 "getsockaddrarg: " |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1451 "AF_TIPC address must be tuple, not %.500s", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1452 Py_TYPE(args)->tp_name); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1453 return 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1454 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1455 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1456 if (!PyArg_ParseTuple(args, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1457 "IIII|I;Invalid TIPC address format", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1458 &atype, &v1, &v2, &v3, &scope)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1459 return 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1460 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1461 addr = (struct sockaddr_tipc *) addr_ret; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1462 memset(addr, 0, sizeof(struct sockaddr_tipc)); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1463 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1464 addr->family = AF_TIPC; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1465 addr->scope = scope; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1466 addr->addrtype = atype; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1467 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1468 if (atype == TIPC_ADDR_NAMESEQ) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1469 addr->addr.nameseq.type = v1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1470 addr->addr.nameseq.lower = v2; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1471 addr->addr.nameseq.upper = v3; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1472 } else if (atype == TIPC_ADDR_NAME) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1473 addr->addr.name.name.type = v1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1474 addr->addr.name.name.instance = v2; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1475 } else if (atype == TIPC_ADDR_ID) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1476 addr->addr.id.node = v1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1477 addr->addr.id.ref = v2; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1478 } else { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1479 /* Shouldn't happen */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1480 PyErr_SetString(PyExc_TypeError, "Invalid address type"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1481 return 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1482 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1483 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1484 *len_ret = sizeof(*addr); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1485 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1486 return 1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1487 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1488 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1489 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1490 /* More cases here... */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1491 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1492 default: |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1493 PyErr_SetString(socket_error, "getsockaddrarg: bad family"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1494 return 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1495 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1496 } |
| 294 | 1497 } |
| 1498 | |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1499 |
|
16947
b25131bc6ec7
RISCOS changes by dschwertberger.
Guido van Rossum <guido@python.org>
parents:
16472
diff
changeset
|
1500 /* Get the address length according to the socket object's address family. |
|
900
58a7438c2e7e
Some UNIX types want the exact size of the address structure
Guido van Rossum <guido@python.org>
parents:
896
diff
changeset
|
1501 Return 1 if the family is known, 0 otherwise. The length is returned |
|
58a7438c2e7e
Some UNIX types want the exact size of the address structure
Guido van Rossum <guido@python.org>
parents:
896
diff
changeset
|
1502 through len_ret. */ |
|
58a7438c2e7e
Some UNIX types want the exact size of the address structure
Guido van Rossum <guido@python.org>
parents:
896
diff
changeset
|
1503 |
|
58a7438c2e7e
Some UNIX types want the exact size of the address structure
Guido van Rossum <guido@python.org>
parents:
896
diff
changeset
|
1504 static int |
|
13554
906efc1da247
Errare humanum est.
Peter Schneider-Kamp <nowonder@nowonder.de>
parents:
13538
diff
changeset
|
1505 getsockaddrlen(PySocketSockObject *s, socklen_t *len_ret) |
|
900
58a7438c2e7e
Some UNIX types want the exact size of the address structure
Guido van Rossum <guido@python.org>
parents:
896
diff
changeset
|
1506 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1507 switch (s->sock_family) { |
|
900
58a7438c2e7e
Some UNIX types want the exact size of the address structure
Guido van Rossum <guido@python.org>
parents:
896
diff
changeset
|
1508 |
|
31867
51aaceeaabe1
OS/2's TCP/IP stack supports AF_UNIX sockets, with the limitation that
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
31790
diff
changeset
|
1509 #if defined(AF_UNIX) |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1510 case AF_UNIX: |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1511 { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1512 *len_ret = sizeof (struct sockaddr_un); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1513 return 1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1514 } |
|
1746
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1413
diff
changeset
|
1515 #endif /* AF_UNIX */ |
|
36286
ae4480935016
Patch #1103116: AF_NETLINK sockets basic support.
Martin v. Löwis <martin@v.loewis.de>
parents:
36090
diff
changeset
|
1516 #if defined(AF_NETLINK) |
|
ae4480935016
Patch #1103116: AF_NETLINK sockets basic support.
Martin v. Löwis <martin@v.loewis.de>
parents:
36090
diff
changeset
|
1517 case AF_NETLINK: |
|
ae4480935016
Patch #1103116: AF_NETLINK sockets basic support.
Martin v. Löwis <martin@v.loewis.de>
parents:
36090
diff
changeset
|
1518 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1519 *len_ret = sizeof (struct sockaddr_nl); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1520 return 1; |
|
36286
ae4480935016
Patch #1103116: AF_NETLINK sockets basic support.
Martin v. Löwis <martin@v.loewis.de>
parents:
36090
diff
changeset
|
1521 } |
|
ae4480935016
Patch #1103116: AF_NETLINK sockets basic support.
Martin v. Löwis <martin@v.loewis.de>
parents:
36090
diff
changeset
|
1522 #endif |
|
900
58a7438c2e7e
Some UNIX types want the exact size of the address structure
Guido van Rossum <guido@python.org>
parents:
896
diff
changeset
|
1523 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1524 case AF_INET: |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1525 { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1526 *len_ret = sizeof (struct sockaddr_in); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1527 return 1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1528 } |
|
900
58a7438c2e7e
Some UNIX types want the exact size of the address structure
Guido van Rossum <guido@python.org>
parents:
896
diff
changeset
|
1529 |
|
21128
15ff504632ed
Remove INET6 define. Use ENABLE_IPV6 instead.
Martin v. Löwis <martin@v.loewis.de>
parents:
21094
diff
changeset
|
1530 #ifdef ENABLE_IPV6 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1531 case AF_INET6: |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1532 { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1533 *len_ret = sizeof (struct sockaddr_in6); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1534 return 1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1535 } |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
1536 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
1537 |
|
31443
afb4c9726d1a
Add FreeBSD support for bluetooth sockets.
Hye-Shik Chang <hyeshik@gmail.com>
parents:
31441
diff
changeset
|
1538 #ifdef USE_BLUETOOTH |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1539 case AF_BLUETOOTH: |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1540 { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1541 switch(s->sock_proto) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1542 { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1543 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1544 case BTPROTO_L2CAP: |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1545 *len_ret = sizeof (struct sockaddr_l2); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1546 return 1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1547 case BTPROTO_RFCOMM: |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1548 *len_ret = sizeof (struct sockaddr_rc); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1549 return 1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1550 case BTPROTO_HCI: |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1551 *len_ret = sizeof (struct sockaddr_hci); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1552 return 1; |
|
31443
afb4c9726d1a
Add FreeBSD support for bluetooth sockets.
Hye-Shik Chang <hyeshik@gmail.com>
parents:
31441
diff
changeset
|
1553 #if !defined(__FreeBSD__) |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1554 case BTPROTO_SCO: |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1555 *len_ret = sizeof (struct sockaddr_sco); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1556 return 1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1557 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1558 default: |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1559 PyErr_SetString(socket_error, "getsockaddrlen: " |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1560 "unknown BT protocol"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1561 return 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1562 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1563 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1564 } |
|
31441
493707692671
Patch #874083: Bluetooth support for socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
31274
diff
changeset
|
1565 #endif |
|
493707692671
Patch #874083: Bluetooth support for socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
31274
diff
changeset
|
1566 |
|
19151
cd44254360b6
Autotest for netpacket/packet.h, as it is not available on all Linux versions.
Martin v. Löwis <martin@v.loewis.de>
parents:
18997
diff
changeset
|
1567 #ifdef HAVE_NETPACKET_PACKET_H |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1568 case AF_PACKET: |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1569 { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1570 *len_ret = sizeof (struct sockaddr_ll); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1571 return 1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1572 } |
|
16410
3d4a7cd0bf17
SF patch 101137 from Grant Edwards
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16400
diff
changeset
|
1573 #endif |
|
16947
b25131bc6ec7
RISCOS changes by dschwertberger.
Guido van Rossum <guido@python.org>
parents:
16472
diff
changeset
|
1574 |
|
44568
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
1575 #ifdef HAVE_LINUX_TIPC_H |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1576 case AF_TIPC: |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1577 { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1578 *len_ret = sizeof (struct sockaddr_tipc); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1579 return 1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1580 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1581 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1582 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1583 /* More cases here... */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1584 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1585 default: |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1586 PyErr_SetString(socket_error, "getsockaddrlen: bad family"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1587 return 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1588 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1589 } |
|
900
58a7438c2e7e
Some UNIX types want the exact size of the address structure
Guido van Rossum <guido@python.org>
parents:
896
diff
changeset
|
1590 } |
|
58a7438c2e7e
Some UNIX types want the exact size of the address structure
Guido van Rossum <guido@python.org>
parents:
896
diff
changeset
|
1591 |
|
58a7438c2e7e
Some UNIX types want the exact size of the address structure
Guido van Rossum <guido@python.org>
parents:
896
diff
changeset
|
1592 |
|
43881
70cfc7b504c2
This is roughly socket2.diff from issue 1378, with a few changes applied
Guido van Rossum <guido@python.org>
parents:
43877
diff
changeset
|
1593 /* s._accept() -> (fd, address) */ |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1594 |
| 1970 | 1595 static PyObject * |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
1596 sock_accept(PySocketSockObject *s) |
| 294 | 1597 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1598 sock_addr_t addrbuf; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1599 SOCKET_T newfd = INVALID_SOCKET; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1600 socklen_t addrlen; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1601 PyObject *sock = NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1602 PyObject *addr = NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1603 PyObject *res = NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1604 int timeout; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1605 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1606 if (!getsockaddrlen(s, &addrlen)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1607 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1608 memset(&addrbuf, 0, addrlen); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1609 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1610 if (!IS_SELECTABLE(s)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1611 return select_error(); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1612 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1613 Py_BEGIN_ALLOW_THREADS |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1614 timeout = internal_select(s, 0); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1615 if (!timeout) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1616 newfd = accept(s->sock_fd, SAS2SA(&addrbuf), &addrlen); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1617 Py_END_ALLOW_THREADS |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1618 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1619 if (timeout == 1) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1620 PyErr_SetString(socket_timeout, "timed out"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1621 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1622 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1623 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1624 if (newfd == INVALID_SOCKET) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1625 return s->errorhandler(); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1626 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1627 sock = PyLong_FromSocket_t(newfd); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1628 if (sock == NULL) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1629 SOCKETCLOSE(newfd); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1630 goto finally; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1631 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1632 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1633 addr = makesockaddr(s->sock_fd, SAS2SA(&addrbuf), |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1634 addrlen, s->sock_proto); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1635 if (addr == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1636 goto finally; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1637 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1638 res = PyTuple_Pack(2, sock, addr); |
|
4871
a7159ba0e45d
Check of return values and proper error handling.
Barry Warsaw <barry@python.org>
parents:
4783
diff
changeset
|
1639 |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
1640 finally: |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1641 Py_XDECREF(sock); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1642 Py_XDECREF(addr); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1643 return res; |
| 294 | 1644 } |
| 1645 | |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
1646 PyDoc_STRVAR(accept_doc, |
|
43881
70cfc7b504c2
This is roughly socket2.diff from issue 1378, with a few changes applied
Guido van Rossum <guido@python.org>
parents:
43877
diff
changeset
|
1647 "_accept() -> (integer, address info)\n\ |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1648 \n\ |
|
43881
70cfc7b504c2
This is roughly socket2.diff from issue 1378, with a few changes applied
Guido van Rossum <guido@python.org>
parents:
43877
diff
changeset
|
1649 Wait for an incoming connection. Return a new socket file descriptor\n\ |
|
70cfc7b504c2
This is roughly socket2.diff from issue 1378, with a few changes applied
Guido van Rossum <guido@python.org>
parents:
43877
diff
changeset
|
1650 representing the connection, and the address of the client.\n\ |
|
70cfc7b504c2
This is roughly socket2.diff from issue 1378, with a few changes applied
Guido van Rossum <guido@python.org>
parents:
43877
diff
changeset
|
1651 For IP sockets, the address info is a pair (hostaddr, port)."); |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1652 |
|
23815
203d1412a7e8
Major overhaul of timeout sockets:
Guido van Rossum <guido@python.org>
parents:
23807
diff
changeset
|
1653 /* s.setblocking(flag) method. Argument: |
|
203d1412a7e8
Major overhaul of timeout sockets:
Guido van Rossum <guido@python.org>
parents:
23807
diff
changeset
|
1654 False -- non-blocking mode; same as settimeout(0) |
|
203d1412a7e8
Major overhaul of timeout sockets:
Guido van Rossum <guido@python.org>
parents:
23807
diff
changeset
|
1655 True -- blocking mode; same as settimeout(None) |
|
203d1412a7e8
Major overhaul of timeout sockets:
Guido van Rossum <guido@python.org>
parents:
23807
diff
changeset
|
1656 */ |
|
1867
758c1374f303
Setup.in: added tkinter; rearranged the definition of PYTHONPATH so
Guido van Rossum <guido@python.org>
parents:
1792
diff
changeset
|
1657 |
| 1970 | 1658 static PyObject * |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
1659 sock_setblocking(PySocketSockObject *s, PyObject *arg) |
|
1867
758c1374f303
Setup.in: added tkinter; rearranged the definition of PYTHONPATH so
Guido van Rossum <guido@python.org>
parents:
1792
diff
changeset
|
1660 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1661 int block; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1662 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1663 block = PyLong_AsLong(arg); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1664 if (block == -1 && PyErr_Occurred()) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1665 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1666 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1667 s->sock_timeout = block ? -1.0 : 0.0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1668 internal_setblocking(s, block); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1669 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1670 Py_INCREF(Py_None); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1671 return Py_None; |
|
1867
758c1374f303
Setup.in: added tkinter; rearranged the definition of PYTHONPATH so
Guido van Rossum <guido@python.org>
parents:
1792
diff
changeset
|
1672 } |
|
758c1374f303
Setup.in: added tkinter; rearranged the definition of PYTHONPATH so
Guido van Rossum <guido@python.org>
parents:
1792
diff
changeset
|
1673 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
1674 PyDoc_STRVAR(setblocking_doc, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1675 "setblocking(flag)\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1676 \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1677 Set the socket to blocking (flag is true) or non-blocking (false).\n\ |
|
23815
203d1412a7e8
Major overhaul of timeout sockets:
Guido van Rossum <guido@python.org>
parents:
23807
diff
changeset
|
1678 setblocking(True) is equivalent to settimeout(None);\n\ |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
1679 setblocking(False) is equivalent to settimeout(0.0)."); |
|
23815
203d1412a7e8
Major overhaul of timeout sockets:
Guido van Rossum <guido@python.org>
parents:
23807
diff
changeset
|
1680 |
|
203d1412a7e8
Major overhaul of timeout sockets:
Guido van Rossum <guido@python.org>
parents:
23807
diff
changeset
|
1681 /* s.settimeout(timeout) method. Argument: |
|
203d1412a7e8
Major overhaul of timeout sockets:
Guido van Rossum <guido@python.org>
parents:
23807
diff
changeset
|
1682 None -- no timeout, blocking mode; same as setblocking(True) |
|
203d1412a7e8
Major overhaul of timeout sockets:
Guido van Rossum <guido@python.org>
parents:
23807
diff
changeset
|
1683 0.0 -- non-blocking mode; same as setblocking(False) |
|
203d1412a7e8
Major overhaul of timeout sockets:
Guido van Rossum <guido@python.org>
parents:
23807
diff
changeset
|
1684 > 0 -- timeout mode; operations time out after timeout seconds |
|
203d1412a7e8
Major overhaul of timeout sockets:
Guido van Rossum <guido@python.org>
parents:
23807
diff
changeset
|
1685 < 0 -- illegal; raises an exception |
|
203d1412a7e8
Major overhaul of timeout sockets:
Guido van Rossum <guido@python.org>
parents:
23807
diff
changeset
|
1686 */ |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
1687 static PyObject * |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
1688 sock_settimeout(PySocketSockObject *s, PyObject *arg) |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
1689 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1690 double timeout; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1691 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1692 if (arg == Py_None) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1693 timeout = -1.0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1694 else { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1695 timeout = PyFloat_AsDouble(arg); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1696 if (timeout < 0.0) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1697 if (!PyErr_Occurred()) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1698 PyErr_SetString(PyExc_ValueError, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1699 "Timeout value out of range"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1700 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1701 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1702 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1703 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1704 s->sock_timeout = timeout; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1705 internal_setblocking(s, timeout < 0.0); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1706 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1707 Py_INCREF(Py_None); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1708 return Py_None; |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
1709 } |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
1710 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
1711 PyDoc_STRVAR(settimeout_doc, |
|
23723
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
1712 "settimeout(timeout)\n\ |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
1713 \n\ |
|
23815
203d1412a7e8
Major overhaul of timeout sockets:
Guido van Rossum <guido@python.org>
parents:
23807
diff
changeset
|
1714 Set a timeout on socket operations. 'timeout' can be a float,\n\ |
|
203d1412a7e8
Major overhaul of timeout sockets:
Guido van Rossum <guido@python.org>
parents:
23807
diff
changeset
|
1715 giving in seconds, or None. Setting a timeout of None disables\n\ |
|
203d1412a7e8
Major overhaul of timeout sockets:
Guido van Rossum <guido@python.org>
parents:
23807
diff
changeset
|
1716 the timeout feature and is equivalent to setblocking(1).\n\ |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
1717 Setting a timeout of zero is the same as setblocking(0)."); |
|
23723
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
1718 |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
1719 /* s.gettimeout() method. |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
1720 Returns the timeout associated with a socket. */ |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
1721 static PyObject * |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
1722 sock_gettimeout(PySocketSockObject *s) |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
1723 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1724 if (s->sock_timeout < 0.0) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1725 Py_INCREF(Py_None); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1726 return Py_None; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1727 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1728 else |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1729 return PyFloat_FromDouble(s->sock_timeout); |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
1730 } |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
1731 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
1732 PyDoc_STRVAR(gettimeout_doc, |
|
24676
980767c6cd97
Clean up some docstrings. Some docstrings didn't show their return
Guido van Rossum <guido@python.org>
parents:
24619
diff
changeset
|
1733 "gettimeout() -> timeout\n\ |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
1734 \n\ |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
1735 Returns the timeout in floating seconds associated with socket \n\ |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
1736 operations. A timeout of None indicates that timeouts on socket \n\ |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
1737 operations are disabled."); |
|
1867
758c1374f303
Setup.in: added tkinter; rearranged the definition of PYTHONPATH so
Guido van Rossum <guido@python.org>
parents:
1792
diff
changeset
|
1738 |
|
1039
6aa0ee14ac2e
Made struct a standard built-in module; added string args to {set,get}sockopt;
Guido van Rossum <guido@python.org>
parents:
926
diff
changeset
|
1739 /* s.setsockopt() method. |
|
6aa0ee14ac2e
Made struct a standard built-in module; added string args to {set,get}sockopt;
Guido van Rossum <guido@python.org>
parents:
926
diff
changeset
|
1740 With an integer third argument, sets an integer option. |
|
6aa0ee14ac2e
Made struct a standard built-in module; added string args to {set,get}sockopt;
Guido van Rossum <guido@python.org>
parents:
926
diff
changeset
|
1741 With a string third argument, sets an option from a buffer; |
|
6aa0ee14ac2e
Made struct a standard built-in module; added string args to {set,get}sockopt;
Guido van Rossum <guido@python.org>
parents:
926
diff
changeset
|
1742 use optional built-in module 'struct' to encode the string. */ |
|
896
6459e2f21bf6
Added {get,set}sockopt(). allowbroadcast is now obsolete.
Guido van Rossum <guido@python.org>
parents:
795
diff
changeset
|
1743 |
| 1970 | 1744 static PyObject * |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
1745 sock_setsockopt(PySocketSockObject *s, PyObject *args) |
|
896
6459e2f21bf6
Added {get,set}sockopt(). allowbroadcast is now obsolete.
Guido van Rossum <guido@python.org>
parents:
795
diff
changeset
|
1746 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1747 int level; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1748 int optname; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1749 int res; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1750 char *buf; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1751 int buflen; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1752 int flag; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1753 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1754 if (PyArg_ParseTuple(args, "iii:setsockopt", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1755 &level, &optname, &flag)) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1756 buf = (char *) &flag; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1757 buflen = sizeof flag; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1758 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1759 else { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1760 PyErr_Clear(); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1761 if (!PyArg_ParseTuple(args, "iiy#:setsockopt", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1762 &level, &optname, &buf, &buflen)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1763 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1764 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1765 res = setsockopt(s->sock_fd, level, optname, (void *)buf, buflen); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1766 if (res < 0) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1767 return s->errorhandler(); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1768 Py_INCREF(Py_None); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1769 return Py_None; |
|
896
6459e2f21bf6
Added {get,set}sockopt(). allowbroadcast is now obsolete.
Guido van Rossum <guido@python.org>
parents:
795
diff
changeset
|
1770 } |
|
6459e2f21bf6
Added {get,set}sockopt(). allowbroadcast is now obsolete.
Guido van Rossum <guido@python.org>
parents:
795
diff
changeset
|
1771 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
1772 PyDoc_STRVAR(setsockopt_doc, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1773 "setsockopt(level, option, value)\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1774 \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1775 Set a socket option. See the Unix manual for level and option.\n\ |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
1776 The value argument can either be an integer or a string."); |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1777 |
|
896
6459e2f21bf6
Added {get,set}sockopt(). allowbroadcast is now obsolete.
Guido van Rossum <guido@python.org>
parents:
795
diff
changeset
|
1778 |
|
1039
6aa0ee14ac2e
Made struct a standard built-in module; added string args to {set,get}sockopt;
Guido van Rossum <guido@python.org>
parents:
926
diff
changeset
|
1779 /* s.getsockopt() method. |
|
6aa0ee14ac2e
Made struct a standard built-in module; added string args to {set,get}sockopt;
Guido van Rossum <guido@python.org>
parents:
926
diff
changeset
|
1780 With two arguments, retrieves an integer option. |
|
6aa0ee14ac2e
Made struct a standard built-in module; added string args to {set,get}sockopt;
Guido van Rossum <guido@python.org>
parents:
926
diff
changeset
|
1781 With a third integer argument, retrieves a string buffer of that size; |
|
6aa0ee14ac2e
Made struct a standard built-in module; added string args to {set,get}sockopt;
Guido van Rossum <guido@python.org>
parents:
926
diff
changeset
|
1782 use optional built-in module 'struct' to decode the string. */ |
|
896
6459e2f21bf6
Added {get,set}sockopt(). allowbroadcast is now obsolete.
Guido van Rossum <guido@python.org>
parents:
795
diff
changeset
|
1783 |
| 1970 | 1784 static PyObject * |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
1785 sock_getsockopt(PySocketSockObject *s, PyObject *args) |
|
896
6459e2f21bf6
Added {get,set}sockopt(). allowbroadcast is now obsolete.
Guido van Rossum <guido@python.org>
parents:
795
diff
changeset
|
1786 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1787 int level; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1788 int optname; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1789 int res; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1790 PyObject *buf; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1791 socklen_t buflen = 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1792 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1793 if (!PyArg_ParseTuple(args, "ii|i:getsockopt", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1794 &level, &optname, &buflen)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1795 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1796 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1797 if (buflen == 0) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1798 int flag = 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1799 socklen_t flagsize = sizeof flag; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1800 res = getsockopt(s->sock_fd, level, optname, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1801 (void *)&flag, &flagsize); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1802 if (res < 0) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1803 return s->errorhandler(); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1804 return PyLong_FromLong(flag); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1805 } |
|
26550
b9c912e2c3c0
Patch #614055: Support OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
25994
diff
changeset
|
1806 #ifdef __VMS |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1807 /* socklen_t is unsigned so no negative test is needed, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1808 test buflen == 0 is previously done */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1809 if (buflen > 1024) { |
|
26550
b9c912e2c3c0
Patch #614055: Support OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
25994
diff
changeset
|
1810 #else |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1811 if (buflen <= 0 || buflen > 1024) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1812 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1813 PyErr_SetString(socket_error, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1814 "getsockopt buflen out of range"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1815 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1816 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1817 buf = PyBytes_FromStringAndSize((char *)NULL, buflen); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1818 if (buf == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1819 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1820 res = getsockopt(s->sock_fd, level, optname, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1821 (void *)PyBytes_AS_STRING(buf), &buflen); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1822 if (res < 0) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1823 Py_DECREF(buf); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1824 return s->errorhandler(); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1825 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1826 _PyBytes_Resize(&buf, buflen); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1827 return buf; |
|
896
6459e2f21bf6
Added {get,set}sockopt(). allowbroadcast is now obsolete.
Guido van Rossum <guido@python.org>
parents:
795
diff
changeset
|
1828 } |
|
6459e2f21bf6
Added {get,set}sockopt(). allowbroadcast is now obsolete.
Guido van Rossum <guido@python.org>
parents:
795
diff
changeset
|
1829 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
1830 PyDoc_STRVAR(getsockopt_doc, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1831 "getsockopt(level, option[, buffersize]) -> value\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1832 \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1833 Get a socket option. See the Unix manual for level and option.\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1834 If a nonzero buffersize argument is given, the return value is a\n\ |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
1835 string of that length; otherwise it is an integer."); |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1836 |
|
896
6459e2f21bf6
Added {get,set}sockopt(). allowbroadcast is now obsolete.
Guido van Rossum <guido@python.org>
parents:
795
diff
changeset
|
1837 |
|
13278
3370edad08ce
Restore strict checking of socket address values; addresses passed to
Fred Drake <fdrake@acm.org>
parents:
13256
diff
changeset
|
1838 /* s.bind(sockaddr) method */ |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1839 |
| 1970 | 1840 static PyObject * |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
1841 sock_bind(PySocketSockObject *s, PyObject *addro) |
| 294 | 1842 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1843 sock_addr_t addrbuf; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1844 int addrlen; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1845 int res; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1846 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1847 if (!getsockaddrarg(s, addro, SAS2SA(&addrbuf), &addrlen)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1848 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1849 Py_BEGIN_ALLOW_THREADS |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1850 res = bind(s->sock_fd, SAS2SA(&addrbuf), addrlen); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1851 Py_END_ALLOW_THREADS |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1852 if (res < 0) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1853 return s->errorhandler(); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1854 Py_INCREF(Py_None); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1855 return Py_None; |
| 294 | 1856 } |
| 1857 | |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
1858 PyDoc_STRVAR(bind_doc, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1859 "bind(address)\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1860 \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1861 Bind the socket to a local address. For IP sockets, the address is a\n\ |
|
16410
3d4a7cd0bf17
SF patch 101137 from Grant Edwards
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16400
diff
changeset
|
1862 pair (host, port); the host must refer to the local host. For raw packet\n\ |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
1863 sockets the address is a tuple (ifname, proto [,pkttype [,hatype]])"); |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1864 |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1865 |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1866 /* s.close() method. |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1867 Set the file descriptor to -1 so operations tried subsequently |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1868 will surely fail. */ |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1869 |
| 1970 | 1870 static PyObject * |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
1871 sock_close(PySocketSockObject *s) |
| 294 | 1872 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1873 SOCKET_T fd; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1874 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1875 if ((fd = s->sock_fd) != -1) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1876 s->sock_fd = -1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1877 Py_BEGIN_ALLOW_THREADS |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1878 (void) SOCKETCLOSE(fd); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1879 Py_END_ALLOW_THREADS |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1880 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1881 Py_INCREF(Py_None); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1882 return Py_None; |
| 294 | 1883 } |
| 1884 | |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
1885 PyDoc_STRVAR(close_doc, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1886 "close()\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1887 \n\ |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
1888 Close the socket. It cannot be used after this call."); |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1889 |
|
23818
8a0a14e3725e
Fix non-blocking connect() for Windows. Refactored the code
Guido van Rossum <guido@python.org>
parents:
23815
diff
changeset
|
1890 static int |
|
29651
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
1891 internal_connect(PySocketSockObject *s, struct sockaddr *addr, int addrlen, |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1892 int *timeoutp) |
|
23818
8a0a14e3725e
Fix non-blocking connect() for Windows. Refactored the code
Guido van Rossum <guido@python.org>
parents:
23815
diff
changeset
|
1893 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1894 int res, timeout; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1895 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1896 timeout = 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1897 res = connect(s->sock_fd, addr, addrlen); |
|
23818
8a0a14e3725e
Fix non-blocking connect() for Windows. Refactored the code
Guido van Rossum <guido@python.org>
parents:
23815
diff
changeset
|
1898 |
|
8a0a14e3725e
Fix non-blocking connect() for Windows. Refactored the code
Guido van Rossum <guido@python.org>
parents:
23815
diff
changeset
|
1899 #ifdef MS_WINDOWS |
|
8a0a14e3725e
Fix non-blocking connect() for Windows. Refactored the code
Guido van Rossum <guido@python.org>
parents:
23815
diff
changeset
|
1900 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1901 if (s->sock_timeout > 0.0) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1902 if (res < 0 && WSAGetLastError() == WSAEWOULDBLOCK && |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1903 IS_SELECTABLE(s)) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1904 /* This is a mess. Best solution: trust select */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1905 fd_set fds; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1906 fd_set fds_exc; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1907 struct timeval tv; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1908 tv.tv_sec = (int)s->sock_timeout; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1909 tv.tv_usec = (int)((s->sock_timeout - tv.tv_sec) * 1e6); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1910 FD_ZERO(&fds); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1911 FD_SET(s->sock_fd, &fds); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1912 FD_ZERO(&fds_exc); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1913 FD_SET(s->sock_fd, &fds_exc); |
|
64121
2a4ceebdfcfb
Merged revisions 84146-84147,84150 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61467
diff
changeset
|
1914 res = select(Py_SAFE_DOWNCAST(s->sock_fd+1, SOCKET_T, int), |
|
2a4ceebdfcfb
Merged revisions 84146-84147,84150 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61467
diff
changeset
|
1915 NULL, &fds, &fds_exc, &tv); |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1916 if (res == 0) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1917 res = WSAEWOULDBLOCK; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1918 timeout = 1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1919 } else if (res > 0) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1920 if (FD_ISSET(s->sock_fd, &fds)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1921 /* The socket is in the writable set - this |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1922 means connected */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1923 res = 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1924 else { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1925 /* As per MS docs, we need to call getsockopt() |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1926 to get the underlying error */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1927 int res_size = sizeof res; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1928 /* It must be in the exception set */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1929 assert(FD_ISSET(s->sock_fd, &fds_exc)); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1930 if (0 == getsockopt(s->sock_fd, SOL_SOCKET, SO_ERROR, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1931 (char *)&res, &res_size)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1932 /* getsockopt also clears WSAGetLastError, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1933 so reset it back. */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1934 WSASetLastError(res); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1935 else |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1936 res = WSAGetLastError(); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1937 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1938 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1939 /* else if (res < 0) an error occurred */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1940 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1941 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1942 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1943 if (res < 0) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1944 res = WSAGetLastError(); |
|
23818
8a0a14e3725e
Fix non-blocking connect() for Windows. Refactored the code
Guido van Rossum <guido@python.org>
parents:
23815
diff
changeset
|
1945 |
|
8a0a14e3725e
Fix non-blocking connect() for Windows. Refactored the code
Guido van Rossum <guido@python.org>
parents:
23815
diff
changeset
|
1946 #else |
|
8a0a14e3725e
Fix non-blocking connect() for Windows. Refactored the code
Guido van Rossum <guido@python.org>
parents:
23815
diff
changeset
|
1947 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1948 if (s->sock_timeout > 0.0) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1949 if (res < 0 && errno == EINPROGRESS && IS_SELECTABLE(s)) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1950 timeout = internal_select(s, 1); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1951 if (timeout == 0) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1952 /* Bug #1019808: in case of an EINPROGRESS, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1953 use getsockopt(SO_ERROR) to get the real |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1954 error. */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1955 socklen_t res_size = sizeof res; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1956 (void)getsockopt(s->sock_fd, SOL_SOCKET, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1957 SO_ERROR, &res, &res_size); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1958 if (res == EISCONN) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1959 res = 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1960 errno = res; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1961 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1962 else if (timeout == -1) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1963 res = errno; /* had error */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1964 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1965 else |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1966 res = EWOULDBLOCK; /* timed out */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1967 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1968 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1969 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1970 if (res < 0) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1971 res = errno; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1972 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1973 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1974 *timeoutp = timeout; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1975 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1976 return res; |
|
23818
8a0a14e3725e
Fix non-blocking connect() for Windows. Refactored the code
Guido van Rossum <guido@python.org>
parents:
23815
diff
changeset
|
1977 } |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1978 |
|
13278
3370edad08ce
Restore strict checking of socket address values; addresses passed to
Fred Drake <fdrake@acm.org>
parents:
13256
diff
changeset
|
1979 /* s.connect(sockaddr) method */ |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1980 |
| 1970 | 1981 static PyObject * |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
1982 sock_connect(PySocketSockObject *s, PyObject *addro) |
| 294 | 1983 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1984 sock_addr_t addrbuf; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1985 int addrlen; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1986 int res; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1987 int timeout; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1988 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1989 if (!getsockaddrarg(s, addro, SAS2SA(&addrbuf), &addrlen)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1990 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1991 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1992 Py_BEGIN_ALLOW_THREADS |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1993 res = internal_connect(s, SAS2SA(&addrbuf), addrlen, &timeout); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1994 Py_END_ALLOW_THREADS |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1995 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1996 if (timeout == 1) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1997 PyErr_SetString(socket_timeout, "timed out"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1998 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
1999 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2000 if (res != 0) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2001 return s->errorhandler(); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2002 Py_INCREF(Py_None); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2003 return Py_None; |
| 294 | 2004 } |
| 2005 | |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
2006 PyDoc_STRVAR(connect_doc, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2007 "connect(address)\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2008 \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2009 Connect the socket to a remote address. For IP sockets, the address\n\ |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
2010 is a pair (host, port)."); |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2011 |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2012 |
|
13278
3370edad08ce
Restore strict checking of socket address values; addresses passed to
Fred Drake <fdrake@acm.org>
parents:
13256
diff
changeset
|
2013 /* s.connect_ex(sockaddr) method */ |
|
6604
f67a6339ede7
Add s.connect_ex() which returns errno instead of raising an exception.
Guido van Rossum <guido@python.org>
parents:
6367
diff
changeset
|
2014 |
|
f67a6339ede7
Add s.connect_ex() which returns errno instead of raising an exception.
Guido van Rossum <guido@python.org>
parents:
6367
diff
changeset
|
2015 static PyObject * |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
2016 sock_connect_ex(PySocketSockObject *s, PyObject *addro) |
|
6604
f67a6339ede7
Add s.connect_ex() which returns errno instead of raising an exception.
Guido van Rossum <guido@python.org>
parents:
6367
diff
changeset
|
2017 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2018 sock_addr_t addrbuf; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2019 int addrlen; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2020 int res; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2021 int timeout; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2022 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2023 if (!getsockaddrarg(s, addro, SAS2SA(&addrbuf), &addrlen)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2024 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2025 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2026 Py_BEGIN_ALLOW_THREADS |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2027 res = internal_connect(s, SAS2SA(&addrbuf), addrlen, &timeout); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2028 Py_END_ALLOW_THREADS |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2029 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2030 /* Signals are not errors (though they may raise exceptions). Adapted |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2031 from PyErr_SetFromErrnoWithFilenameObject(). */ |
|
39442
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
2032 #ifdef EINTR |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2033 if (res == EINTR && PyErr_CheckSignals()) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2034 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2035 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2036 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2037 return PyLong_FromLong((long) res); |
|
6604
f67a6339ede7
Add s.connect_ex() which returns errno instead of raising an exception.
Guido van Rossum <guido@python.org>
parents:
6367
diff
changeset
|
2038 } |
|
f67a6339ede7
Add s.connect_ex() which returns errno instead of raising an exception.
Guido van Rossum <guido@python.org>
parents:
6367
diff
changeset
|
2039 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
2040 PyDoc_STRVAR(connect_ex_doc, |
|
24676
980767c6cd97
Clean up some docstrings. Some docstrings didn't show their return
Guido van Rossum <guido@python.org>
parents:
24619
diff
changeset
|
2041 "connect_ex(address) -> errno\n\ |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2042 \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2043 This is like connect(address), but returns an error code (the errno value)\n\ |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
2044 instead of raising an exception when an error occurs."); |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2045 |
|
6604
f67a6339ede7
Add s.connect_ex() which returns errno instead of raising an exception.
Guido van Rossum <guido@python.org>
parents:
6367
diff
changeset
|
2046 |
|
902
a4793ae26682
Changes for new UNIX-specific built-in module 'select' and new header for
Guido van Rossum <guido@python.org>
parents:
900
diff
changeset
|
2047 /* s.fileno() method */ |
|
a4793ae26682
Changes for new UNIX-specific built-in module 'select' and new header for
Guido van Rossum <guido@python.org>
parents:
900
diff
changeset
|
2048 |
| 1970 | 2049 static PyObject * |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
2050 sock_fileno(PySocketSockObject *s) |
|
902
a4793ae26682
Changes for new UNIX-specific built-in module 'select' and new header for
Guido van Rossum <guido@python.org>
parents:
900
diff
changeset
|
2051 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2052 return PyLong_FromSocket_t(s->sock_fd); |
|
902
a4793ae26682
Changes for new UNIX-specific built-in module 'select' and new header for
Guido van Rossum <guido@python.org>
parents:
900
diff
changeset
|
2053 } |
|
a4793ae26682
Changes for new UNIX-specific built-in module 'select' and new header for
Guido van Rossum <guido@python.org>
parents:
900
diff
changeset
|
2054 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
2055 PyDoc_STRVAR(fileno_doc, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2056 "fileno() -> integer\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2057 \n\ |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
2058 Return the integer file descriptor of the socket."); |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2059 |
|
902
a4793ae26682
Changes for new UNIX-specific built-in module 'select' and new header for
Guido van Rossum <guido@python.org>
parents:
900
diff
changeset
|
2060 |
|
1094
d2af6bdcb6d0
* config.c: Added audioop to lists.
Guido van Rossum <guido@python.org>
parents:
1039
diff
changeset
|
2061 /* s.getsockname() method */ |
|
d2af6bdcb6d0
* config.c: Added audioop to lists.
Guido van Rossum <guido@python.org>
parents:
1039
diff
changeset
|
2062 |
| 1970 | 2063 static PyObject * |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
2064 sock_getsockname(PySocketSockObject *s) |
|
1094
d2af6bdcb6d0
* config.c: Added audioop to lists.
Guido van Rossum <guido@python.org>
parents:
1039
diff
changeset
|
2065 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2066 sock_addr_t addrbuf; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2067 int res; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2068 socklen_t addrlen; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2069 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2070 if (!getsockaddrlen(s, &addrlen)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2071 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2072 memset(&addrbuf, 0, addrlen); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2073 Py_BEGIN_ALLOW_THREADS |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2074 res = getsockname(s->sock_fd, SAS2SA(&addrbuf), &addrlen); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2075 Py_END_ALLOW_THREADS |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2076 if (res < 0) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2077 return s->errorhandler(); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2078 return makesockaddr(s->sock_fd, SAS2SA(&addrbuf), addrlen, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2079 s->sock_proto); |
|
1094
d2af6bdcb6d0
* config.c: Added audioop to lists.
Guido van Rossum <guido@python.org>
parents:
1039
diff
changeset
|
2080 } |
|
d2af6bdcb6d0
* config.c: Added audioop to lists.
Guido van Rossum <guido@python.org>
parents:
1039
diff
changeset
|
2081 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
2082 PyDoc_STRVAR(getsockname_doc, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2083 "getsockname() -> address info\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2084 \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2085 Return the address of the local endpoint. For IP sockets, the address\n\ |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
2086 info is a pair (hostaddr, port)."); |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2087 |
|
1094
d2af6bdcb6d0
* config.c: Added audioop to lists.
Guido van Rossum <guido@python.org>
parents:
1039
diff
changeset
|
2088 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2089 #ifdef HAVE_GETPEERNAME /* Cray APP doesn't have this :-( */ |
|
1094
d2af6bdcb6d0
* config.c: Added audioop to lists.
Guido van Rossum <guido@python.org>
parents:
1039
diff
changeset
|
2090 /* s.getpeername() method */ |
|
d2af6bdcb6d0
* config.c: Added audioop to lists.
Guido van Rossum <guido@python.org>
parents:
1039
diff
changeset
|
2091 |
| 1970 | 2092 static PyObject * |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
2093 sock_getpeername(PySocketSockObject *s) |
|
1094
d2af6bdcb6d0
* config.c: Added audioop to lists.
Guido van Rossum <guido@python.org>
parents:
1039
diff
changeset
|
2094 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2095 sock_addr_t addrbuf; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2096 int res; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2097 socklen_t addrlen; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2098 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2099 if (!getsockaddrlen(s, &addrlen)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2100 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2101 memset(&addrbuf, 0, addrlen); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2102 Py_BEGIN_ALLOW_THREADS |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2103 res = getpeername(s->sock_fd, SAS2SA(&addrbuf), &addrlen); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2104 Py_END_ALLOW_THREADS |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2105 if (res < 0) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2106 return s->errorhandler(); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2107 return makesockaddr(s->sock_fd, SAS2SA(&addrbuf), addrlen, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2108 s->sock_proto); |
|
1094
d2af6bdcb6d0
* config.c: Added audioop to lists.
Guido van Rossum <guido@python.org>
parents:
1039
diff
changeset
|
2109 } |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2110 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
2111 PyDoc_STRVAR(getpeername_doc, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2112 "getpeername() -> address info\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2113 \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2114 Return the address of the remote endpoint. For IP sockets, the address\n\ |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
2115 info is a pair (hostaddr, port)."); |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2116 |
|
1746
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1413
diff
changeset
|
2117 #endif /* HAVE_GETPEERNAME */ |
|
1094
d2af6bdcb6d0
* config.c: Added audioop to lists.
Guido van Rossum <guido@python.org>
parents:
1039
diff
changeset
|
2118 |
|
d2af6bdcb6d0
* config.c: Added audioop to lists.
Guido van Rossum <guido@python.org>
parents:
1039
diff
changeset
|
2119 |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2120 /* s.listen(n) method */ |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2121 |
| 1970 | 2122 static PyObject * |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
2123 sock_listen(PySocketSockObject *s, PyObject *arg) |
| 294 | 2124 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2125 int backlog; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2126 int res; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2127 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2128 backlog = PyLong_AsLong(arg); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2129 if (backlog == -1 && PyErr_Occurred()) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2130 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2131 Py_BEGIN_ALLOW_THREADS |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2132 if (backlog < 1) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2133 backlog = 1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2134 res = listen(s->sock_fd, backlog); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2135 Py_END_ALLOW_THREADS |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2136 if (res < 0) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2137 return s->errorhandler(); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2138 Py_INCREF(Py_None); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2139 return Py_None; |
| 294 | 2140 } |
| 2141 | |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
2142 PyDoc_STRVAR(listen_doc, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2143 "listen(backlog)\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2144 \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2145 Enable a server to accept connections. The backlog argument must be at\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2146 least 1; it specifies the number of unaccepted connection that the system\n\ |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
2147 will allow before refusing new connections."); |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2148 |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2149 |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
2150 /* |
|
38673
a19c20c5e5c7
Merge the rest of the trunk.
Thomas Wouters <thomas@python.org>
parents:
38669
diff
changeset
|
2151 * This is the guts of the recv() and recv_into() methods, which reads into a |
|
40582
67287ca4e1e8
Merged revisions 53005-53303 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40450
diff
changeset
|
2152 * char buffer. If you have any inc/dec ref to do to the objects that contain |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
2153 * the buffer, do it in the caller. This function returns the number of bytes |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
2154 * succesfully read. If there was an error, it returns -1. Note that it is |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
2155 * also possible that we return a number of bytes smaller than the request |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
2156 * bytes. |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
2157 */ |
|
64121
2a4ceebdfcfb
Merged revisions 84146-84147,84150 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61467
diff
changeset
|
2158 static Py_ssize_t |
|
2a4ceebdfcfb
Merged revisions 84146-84147,84150 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61467
diff
changeset
|
2159 sock_recv_guts(PySocketSockObject *s, char* cbuf, Py_ssize_t len, int flags) |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
2160 { |
|
64121
2a4ceebdfcfb
Merged revisions 84146-84147,84150 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61467
diff
changeset
|
2161 Py_ssize_t outlen = -1; |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2162 int timeout; |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
2163 #ifdef __VMS |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2164 int remaining; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2165 char *read_buf; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2166 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2167 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2168 if (!IS_SELECTABLE(s)) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2169 select_error(); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2170 return -1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2171 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2172 if (len == 0) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2173 /* If 0 bytes were requested, do nothing. */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2174 return 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2175 } |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
2176 |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
2177 #ifndef __VMS |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2178 Py_BEGIN_ALLOW_THREADS |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2179 timeout = internal_select(s, 0); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2180 if (!timeout) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2181 outlen = recv(s->sock_fd, cbuf, len, flags); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2182 Py_END_ALLOW_THREADS |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2183 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2184 if (timeout == 1) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2185 PyErr_SetString(socket_timeout, "timed out"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2186 return -1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2187 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2188 if (outlen < 0) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2189 /* Note: the call to errorhandler() ALWAYS indirectly returned |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2190 NULL, so ignore its return value */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2191 s->errorhandler(); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2192 return -1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2193 } |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
2194 #else |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2195 read_buf = cbuf; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2196 remaining = len; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2197 while (remaining != 0) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2198 unsigned int segment; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2199 int nread = -1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2200 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2201 segment = remaining /SEGMENT_SIZE; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2202 if (segment != 0) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2203 segment = SEGMENT_SIZE; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2204 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2205 else { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2206 segment = remaining; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2207 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2208 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2209 Py_BEGIN_ALLOW_THREADS |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2210 timeout = internal_select(s, 0); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2211 if (!timeout) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2212 nread = recv(s->sock_fd, read_buf, segment, flags); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2213 Py_END_ALLOW_THREADS |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2214 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2215 if (timeout == 1) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2216 PyErr_SetString(socket_timeout, "timed out"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2217 return -1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2218 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2219 if (nread < 0) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2220 s->errorhandler(); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2221 return -1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2222 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2223 if (nread != remaining) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2224 read_buf += nread; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2225 break; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2226 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2227 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2228 remaining -= segment; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2229 read_buf += segment; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2230 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2231 outlen = read_buf - cbuf; |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
2232 #endif /* !__VMS */ |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
2233 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2234 return outlen; |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
2235 } |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
2236 |
|
16947
b25131bc6ec7
RISCOS changes by dschwertberger.
Guido van Rossum <guido@python.org>
parents:
16472
diff
changeset
|
2237 |
|
1293
ac3c80abbf43
* classobject.c: in instance_getattr, don't make a method out of a
Guido van Rossum <guido@python.org>
parents:
1271
diff
changeset
|
2238 /* s.recv(nbytes [,flags]) method */ |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2239 |
| 1970 | 2240 static PyObject * |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
2241 sock_recv(PySocketSockObject *s, PyObject *args) |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2242 { |
|
64121
2a4ceebdfcfb
Merged revisions 84146-84147,84150 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61467
diff
changeset
|
2243 Py_ssize_t recvlen, outlen; |
|
2a4ceebdfcfb
Merged revisions 84146-84147,84150 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61467
diff
changeset
|
2244 int flags = 0; |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2245 PyObject *buf; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2246 |
|
64121
2a4ceebdfcfb
Merged revisions 84146-84147,84150 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61467
diff
changeset
|
2247 if (!PyArg_ParseTuple(args, "n|i:recv", &recvlen, &flags)) |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2248 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2249 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2250 if (recvlen < 0) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2251 PyErr_SetString(PyExc_ValueError, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2252 "negative buffersize in recv"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2253 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2254 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2255 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2256 /* Allocate a new string. */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2257 buf = PyBytes_FromStringAndSize((char *) 0, recvlen); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2258 if (buf == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2259 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2260 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2261 /* Call the guts */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2262 outlen = sock_recv_guts(s, PyBytes_AS_STRING(buf), recvlen, flags); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2263 if (outlen < 0) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2264 /* An error occurred, release the string and return an |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2265 error. */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2266 Py_DECREF(buf); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2267 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2268 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2269 if (outlen != recvlen) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2270 /* We did not read as many bytes as we anticipated, resize the |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2271 string if possible and be successful. */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2272 _PyBytes_Resize(&buf, outlen); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2273 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2274 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2275 return buf; |
| 294 | 2276 } |
| 2277 | |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
2278 PyDoc_STRVAR(recv_doc, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2279 "recv(buffersize[, flags]) -> data\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2280 \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2281 Receive up to buffersize bytes from the socket. For the optional flags\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2282 argument, see the Unix manual. When no data is available, block until\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2283 at least one byte is available or until the remote end is closed. When\n\ |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
2284 the remote end is closed and all data is read, return the empty string."); |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2285 |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2286 |
|
38673
a19c20c5e5c7
Merge the rest of the trunk.
Thomas Wouters <thomas@python.org>
parents:
38669
diff
changeset
|
2287 /* s.recv_into(buffer, [nbytes [,flags]]) method */ |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
2288 |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
2289 static PyObject* |
|
38673
a19c20c5e5c7
Merge the rest of the trunk.
Thomas Wouters <thomas@python.org>
parents:
38669
diff
changeset
|
2290 sock_recv_into(PySocketSockObject *s, PyObject *args, PyObject *kwds) |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
2291 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2292 static char *kwlist[] = {"buffer", "nbytes", "flags", 0}; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2293 |
|
64121
2a4ceebdfcfb
Merged revisions 84146-84147,84150 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61467
diff
changeset
|
2294 int flags = 0; |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2295 Py_buffer pbuf; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2296 char *buf; |
|
64121
2a4ceebdfcfb
Merged revisions 84146-84147,84150 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61467
diff
changeset
|
2297 Py_ssize_t buflen, readlen, recvlen = 0; |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2298 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2299 /* Get the buffer's memory */ |
|
64121
2a4ceebdfcfb
Merged revisions 84146-84147,84150 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61467
diff
changeset
|
2300 if (!PyArg_ParseTupleAndKeywords(args, kwds, "w*|ni:recv_into", kwlist, |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2301 &pbuf, &recvlen, &flags)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2302 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2303 buf = pbuf.buf; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2304 buflen = pbuf.len; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2305 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2306 if (recvlen < 0) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2307 PyBuffer_Release(&pbuf); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2308 PyErr_SetString(PyExc_ValueError, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2309 "negative buffersize in recv_into"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2310 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2311 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2312 if (recvlen == 0) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2313 /* If nbytes was not specified, use the buffer's length */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2314 recvlen = buflen; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2315 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2316 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2317 /* Check if the buffer is large enough */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2318 if (buflen < recvlen) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2319 PyBuffer_Release(&pbuf); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2320 PyErr_SetString(PyExc_ValueError, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2321 "buffer too small for requested bytes"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2322 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2323 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2324 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2325 /* Call the guts */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2326 readlen = sock_recv_guts(s, buf, recvlen, flags); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2327 if (readlen < 0) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2328 /* Return an error. */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2329 PyBuffer_Release(&pbuf); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2330 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2331 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2332 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2333 PyBuffer_Release(&pbuf); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2334 /* Return the number of bytes read. Note that we do not do anything |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2335 special here in the case that readlen < recvlen. */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2336 return PyLong_FromSsize_t(readlen); |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
2337 } |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
2338 |
|
38673
a19c20c5e5c7
Merge the rest of the trunk.
Thomas Wouters <thomas@python.org>
parents:
38669
diff
changeset
|
2339 PyDoc_STRVAR(recv_into_doc, |
|
a19c20c5e5c7
Merge the rest of the trunk.
Thomas Wouters <thomas@python.org>
parents:
38669
diff
changeset
|
2340 "recv_into(buffer, [nbytes[, flags]]) -> nbytes_read\n\ |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
2341 \n\ |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
2342 A version of recv() that stores its data into a buffer rather than creating \n\ |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
2343 a new string. Receive up to buffersize bytes from the socket. If buffersize \n\ |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
2344 is not specified (or 0), receive up to the size available in the given buffer.\n\ |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
2345 \n\ |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
2346 See recv() for documentation about the flags."); |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
2347 |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
2348 |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
2349 /* |
|
44349
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44158
diff
changeset
|
2350 * This is the guts of the recvfrom() and recvfrom_into() methods, which reads |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44158
diff
changeset
|
2351 * into a char buffer. If you have any inc/def ref to do to the objects that |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44158
diff
changeset
|
2352 * contain the buffer, do it in the caller. This function returns the number |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44158
diff
changeset
|
2353 * of bytes succesfully read. If there was an error, it returns -1. Note |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44158
diff
changeset
|
2354 * that it is also possible that we return a number of bytes smaller than the |
|
4dc01402d78a
Merged revisions 59541-59561 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44158
diff
changeset
|
2355 * request bytes. |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
2356 * |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
2357 * 'addr' is a return value for the address object. Note that you must decref |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
2358 * it yourself. |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
2359 */ |
|
64121
2a4ceebdfcfb
Merged revisions 84146-84147,84150 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61467
diff
changeset
|
2360 static Py_ssize_t |
|
2a4ceebdfcfb
Merged revisions 84146-84147,84150 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61467
diff
changeset
|
2361 sock_recvfrom_guts(PySocketSockObject *s, char* cbuf, Py_ssize_t len, int flags, |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2362 PyObject** addr) |
| 294 | 2363 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2364 sock_addr_t addrbuf; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2365 int timeout; |
|
64121
2a4ceebdfcfb
Merged revisions 84146-84147,84150 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61467
diff
changeset
|
2366 Py_ssize_t n = -1; |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2367 socklen_t addrlen; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2368 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2369 *addr = NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2370 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2371 if (!getsockaddrlen(s, &addrlen)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2372 return -1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2373 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2374 if (!IS_SELECTABLE(s)) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2375 select_error(); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2376 return -1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2377 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2378 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2379 Py_BEGIN_ALLOW_THREADS |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2380 memset(&addrbuf, 0, addrlen); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2381 timeout = internal_select(s, 0); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2382 if (!timeout) { |
|
3702
3408756ec601
changed windows test symbols; removed debug printf from sockets
Guido van Rossum <guido@python.org>
parents:
3700
diff
changeset
|
2383 #ifndef MS_WINDOWS |
|
22115
d104bb50a194
OS/2 EMX port changes (Modules part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
22096
diff
changeset
|
2384 #if defined(PYOS_OS2) && !defined(PYCC_GCC) |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2385 n = recvfrom(s->sock_fd, cbuf, len, flags, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2386 SAS2SA(&addrbuf), &addrlen); |
|
6718
32f2eda2946c
Left-aligned preprocessor directives and changed C++ comments to C
Guido van Rossum <guido@python.org>
parents:
6626
diff
changeset
|
2387 #else |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2388 n = recvfrom(s->sock_fd, cbuf, len, flags, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2389 (void *) &addrbuf, &addrlen); |
|
6718
32f2eda2946c
Left-aligned preprocessor directives and changed C++ comments to C
Guido van Rossum <guido@python.org>
parents:
6626
diff
changeset
|
2390 #endif |
|
1792
a584b4bbbc59
Changes to make it work and compile on NT, by Mark Hammond.
Guido van Rossum <guido@python.org>
parents:
1760
diff
changeset
|
2391 #else |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2392 n = recvfrom(s->sock_fd, cbuf, len, flags, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2393 SAS2SA(&addrbuf), &addrlen); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2394 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2395 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2396 Py_END_ALLOW_THREADS |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2397 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2398 if (timeout == 1) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2399 PyErr_SetString(socket_timeout, "timed out"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2400 return -1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2401 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2402 if (n < 0) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2403 s->errorhandler(); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2404 return -1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2405 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2406 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2407 if (!(*addr = makesockaddr(s->sock_fd, SAS2SA(&addrbuf), |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2408 addrlen, s->sock_proto))) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2409 return -1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2410 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2411 return n; |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
2412 } |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
2413 |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
2414 /* s.recvfrom(nbytes [,flags]) method */ |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
2415 |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
2416 static PyObject * |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
2417 sock_recvfrom(PySocketSockObject *s, PyObject *args) |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
2418 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2419 PyObject *buf = NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2420 PyObject *addr = NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2421 PyObject *ret = NULL; |
|
64121
2a4ceebdfcfb
Merged revisions 84146-84147,84150 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61467
diff
changeset
|
2422 int flags = 0; |
|
2a4ceebdfcfb
Merged revisions 84146-84147,84150 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61467
diff
changeset
|
2423 Py_ssize_t recvlen, outlen; |
|
2a4ceebdfcfb
Merged revisions 84146-84147,84150 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61467
diff
changeset
|
2424 |
|
2a4ceebdfcfb
Merged revisions 84146-84147,84150 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61467
diff
changeset
|
2425 if (!PyArg_ParseTuple(args, "n|i:recvfrom", &recvlen, &flags)) |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2426 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2427 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2428 if (recvlen < 0) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2429 PyErr_SetString(PyExc_ValueError, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2430 "negative buffersize in recvfrom"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2431 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2432 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2433 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2434 buf = PyBytes_FromStringAndSize((char *) 0, recvlen); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2435 if (buf == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2436 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2437 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2438 outlen = sock_recvfrom_guts(s, PyBytes_AS_STRING(buf), |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2439 recvlen, flags, &addr); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2440 if (outlen < 0) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2441 goto finally; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2442 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2443 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2444 if (outlen != recvlen) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2445 /* We did not read as many bytes as we anticipated, resize the |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2446 string if possible and be succesful. */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2447 if (_PyBytes_Resize(&buf, outlen) < 0) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2448 /* Oopsy, not so succesful after all. */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2449 goto finally; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2450 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2451 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2452 ret = PyTuple_Pack(2, buf, addr); |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
2453 |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
2454 finally: |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2455 Py_XDECREF(buf); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2456 Py_XDECREF(addr); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2457 return ret; |
| 294 | 2458 } |
| 2459 | |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
2460 PyDoc_STRVAR(recvfrom_doc, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2461 "recvfrom(buffersize[, flags]) -> (data, address info)\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2462 \n\ |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
2463 Like recv(buffersize, flags) but also return the sender's address info."); |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2464 |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
2465 |
|
38673
a19c20c5e5c7
Merge the rest of the trunk.
Thomas Wouters <thomas@python.org>
parents:
38669
diff
changeset
|
2466 /* s.recvfrom_into(buffer[, nbytes [,flags]]) method */ |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
2467 |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
2468 static PyObject * |
|
38673
a19c20c5e5c7
Merge the rest of the trunk.
Thomas Wouters <thomas@python.org>
parents:
38669
diff
changeset
|
2469 sock_recvfrom_into(PySocketSockObject *s, PyObject *args, PyObject* kwds) |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
2470 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2471 static char *kwlist[] = {"buffer", "nbytes", "flags", 0}; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2472 |
|
64121
2a4ceebdfcfb
Merged revisions 84146-84147,84150 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61467
diff
changeset
|
2473 int flags = 0; |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2474 Py_buffer pbuf; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2475 char *buf; |
|
64121
2a4ceebdfcfb
Merged revisions 84146-84147,84150 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61467
diff
changeset
|
2476 Py_ssize_t readlen, buflen, recvlen = 0; |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2477 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2478 PyObject *addr = NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2479 |
|
64121
2a4ceebdfcfb
Merged revisions 84146-84147,84150 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61467
diff
changeset
|
2480 if (!PyArg_ParseTupleAndKeywords(args, kwds, "w*|ni:recvfrom_into", |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2481 kwlist, &pbuf, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2482 &recvlen, &flags)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2483 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2484 buf = pbuf.buf; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2485 buflen = pbuf.len; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2486 assert(buf != 0 && buflen > 0); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2487 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2488 if (recvlen < 0) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2489 PyBuffer_Release(&pbuf); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2490 PyErr_SetString(PyExc_ValueError, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2491 "negative buffersize in recvfrom_into"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2492 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2493 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2494 if (recvlen == 0) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2495 /* If nbytes was not specified, use the buffer's length */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2496 recvlen = buflen; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2497 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2498 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2499 readlen = sock_recvfrom_guts(s, buf, recvlen, flags, &addr); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2500 if (readlen < 0) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2501 PyBuffer_Release(&pbuf); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2502 /* Return an error */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2503 Py_XDECREF(addr); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2504 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2505 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2506 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2507 PyBuffer_Release(&pbuf); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2508 /* Return the number of bytes read and the address. Note that we do |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2509 not do anything special here in the case that readlen < recvlen. */ |
|
64121
2a4ceebdfcfb
Merged revisions 84146-84147,84150 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61467
diff
changeset
|
2510 return Py_BuildValue("nN", readlen, addr); |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
2511 } |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
2512 |
|
38673
a19c20c5e5c7
Merge the rest of the trunk.
Thomas Wouters <thomas@python.org>
parents:
38669
diff
changeset
|
2513 PyDoc_STRVAR(recvfrom_into_doc, |
|
a19c20c5e5c7
Merge the rest of the trunk.
Thomas Wouters <thomas@python.org>
parents:
38669
diff
changeset
|
2514 "recvfrom_into(buffer[, nbytes[, flags]]) -> (nbytes, address info)\n\ |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
2515 \n\ |
|
38673
a19c20c5e5c7
Merge the rest of the trunk.
Thomas Wouters <thomas@python.org>
parents:
38669
diff
changeset
|
2516 Like recv_into(buffer[, nbytes[, flags]]) but also return the sender's address info."); |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
2517 |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
2518 |
|
1293
ac3c80abbf43
* classobject.c: in instance_getattr, don't make a method out of a
Guido van Rossum <guido@python.org>
parents:
1271
diff
changeset
|
2519 /* s.send(data [,flags]) method */ |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2520 |
| 1970 | 2521 static PyObject * |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
2522 sock_send(PySocketSockObject *s, PyObject *args) |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2523 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2524 char *buf; |
|
64121
2a4ceebdfcfb
Merged revisions 84146-84147,84150 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61467
diff
changeset
|
2525 Py_ssize_t len, n = -1; |
|
2a4ceebdfcfb
Merged revisions 84146-84147,84150 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61467
diff
changeset
|
2526 int flags = 0, timeout; |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2527 Py_buffer pbuf; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2528 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2529 if (!PyArg_ParseTuple(args, "y*|i:send", &pbuf, &flags)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2530 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2531 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2532 if (!IS_SELECTABLE(s)) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2533 PyBuffer_Release(&pbuf); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2534 return select_error(); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2535 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2536 buf = pbuf.buf; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2537 len = pbuf.len; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2538 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2539 Py_BEGIN_ALLOW_THREADS |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2540 timeout = internal_select(s, 1); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2541 if (!timeout) |
|
39442
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
2542 #ifdef __VMS |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2543 n = sendsegmented(s->sock_fd, buf, len, flags); |
|
39442
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
2544 #else |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2545 n = send(s->sock_fd, buf, len, flags); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2546 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2547 Py_END_ALLOW_THREADS |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2548 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2549 PyBuffer_Release(&pbuf); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2550 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2551 if (timeout == 1) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2552 PyErr_SetString(socket_timeout, "timed out"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2553 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2554 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2555 if (n < 0) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2556 return s->errorhandler(); |
|
64121
2a4ceebdfcfb
Merged revisions 84146-84147,84150 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61467
diff
changeset
|
2557 return PyLong_FromSsize_t(n); |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2558 } |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2559 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
2560 PyDoc_STRVAR(send_doc, |
|
20679
e89c25ca6b29
Add sendall() method, which loops until all data is written or an
Guido van Rossum <guido@python.org>
parents:
20661
diff
changeset
|
2561 "send(data[, flags]) -> count\n\ |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2562 \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2563 Send a data string to the socket. For the optional flags\n\ |
|
20679
e89c25ca6b29
Add sendall() method, which loops until all data is written or an
Guido van Rossum <guido@python.org>
parents:
20661
diff
changeset
|
2564 argument, see the Unix manual. Return the number of bytes\n\ |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
2565 sent; this may be less than len(data) if the network is busy."); |
|
20679
e89c25ca6b29
Add sendall() method, which loops until all data is written or an
Guido van Rossum <guido@python.org>
parents:
20661
diff
changeset
|
2566 |
|
e89c25ca6b29
Add sendall() method, which loops until all data is written or an
Guido van Rossum <guido@python.org>
parents:
20661
diff
changeset
|
2567 |
|
e89c25ca6b29
Add sendall() method, which loops until all data is written or an
Guido van Rossum <guido@python.org>
parents:
20661
diff
changeset
|
2568 /* s.sendall(data [,flags]) method */ |
|
e89c25ca6b29
Add sendall() method, which loops until all data is written or an
Guido van Rossum <guido@python.org>
parents:
20661
diff
changeset
|
2569 |
|
e89c25ca6b29
Add sendall() method, which loops until all data is written or an
Guido van Rossum <guido@python.org>
parents:
20661
diff
changeset
|
2570 static PyObject * |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
2571 sock_sendall(PySocketSockObject *s, PyObject *args) |
|
20679
e89c25ca6b29
Add sendall() method, which loops until all data is written or an
Guido van Rossum <guido@python.org>
parents:
20661
diff
changeset
|
2572 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2573 char *buf; |
|
64121
2a4ceebdfcfb
Merged revisions 84146-84147,84150 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61467
diff
changeset
|
2574 Py_ssize_t len, n = -1; |
|
64961
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64393
diff
changeset
|
2575 int flags = 0, timeout, saved_errno; |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2576 Py_buffer pbuf; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2577 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2578 if (!PyArg_ParseTuple(args, "y*|i:sendall", &pbuf, &flags)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2579 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2580 buf = pbuf.buf; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2581 len = pbuf.len; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2582 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2583 if (!IS_SELECTABLE(s)) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2584 PyBuffer_Release(&pbuf); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2585 return select_error(); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2586 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2587 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2588 do { |
|
64961
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64393
diff
changeset
|
2589 Py_BEGIN_ALLOW_THREADS |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2590 timeout = internal_select(s, 1); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2591 n = -1; |
|
64961
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64393
diff
changeset
|
2592 if (!timeout) { |
|
39442
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
2593 #ifdef __VMS |
|
64961
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64393
diff
changeset
|
2594 n = sendsegmented(s->sock_fd, buf, len, flags); |
|
39442
654c380cf8b9
Merged revisions 46753-51188 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
38673
diff
changeset
|
2595 #else |
|
64961
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64393
diff
changeset
|
2596 n = send(s->sock_fd, buf, len, flags); |
|
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64393
diff
changeset
|
2597 #endif |
|
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64393
diff
changeset
|
2598 } |
|
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64393
diff
changeset
|
2599 Py_END_ALLOW_THREADS |
|
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64393
diff
changeset
|
2600 if (timeout == 1) { |
|
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64393
diff
changeset
|
2601 PyBuffer_Release(&pbuf); |
|
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64393
diff
changeset
|
2602 PyErr_SetString(socket_timeout, "timed out"); |
|
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64393
diff
changeset
|
2603 return NULL; |
|
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64393
diff
changeset
|
2604 } |
|
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64393
diff
changeset
|
2605 /* PyErr_CheckSignals() might change errno */ |
|
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64393
diff
changeset
|
2606 saved_errno = errno; |
|
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64393
diff
changeset
|
2607 /* We must run our signal handlers before looping again. |
|
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64393
diff
changeset
|
2608 send() can return a successful partial write when it is |
|
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64393
diff
changeset
|
2609 interrupted, so we can't restrict ourselves to EINTR. */ |
|
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64393
diff
changeset
|
2610 if (PyErr_CheckSignals()) { |
|
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64393
diff
changeset
|
2611 PyBuffer_Release(&pbuf); |
|
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64393
diff
changeset
|
2612 return NULL; |
|
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64393
diff
changeset
|
2613 } |
|
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64393
diff
changeset
|
2614 if (n < 0) { |
|
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64393
diff
changeset
|
2615 /* If interrupted, try again */ |
|
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64393
diff
changeset
|
2616 if (saved_errno == EINTR) |
|
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64393
diff
changeset
|
2617 continue; |
|
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64393
diff
changeset
|
2618 else |
|
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64393
diff
changeset
|
2619 break; |
|
5a7bb85a5d99
Merged revisions 85032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
64393
diff
changeset
|
2620 } |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2621 buf += n; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2622 len -= n; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2623 } while (len > 0); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2624 PyBuffer_Release(&pbuf); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2625 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2626 if (n < 0) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2627 return s->errorhandler(); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2628 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2629 Py_INCREF(Py_None); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2630 return Py_None; |
|
20679
e89c25ca6b29
Add sendall() method, which loops until all data is written or an
Guido van Rossum <guido@python.org>
parents:
20661
diff
changeset
|
2631 } |
|
e89c25ca6b29
Add sendall() method, which loops until all data is written or an
Guido van Rossum <guido@python.org>
parents:
20661
diff
changeset
|
2632 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
2633 PyDoc_STRVAR(sendall_doc, |
|
20679
e89c25ca6b29
Add sendall() method, which loops until all data is written or an
Guido van Rossum <guido@python.org>
parents:
20661
diff
changeset
|
2634 "sendall(data[, flags])\n\ |
|
e89c25ca6b29
Add sendall() method, which loops until all data is written or an
Guido van Rossum <guido@python.org>
parents:
20661
diff
changeset
|
2635 \n\ |
|
e89c25ca6b29
Add sendall() method, which loops until all data is written or an
Guido van Rossum <guido@python.org>
parents:
20661
diff
changeset
|
2636 Send a data string to the socket. For the optional flags\n\ |
|
e89c25ca6b29
Add sendall() method, which loops until all data is written or an
Guido van Rossum <guido@python.org>
parents:
20661
diff
changeset
|
2637 argument, see the Unix manual. This calls send() repeatedly\n\ |
|
e89c25ca6b29
Add sendall() method, which loops until all data is written or an
Guido van Rossum <guido@python.org>
parents:
20661
diff
changeset
|
2638 until all data is sent. If an error occurs, it's impossible\n\ |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
2639 to tell how much data has been sent."); |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2640 |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2641 |
|
1293
ac3c80abbf43
* classobject.c: in instance_getattr, don't make a method out of a
Guido van Rossum <guido@python.org>
parents:
1271
diff
changeset
|
2642 /* s.sendto(data, [flags,] sockaddr) method */ |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2643 |
| 1970 | 2644 static PyObject * |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
2645 sock_sendto(PySocketSockObject *s, PyObject *args) |
| 294 | 2646 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2647 Py_buffer pbuf; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2648 PyObject *addro; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2649 char *buf; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2650 Py_ssize_t len; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2651 sock_addr_t addrbuf; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2652 int addrlen, n = -1, flags, timeout; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2653 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2654 flags = 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2655 if (!PyArg_ParseTuple(args, "y*O:sendto", &pbuf, &addro)) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2656 PyErr_Clear(); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2657 if (!PyArg_ParseTuple(args, "y*iO:sendto", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2658 &pbuf, &flags, &addro)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2659 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2660 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2661 buf = pbuf.buf; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2662 len = pbuf.len; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2663 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2664 if (!IS_SELECTABLE(s)) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2665 PyBuffer_Release(&pbuf); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2666 return select_error(); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2667 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2668 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2669 if (!getsockaddrarg(s, addro, SAS2SA(&addrbuf), &addrlen)) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2670 PyBuffer_Release(&pbuf); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2671 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2672 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2673 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2674 Py_BEGIN_ALLOW_THREADS |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2675 timeout = internal_select(s, 1); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2676 if (!timeout) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2677 n = sendto(s->sock_fd, buf, len, flags, SAS2SA(&addrbuf), addrlen); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2678 Py_END_ALLOW_THREADS |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2679 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2680 PyBuffer_Release(&pbuf); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2681 if (timeout == 1) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2682 PyErr_SetString(socket_timeout, "timed out"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2683 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2684 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2685 if (n < 0) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2686 return s->errorhandler(); |
|
64121
2a4ceebdfcfb
Merged revisions 84146-84147,84150 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61467
diff
changeset
|
2687 return PyLong_FromSsize_t(n); |
| 294 | 2688 } |
| 2689 | |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
2690 PyDoc_STRVAR(sendto_doc, |
|
24676
980767c6cd97
Clean up some docstrings. Some docstrings didn't show their return
Guido van Rossum <guido@python.org>
parents:
24619
diff
changeset
|
2691 "sendto(data[, flags], address) -> count\n\ |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2692 \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2693 Like send(data, flags) but allows specifying the destination address.\n\ |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
2694 For IP sockets, the address is a pair (hostaddr, port)."); |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2695 |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2696 |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2697 /* s.shutdown(how) method */ |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2698 |
| 1970 | 2699 static PyObject * |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
2700 sock_shutdown(PySocketSockObject *s, PyObject *arg) |
| 294 | 2701 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2702 int how; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2703 int res; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2704 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2705 how = PyLong_AsLong(arg); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2706 if (how == -1 && PyErr_Occurred()) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2707 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2708 Py_BEGIN_ALLOW_THREADS |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2709 res = shutdown(s->sock_fd, how); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2710 Py_END_ALLOW_THREADS |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2711 if (res < 0) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2712 return s->errorhandler(); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2713 Py_INCREF(Py_None); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2714 return Py_None; |
| 294 | 2715 } |
| 2716 | |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
2717 PyDoc_STRVAR(shutdown_doc, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2718 "shutdown(flag)\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2719 \n\ |
|
31027
bf038986cb8f
Patch #849595: Add socket.shutdown() constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
30978
diff
changeset
|
2720 Shut down the reading side of the socket (flag == SHUT_RD), the writing side\n\ |
|
bf038986cb8f
Patch #849595: Add socket.shutdown() constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
30978
diff
changeset
|
2721 of the socket (flag == SHUT_WR), or both ends (flag == SHUT_RDWR)."); |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2722 |
|
47667
b1f4ea4eb555
Merged revisions 64214 via svnmerge from
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47663
diff
changeset
|
2723 #if defined(MS_WINDOWS) && defined(SIO_RCVALL) |
|
44535
420fe6d7d5f4
Merged revisions 59703-59773 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44351
diff
changeset
|
2724 static PyObject* |
|
420fe6d7d5f4
Merged revisions 59703-59773 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44351
diff
changeset
|
2725 sock_ioctl(PySocketSockObject *s, PyObject *arg) |
|
420fe6d7d5f4
Merged revisions 59703-59773 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44351
diff
changeset
|
2726 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2727 unsigned long cmd = SIO_RCVALL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2728 unsigned int option = RCVALL_ON; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2729 DWORD recv; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2730 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2731 if (!PyArg_ParseTuple(arg, "kI:ioctl", &cmd, &option)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2732 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2733 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2734 if (WSAIoctl(s->sock_fd, cmd, &option, sizeof(option), |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2735 NULL, 0, &recv, NULL, NULL) == SOCKET_ERROR) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2736 return set_error(); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2737 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2738 return PyLong_FromUnsignedLong(recv); |
|
44535
420fe6d7d5f4
Merged revisions 59703-59773 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44351
diff
changeset
|
2739 } |
|
420fe6d7d5f4
Merged revisions 59703-59773 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44351
diff
changeset
|
2740 PyDoc_STRVAR(sock_ioctl_doc, |
|
420fe6d7d5f4
Merged revisions 59703-59773 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44351
diff
changeset
|
2741 "ioctl(cmd, option) -> long\n\ |
|
420fe6d7d5f4
Merged revisions 59703-59773 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44351
diff
changeset
|
2742 \n\ |
|
420fe6d7d5f4
Merged revisions 59703-59773 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44351
diff
changeset
|
2743 Control the socket with WSAIoctl syscall. Currently only socket.SIO_RCVALL\n\ |
|
420fe6d7d5f4
Merged revisions 59703-59773 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44351
diff
changeset
|
2744 is supported as control. Options must be one of the socket.RCVALL_*\n\ |
|
420fe6d7d5f4
Merged revisions 59703-59773 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44351
diff
changeset
|
2745 constants."); |
|
420fe6d7d5f4
Merged revisions 59703-59773 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44351
diff
changeset
|
2746 |
|
420fe6d7d5f4
Merged revisions 59703-59773 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44351
diff
changeset
|
2747 #endif |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2748 |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2749 /* List of methods for socket objects */ |
| 294 | 2750 |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
2751 static PyMethodDef sock_methods[] = { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2752 {"_accept", (PyCFunction)sock_accept, METH_NOARGS, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2753 accept_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2754 {"bind", (PyCFunction)sock_bind, METH_O, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2755 bind_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2756 {"close", (PyCFunction)sock_close, METH_NOARGS, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2757 close_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2758 {"connect", (PyCFunction)sock_connect, METH_O, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2759 connect_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2760 {"connect_ex", (PyCFunction)sock_connect_ex, METH_O, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2761 connect_ex_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2762 {"fileno", (PyCFunction)sock_fileno, METH_NOARGS, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2763 fileno_doc}, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2764 #ifdef HAVE_GETPEERNAME |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2765 {"getpeername", (PyCFunction)sock_getpeername, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2766 METH_NOARGS, getpeername_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2767 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2768 {"getsockname", (PyCFunction)sock_getsockname, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2769 METH_NOARGS, getsockname_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2770 {"getsockopt", (PyCFunction)sock_getsockopt, METH_VARARGS, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2771 getsockopt_doc}, |
|
47667
b1f4ea4eb555
Merged revisions 64214 via svnmerge from
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47663
diff
changeset
|
2772 #if defined(MS_WINDOWS) && defined(SIO_RCVALL) |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2773 {"ioctl", (PyCFunction)sock_ioctl, METH_VARARGS, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2774 sock_ioctl_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2775 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2776 {"listen", (PyCFunction)sock_listen, METH_O, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2777 listen_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2778 {"recv", (PyCFunction)sock_recv, METH_VARARGS, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2779 recv_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2780 {"recv_into", (PyCFunction)sock_recv_into, METH_VARARGS | METH_KEYWORDS, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2781 recv_into_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2782 {"recvfrom", (PyCFunction)sock_recvfrom, METH_VARARGS, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2783 recvfrom_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2784 {"recvfrom_into", (PyCFunction)sock_recvfrom_into, METH_VARARGS | METH_KEYWORDS, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2785 recvfrom_into_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2786 {"send", (PyCFunction)sock_send, METH_VARARGS, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2787 send_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2788 {"sendall", (PyCFunction)sock_sendall, METH_VARARGS, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2789 sendall_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2790 {"sendto", (PyCFunction)sock_sendto, METH_VARARGS, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2791 sendto_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2792 {"setblocking", (PyCFunction)sock_setblocking, METH_O, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2793 setblocking_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2794 {"settimeout", (PyCFunction)sock_settimeout, METH_O, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2795 settimeout_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2796 {"gettimeout", (PyCFunction)sock_gettimeout, METH_NOARGS, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2797 gettimeout_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2798 {"setsockopt", (PyCFunction)sock_setsockopt, METH_VARARGS, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2799 setsockopt_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2800 {"shutdown", (PyCFunction)sock_shutdown, METH_O, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2801 shutdown_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2802 {NULL, NULL} /* sentinel */ |
| 294 | 2803 }; |
| 2804 | |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36684
diff
changeset
|
2805 /* SockObject members */ |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36684
diff
changeset
|
2806 static PyMemberDef sock_memberlist[] = { |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36684
diff
changeset
|
2807 {"family", T_INT, offsetof(PySocketSockObject, sock_family), READONLY, "the socket family"}, |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36684
diff
changeset
|
2808 {"type", T_INT, offsetof(PySocketSockObject, sock_type), READONLY, "the socket type"}, |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36684
diff
changeset
|
2809 {"proto", T_INT, offsetof(PySocketSockObject, sock_proto), READONLY, "the socket protocol"}, |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36684
diff
changeset
|
2810 {"timeout", T_DOUBLE, offsetof(PySocketSockObject, sock_timeout), READONLY, "the socket timeout"}, |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36684
diff
changeset
|
2811 {0}, |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36684
diff
changeset
|
2812 }; |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2813 |
| 1970 | 2814 /* Deallocate a socket object in response to the last Py_DECREF(). |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2815 First close the file description. */ |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2816 |
| 294 | 2817 static void |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
2818 sock_dealloc(PySocketSockObject *s) |
| 294 | 2819 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2820 if (s->sock_fd != -1) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2821 (void) SOCKETCLOSE(s->sock_fd); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2822 Py_TYPE(s)->tp_free((PyObject *)s); |
| 294 | 2823 } |
| 2824 | |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2825 |
|
2055
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
2826 static PyObject * |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
2827 sock_repr(PySocketSockObject *s) |
|
2055
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
2828 { |
|
13171
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
2829 #if SIZEOF_SOCKET_T > SIZEOF_LONG |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2830 if (s->sock_fd > LONG_MAX) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2831 /* this can occur on Win64, and actually there is a special |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2832 ugly printf formatter for decimal pointer length integer |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2833 printing, only bother if necessary*/ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2834 PyErr_SetString(PyExc_OverflowError, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2835 "no printf formatter to display " |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2836 "the socket descriptor in decimal"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2837 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2838 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2839 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2840 return PyUnicode_FromFormat( |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2841 "<socket object, fd=%ld, family=%d, type=%d, proto=%d>", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2842 (long)s->sock_fd, s->sock_family, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2843 s->sock_type, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2844 s->sock_proto); |
|
2055
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
2845 } |
|
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
2846 |
|
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
2847 |
|
20727
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
2848 /* Create a new, uninitialized socket object. */ |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
2849 |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
2850 static PyObject * |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
2851 sock_new(PyTypeObject *type, PyObject *args, PyObject *kwds) |
|
20727
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
2852 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2853 PyObject *new; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2854 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2855 new = type->tp_alloc(type, 0); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2856 if (new != NULL) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2857 ((PySocketSockObject *)new)->sock_fd = -1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2858 ((PySocketSockObject *)new)->sock_timeout = -1.0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2859 ((PySocketSockObject *)new)->errorhandler = &set_error; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2860 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2861 return new; |
|
20727
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
2862 } |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
2863 |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
2864 |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
2865 /* Initialize a new socket object. */ |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
2866 |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
2867 /*ARGSUSED*/ |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
2868 static int |
|
23807
cc65b5bcfc38
work around name clash with OS/2 TCPIP routine sock_init()
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
23736
diff
changeset
|
2869 sock_initobj(PyObject *self, PyObject *args, PyObject *kwds) |
|
20727
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
2870 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2871 PySocketSockObject *s = (PySocketSockObject *)self; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2872 PyObject *fdobj = NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2873 SOCKET_T fd = INVALID_SOCKET; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2874 int family = AF_INET, type = SOCK_STREAM, proto = 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2875 static char *keywords[] = {"family", "type", "proto", "fileno", 0}; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2876 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2877 if (!PyArg_ParseTupleAndKeywords(args, kwds, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2878 "|iiiO:socket", keywords, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2879 &family, &type, &proto, &fdobj)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2880 return -1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2881 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2882 if (fdobj != NULL && fdobj != Py_None) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2883 fd = PyLong_AsSocket_t(fdobj); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2884 if (fd == (SOCKET_T)(-1) && PyErr_Occurred()) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2885 return -1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2886 if (fd == INVALID_SOCKET) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2887 PyErr_SetString(PyExc_ValueError, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2888 "can't use invalid socket value"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2889 return -1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2890 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2891 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2892 else { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2893 Py_BEGIN_ALLOW_THREADS |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2894 fd = socket(family, type, proto); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2895 Py_END_ALLOW_THREADS |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2896 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2897 if (fd == INVALID_SOCKET) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2898 set_error(); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2899 return -1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2900 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2901 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2902 init_sockobject(s, fd, family, type, proto); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2903 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2904 return 0; |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
2905 |
|
20727
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
2906 } |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
2907 |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
2908 |
|
1746
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1413
diff
changeset
|
2909 /* Type object for socket objects. */ |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2910 |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
2911 static PyTypeObject sock_type = { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2912 PyVarObject_HEAD_INIT(0, 0) /* Must fill in type value later */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2913 "_socket.socket", /* tp_name */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2914 sizeof(PySocketSockObject), /* tp_basicsize */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2915 0, /* tp_itemsize */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2916 (destructor)sock_dealloc, /* tp_dealloc */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2917 0, /* tp_print */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2918 0, /* tp_getattr */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2919 0, /* tp_setattr */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2920 0, /* tp_reserved */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2921 (reprfunc)sock_repr, /* tp_repr */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2922 0, /* tp_as_number */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2923 0, /* tp_as_sequence */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2924 0, /* tp_as_mapping */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2925 0, /* tp_hash */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2926 0, /* tp_call */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2927 0, /* tp_str */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2928 PyObject_GenericGetAttr, /* tp_getattro */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2929 0, /* tp_setattro */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2930 0, /* tp_as_buffer */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2931 Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2932 sock_doc, /* tp_doc */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2933 0, /* tp_traverse */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2934 0, /* tp_clear */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2935 0, /* tp_richcompare */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2936 0, /* tp_weaklistoffset */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2937 0, /* tp_iter */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2938 0, /* tp_iternext */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2939 sock_methods, /* tp_methods */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2940 sock_memberlist, /* tp_members */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2941 0, /* tp_getset */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2942 0, /* tp_base */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2943 0, /* tp_dict */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2944 0, /* tp_descr_get */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2945 0, /* tp_descr_set */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2946 0, /* tp_dictoffset */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2947 sock_initobj, /* tp_init */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2948 PyType_GenericAlloc, /* tp_alloc */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2949 sock_new, /* tp_new */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2950 PyObject_Del, /* tp_free */ |
| 294 | 2951 }; |
| 2952 | |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2953 |
|
324
a81020d505bf
Add gethostname() and s.avail().
Guido van Rossum <guido@python.org>
parents:
309
diff
changeset
|
2954 /* Python interface to gethostname(). */ |
|
a81020d505bf
Add gethostname() and s.avail().
Guido van Rossum <guido@python.org>
parents:
309
diff
changeset
|
2955 |
|
a81020d505bf
Add gethostname() and s.avail().
Guido van Rossum <guido@python.org>
parents:
309
diff
changeset
|
2956 /*ARGSUSED*/ |
| 1970 | 2957 static PyObject * |
|
38669
19fd6141940d
Partially merge trunk into p3yk. The removal of Mac/Tools is confusing svn
Thomas Wouters <thomas@python.org>
parents:
38453
diff
changeset
|
2958 socket_gethostname(PyObject *self, PyObject *unused) |
|
324
a81020d505bf
Add gethostname() and s.avail().
Guido van Rossum <guido@python.org>
parents:
309
diff
changeset
|
2959 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2960 char buf[1024]; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2961 int res; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2962 Py_BEGIN_ALLOW_THREADS |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2963 res = gethostname(buf, (int) sizeof buf - 1); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2964 Py_END_ALLOW_THREADS |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2965 if (res < 0) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2966 return set_error(); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2967 buf[sizeof buf - 1] = '\0'; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2968 return PyUnicode_FromString(buf); |
|
324
a81020d505bf
Add gethostname() and s.avail().
Guido van Rossum <guido@python.org>
parents:
309
diff
changeset
|
2969 } |
| 926 | 2970 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
2971 PyDoc_STRVAR(gethostname_doc, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2972 "gethostname() -> string\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2973 \n\ |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
2974 Return the current host name."); |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2975 |
| 926 | 2976 |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2977 /* Python interface to gethostbyname(name). */ |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2978 |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2979 /*ARGSUSED*/ |
| 1970 | 2980 static PyObject * |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
2981 socket_gethostbyname(PyObject *self, PyObject *args) |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2982 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2983 char *name; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2984 sock_addr_t addrbuf; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2985 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2986 if (!PyArg_ParseTuple(args, "s:gethostbyname", &name)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2987 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2988 if (setipaddr(name, SAS2SA(&addrbuf), sizeof(addrbuf), AF_INET) < 0) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2989 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
2990 return makeipaddr(SAS2SA(&addrbuf), sizeof(struct sockaddr_in)); |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2991 } |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2992 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
2993 PyDoc_STRVAR(gethostbyname_doc, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2994 "gethostbyname(host) -> address\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2995 \n\ |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
2996 Return the IP address (a string of the form '255.255.255.255') for a host."); |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2997 |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2998 |
|
8821
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
2999 /* Convenience function common to gethostbyname_ex and gethostbyaddr */ |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3000 |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3001 static PyObject * |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3002 gethost_common(struct hostent *h, struct sockaddr *addr, int alen, int af) |
|
8821
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3003 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3004 char **pch; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3005 PyObject *rtn_tuple = (PyObject *)NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3006 PyObject *name_list = (PyObject *)NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3007 PyObject *addr_list = (PyObject *)NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3008 PyObject *tmp; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3009 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3010 if (h == NULL) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3011 /* Let's get real error message to return */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3012 set_herror(h_errno); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3013 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3014 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3015 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3016 if (h->h_addrtype != af) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3017 /* Let's get real error message to return */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3018 PyErr_SetString(socket_error, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3019 (char *)strerror(EAFNOSUPPORT)); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3020 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3021 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3022 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3023 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3024 switch (af) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3025 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3026 case AF_INET: |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3027 if (alen < sizeof(struct sockaddr_in)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3028 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3029 break; |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
3030 |
|
21128
15ff504632ed
Remove INET6 define. Use ENABLE_IPV6 instead.
Martin v. Löwis <martin@v.loewis.de>
parents:
21094
diff
changeset
|
3031 #ifdef ENABLE_IPV6 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3032 case AF_INET6: |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3033 if (alen < sizeof(struct sockaddr_in6)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3034 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3035 break; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3036 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3037 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3038 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3039 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3040 if ((name_list = PyList_New(0)) == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3041 goto err; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3042 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3043 if ((addr_list = PyList_New(0)) == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3044 goto err; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3045 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3046 /* SF #1511317: h_aliases can be NULL */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3047 if (h->h_aliases) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3048 for (pch = h->h_aliases; *pch != NULL; pch++) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3049 int status; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3050 tmp = PyUnicode_FromString(*pch); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3051 if (tmp == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3052 goto err; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3053 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3054 status = PyList_Append(name_list, tmp); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3055 Py_DECREF(tmp); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3056 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3057 if (status) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3058 goto err; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3059 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3060 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3061 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3062 for (pch = h->h_addr_list; *pch != NULL; pch++) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3063 int status; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3064 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3065 switch (af) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3066 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3067 case AF_INET: |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3068 { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3069 struct sockaddr_in sin; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3070 memset(&sin, 0, sizeof(sin)); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3071 sin.sin_family = af; |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3072 #ifdef HAVE_SOCKADDR_SA_LEN |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3073 sin.sin_len = sizeof(sin); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3074 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3075 memcpy(&sin.sin_addr, *pch, sizeof(sin.sin_addr)); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3076 tmp = makeipaddr((struct sockaddr *)&sin, sizeof(sin)); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3077 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3078 if (pch == h->h_addr_list && alen >= sizeof(sin)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3079 memcpy((char *) addr, &sin, sizeof(sin)); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3080 break; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3081 } |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
3082 |
|
21128
15ff504632ed
Remove INET6 define. Use ENABLE_IPV6 instead.
Martin v. Löwis <martin@v.loewis.de>
parents:
21094
diff
changeset
|
3083 #ifdef ENABLE_IPV6 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3084 case AF_INET6: |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3085 { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3086 struct sockaddr_in6 sin6; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3087 memset(&sin6, 0, sizeof(sin6)); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3088 sin6.sin6_family = af; |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3089 #ifdef HAVE_SOCKADDR_SA_LEN |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3090 sin6.sin6_len = sizeof(sin6); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3091 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3092 memcpy(&sin6.sin6_addr, *pch, sizeof(sin6.sin6_addr)); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3093 tmp = makeipaddr((struct sockaddr *)&sin6, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3094 sizeof(sin6)); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3095 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3096 if (pch == h->h_addr_list && alen >= sizeof(sin6)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3097 memcpy((char *) addr, &sin6, sizeof(sin6)); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3098 break; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3099 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3100 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3101 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3102 default: /* can't happen */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3103 PyErr_SetString(socket_error, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3104 "unsupported address family"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3105 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3106 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3107 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3108 if (tmp == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3109 goto err; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3110 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3111 status = PyList_Append(addr_list, tmp); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3112 Py_DECREF(tmp); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3113 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3114 if (status) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3115 goto err; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3116 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3117 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3118 rtn_tuple = Py_BuildValue("sOO", h->h_name, name_list, addr_list); |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
3119 |
|
8821
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3120 err: |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3121 Py_XDECREF(name_list); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3122 Py_XDECREF(addr_list); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3123 return rtn_tuple; |
|
8821
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3124 } |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3125 |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3126 |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3127 /* Python interface to gethostbyname_ex(name). */ |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3128 |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3129 /*ARGSUSED*/ |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3130 static PyObject * |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
3131 socket_gethostbyname_ex(PyObject *self, PyObject *args) |
|
8821
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3132 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3133 char *name; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3134 struct hostent *h; |
|
28949
ac487a7f7f2c
Patch #708495: Port more stuff to OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
28925
diff
changeset
|
3135 #ifdef ENABLE_IPV6 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3136 struct sockaddr_storage addr; |
|
28949
ac487a7f7f2c
Patch #708495: Port more stuff to OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
28925
diff
changeset
|
3137 #else |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3138 struct sockaddr_in addr; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3139 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3140 struct sockaddr *sa; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3141 PyObject *ret; |
|
8821
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3142 #ifdef HAVE_GETHOSTBYNAME_R |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3143 struct hostent hp_allocated; |
|
10453
5b54fa775e55
Vladimir Marangozov implements the AIX 3-arg gethostbyname_r code.
Guido van Rossum <guido@python.org>
parents:
10442
diff
changeset
|
3144 #ifdef HAVE_GETHOSTBYNAME_R_3_ARG |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3145 struct hostent_data data; |
|
10453
5b54fa775e55
Vladimir Marangozov implements the AIX 3-arg gethostbyname_r code.
Guido van Rossum <guido@python.org>
parents:
10442
diff
changeset
|
3146 #else |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3147 char buf[16384]; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3148 int buf_len = (sizeof buf) - 1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3149 int errnop; |
|
10453
5b54fa775e55
Vladimir Marangozov implements the AIX 3-arg gethostbyname_r code.
Guido van Rossum <guido@python.org>
parents:
10442
diff
changeset
|
3150 #endif |
|
5b54fa775e55
Vladimir Marangozov implements the AIX 3-arg gethostbyname_r code.
Guido van Rossum <guido@python.org>
parents:
10442
diff
changeset
|
3151 #if defined(HAVE_GETHOSTBYNAME_R_3_ARG) || defined(HAVE_GETHOSTBYNAME_R_6_ARG) |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3152 int result; |
|
10401
f81db738abd9
Patch by Rob Riggs for Linux -- glibc2 has a different argument
Guido van Rossum <guido@python.org>
parents:
9679
diff
changeset
|
3153 #endif |
|
8821
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3154 #endif /* HAVE_GETHOSTBYNAME_R */ |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3155 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3156 if (!PyArg_ParseTuple(args, "s:gethostbyname_ex", &name)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3157 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3158 if (setipaddr(name, (struct sockaddr *)&addr, sizeof(addr), AF_INET) < 0) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3159 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3160 Py_BEGIN_ALLOW_THREADS |
|
8821
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3161 #ifdef HAVE_GETHOSTBYNAME_R |
|
10453
5b54fa775e55
Vladimir Marangozov implements the AIX 3-arg gethostbyname_r code.
Guido van Rossum <guido@python.org>
parents:
10442
diff
changeset
|
3162 #if defined(HAVE_GETHOSTBYNAME_R_6_ARG) |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3163 result = gethostbyname_r(name, &hp_allocated, buf, buf_len, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3164 &h, &errnop); |
|
10453
5b54fa775e55
Vladimir Marangozov implements the AIX 3-arg gethostbyname_r code.
Guido van Rossum <guido@python.org>
parents:
10442
diff
changeset
|
3165 #elif defined(HAVE_GETHOSTBYNAME_R_5_ARG) |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3166 h = gethostbyname_r(name, &hp_allocated, buf, buf_len, &errnop); |
|
10453
5b54fa775e55
Vladimir Marangozov implements the AIX 3-arg gethostbyname_r code.
Guido van Rossum <guido@python.org>
parents:
10442
diff
changeset
|
3167 #else /* HAVE_GETHOSTBYNAME_R_3_ARG */ |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3168 memset((void *) &data, '\0', sizeof(data)); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3169 result = gethostbyname_r(name, &hp_allocated, &data); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3170 h = (result != 0) ? NULL : &hp_allocated; |
|
10401
f81db738abd9
Patch by Rob Riggs for Linux -- glibc2 has a different argument
Guido van Rossum <guido@python.org>
parents:
9679
diff
changeset
|
3171 #endif |
|
8821
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3172 #else /* not HAVE_GETHOSTBYNAME_R */ |
|
10442
9184c9e108f9
Clean up pass for the previous patches.
Guido van Rossum <guido@python.org>
parents:
10441
diff
changeset
|
3173 #ifdef USE_GETHOSTBYNAME_LOCK |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3174 PyThread_acquire_lock(netdb_lock, 1); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3175 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3176 h = gethostbyname(name); |
|
10441
9ba5dffccb1b
Jonathan Giddy writes:
Guido van Rossum <guido@python.org>
parents:
10401
diff
changeset
|
3177 #endif /* HAVE_GETHOSTBYNAME_R */ |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3178 Py_END_ALLOW_THREADS |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3179 /* Some C libraries would require addr.__ss_family instead of |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3180 addr.ss_family. |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3181 Therefore, we cast the sockaddr_storage into sockaddr to |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3182 access sa_family. */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3183 sa = (struct sockaddr*)&addr; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3184 ret = gethost_common(h, (struct sockaddr *)&addr, sizeof(addr), |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3185 sa->sa_family); |
|
10442
9184c9e108f9
Clean up pass for the previous patches.
Guido van Rossum <guido@python.org>
parents:
10441
diff
changeset
|
3186 #ifdef USE_GETHOSTBYNAME_LOCK |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3187 PyThread_release_lock(netdb_lock); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3188 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3189 return ret; |
|
8821
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3190 } |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3191 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
3192 PyDoc_STRVAR(ghbn_ex_doc, |
|
8821
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3193 "gethostbyname_ex(host) -> (name, aliaslist, addresslist)\n\ |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3194 \n\ |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3195 Return the true host name, a list of aliases, and a list of IP addresses,\n\ |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
3196 for a host. The host argument is a string giving a host name or IP number."); |
|
8821
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3197 |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3198 |
|
2055
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
3199 /* Python interface to gethostbyaddr(IP). */ |
|
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
3200 |
|
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
3201 /*ARGSUSED*/ |
|
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
3202 static PyObject * |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
3203 socket_gethostbyaddr(PyObject *self, PyObject *args) |
|
2055
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
3204 { |
|
21128
15ff504632ed
Remove INET6 define. Use ENABLE_IPV6 instead.
Martin v. Löwis <martin@v.loewis.de>
parents:
21094
diff
changeset
|
3205 #ifdef ENABLE_IPV6 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3206 struct sockaddr_storage addr; |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3207 #else |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3208 struct sockaddr_in addr; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3209 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3210 struct sockaddr *sa = (struct sockaddr *)&addr; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3211 char *ip_num; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3212 struct hostent *h; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3213 PyObject *ret; |
|
7942
ee2aaa2f722a
Threading speedup patches by Christopher Lindblad <cjl@infoseek.com>.
Guido van Rossum <guido@python.org>
parents:
6718
diff
changeset
|
3214 #ifdef HAVE_GETHOSTBYNAME_R |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3215 struct hostent hp_allocated; |
|
10453
5b54fa775e55
Vladimir Marangozov implements the AIX 3-arg gethostbyname_r code.
Guido van Rossum <guido@python.org>
parents:
10442
diff
changeset
|
3216 #ifdef HAVE_GETHOSTBYNAME_R_3_ARG |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3217 struct hostent_data data; |
|
10453
5b54fa775e55
Vladimir Marangozov implements the AIX 3-arg gethostbyname_r code.
Guido van Rossum <guido@python.org>
parents:
10442
diff
changeset
|
3218 #else |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3219 /* glibcs up to 2.10 assume that the buf argument to |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3220 gethostbyaddr_r is 8-byte aligned, which at least llvm-gcc |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3221 does not ensure. The attribute below instructs the compiler |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3222 to maintain this alignment. */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3223 char buf[16384] Py_ALIGNED(8); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3224 int buf_len = (sizeof buf) - 1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3225 int errnop; |
|
10453
5b54fa775e55
Vladimir Marangozov implements the AIX 3-arg gethostbyname_r code.
Guido van Rossum <guido@python.org>
parents:
10442
diff
changeset
|
3226 #endif |
|
5b54fa775e55
Vladimir Marangozov implements the AIX 3-arg gethostbyname_r code.
Guido van Rossum <guido@python.org>
parents:
10442
diff
changeset
|
3227 #if defined(HAVE_GETHOSTBYNAME_R_3_ARG) || defined(HAVE_GETHOSTBYNAME_R_6_ARG) |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3228 int result; |
|
10401
f81db738abd9
Patch by Rob Riggs for Linux -- glibc2 has a different argument
Guido van Rossum <guido@python.org>
parents:
9679
diff
changeset
|
3229 #endif |
|
7942
ee2aaa2f722a
Threading speedup patches by Christopher Lindblad <cjl@infoseek.com>.
Guido van Rossum <guido@python.org>
parents:
6718
diff
changeset
|
3230 #endif /* HAVE_GETHOSTBYNAME_R */ |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3231 char *ap; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3232 int al; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3233 int af; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3234 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3235 if (!PyArg_ParseTuple(args, "s:gethostbyaddr", &ip_num)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3236 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3237 af = AF_UNSPEC; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3238 if (setipaddr(ip_num, sa, sizeof(addr), af) < 0) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3239 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3240 af = sa->sa_family; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3241 ap = NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3242 al = 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3243 switch (af) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3244 case AF_INET: |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3245 ap = (char *)&((struct sockaddr_in *)sa)->sin_addr; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3246 al = sizeof(((struct sockaddr_in *)sa)->sin_addr); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3247 break; |
|
21128
15ff504632ed
Remove INET6 define. Use ENABLE_IPV6 instead.
Martin v. Löwis <martin@v.loewis.de>
parents:
21094
diff
changeset
|
3248 #ifdef ENABLE_IPV6 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3249 case AF_INET6: |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3250 ap = (char *)&((struct sockaddr_in6 *)sa)->sin6_addr; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3251 al = sizeof(((struct sockaddr_in6 *)sa)->sin6_addr); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3252 break; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3253 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3254 default: |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3255 PyErr_SetString(socket_error, "unsupported address family"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3256 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3257 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3258 Py_BEGIN_ALLOW_THREADS |
|
7942
ee2aaa2f722a
Threading speedup patches by Christopher Lindblad <cjl@infoseek.com>.
Guido van Rossum <guido@python.org>
parents:
6718
diff
changeset
|
3259 #ifdef HAVE_GETHOSTBYNAME_R |
|
10453
5b54fa775e55
Vladimir Marangozov implements the AIX 3-arg gethostbyname_r code.
Guido van Rossum <guido@python.org>
parents:
10442
diff
changeset
|
3260 #if defined(HAVE_GETHOSTBYNAME_R_6_ARG) |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3261 result = gethostbyaddr_r(ap, al, af, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3262 &hp_allocated, buf, buf_len, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3263 &h, &errnop); |
|
10453
5b54fa775e55
Vladimir Marangozov implements the AIX 3-arg gethostbyname_r code.
Guido van Rossum <guido@python.org>
parents:
10442
diff
changeset
|
3264 #elif defined(HAVE_GETHOSTBYNAME_R_5_ARG) |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3265 h = gethostbyaddr_r(ap, al, af, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3266 &hp_allocated, buf, buf_len, &errnop); |
|
10453
5b54fa775e55
Vladimir Marangozov implements the AIX 3-arg gethostbyname_r code.
Guido van Rossum <guido@python.org>
parents:
10442
diff
changeset
|
3267 #else /* HAVE_GETHOSTBYNAME_R_3_ARG */ |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3268 memset((void *) &data, '\0', sizeof(data)); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3269 result = gethostbyaddr_r(ap, al, af, &hp_allocated, &data); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3270 h = (result != 0) ? NULL : &hp_allocated; |
|
10401
f81db738abd9
Patch by Rob Riggs for Linux -- glibc2 has a different argument
Guido van Rossum <guido@python.org>
parents:
9679
diff
changeset
|
3271 #endif |
|
7942
ee2aaa2f722a
Threading speedup patches by Christopher Lindblad <cjl@infoseek.com>.
Guido van Rossum <guido@python.org>
parents:
6718
diff
changeset
|
3272 #else /* not HAVE_GETHOSTBYNAME_R */ |
|
10442
9184c9e108f9
Clean up pass for the previous patches.
Guido van Rossum <guido@python.org>
parents:
10441
diff
changeset
|
3273 #ifdef USE_GETHOSTBYNAME_LOCK |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3274 PyThread_acquire_lock(netdb_lock, 1); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3275 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3276 h = gethostbyaddr(ap, al, af); |
|
10442
9184c9e108f9
Clean up pass for the previous patches.
Guido van Rossum <guido@python.org>
parents:
10441
diff
changeset
|
3277 #endif /* HAVE_GETHOSTBYNAME_R */ |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3278 Py_END_ALLOW_THREADS |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3279 ret = gethost_common(h, (struct sockaddr *)&addr, sizeof(addr), af); |
|
10442
9184c9e108f9
Clean up pass for the previous patches.
Guido van Rossum <guido@python.org>
parents:
10441
diff
changeset
|
3280 #ifdef USE_GETHOSTBYNAME_LOCK |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3281 PyThread_release_lock(netdb_lock); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3282 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3283 return ret; |
|
2055
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
3284 } |
|
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
3285 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
3286 PyDoc_STRVAR(gethostbyaddr_doc, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
3287 "gethostbyaddr(host) -> (name, aliaslist, addresslist)\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
3288 \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
3289 Return the true host name, a list of aliases, and a list of IP addresses,\n\ |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
3290 for a host. The host argument is a string giving a host name or IP number."); |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
3291 |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
3292 |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
3293 /* Python interface to getservbyname(name). |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
3294 This only returns the port number, since the other info is already |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
3295 known or not useful (like the list of aliases). */ |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
3296 |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
3297 /*ARGSUSED*/ |
| 1970 | 3298 static PyObject * |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
3299 socket_getservbyname(PyObject *self, PyObject *args) |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
3300 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3301 char *name, *proto=NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3302 struct servent *sp; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3303 if (!PyArg_ParseTuple(args, "s|s:getservbyname", &name, &proto)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3304 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3305 Py_BEGIN_ALLOW_THREADS |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3306 sp = getservbyname(name, proto); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3307 Py_END_ALLOW_THREADS |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3308 if (sp == NULL) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3309 PyErr_SetString(socket_error, "service/proto not found"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3310 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3311 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3312 return PyLong_FromLong((long) ntohs(sp->s_port)); |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
3313 } |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
3314 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
3315 PyDoc_STRVAR(getservbyname_doc, |
|
32429
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32213
diff
changeset
|
3316 "getservbyname(servicename[, protocolname]) -> integer\n\ |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
3317 \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
3318 Return a port number from a service name and protocol name.\n\ |
|
32429
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32213
diff
changeset
|
3319 The optional protocol name, if given, should be 'tcp' or 'udp',\n\ |
|
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32213
diff
changeset
|
3320 otherwise any protocol will match."); |
|
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32213
diff
changeset
|
3321 |
|
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32213
diff
changeset
|
3322 |
|
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32213
diff
changeset
|
3323 /* Python interface to getservbyport(port). |
|
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32213
diff
changeset
|
3324 This only returns the service name, since the other info is already |
|
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32213
diff
changeset
|
3325 known or not useful (like the list of aliases). */ |
|
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32213
diff
changeset
|
3326 |
|
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32213
diff
changeset
|
3327 /*ARGSUSED*/ |
|
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32213
diff
changeset
|
3328 static PyObject * |
|
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32213
diff
changeset
|
3329 socket_getservbyport(PyObject *self, PyObject *args) |
|
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32213
diff
changeset
|
3330 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3331 int port; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3332 char *proto=NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3333 struct servent *sp; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3334 if (!PyArg_ParseTuple(args, "i|s:getservbyport", &port, &proto)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3335 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3336 if (port < 0 || port > 0xffff) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3337 PyErr_SetString( |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3338 PyExc_OverflowError, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3339 "getservbyport: port must be 0-65535."); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3340 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3341 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3342 Py_BEGIN_ALLOW_THREADS |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3343 sp = getservbyport(htons((short)port), proto); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3344 Py_END_ALLOW_THREADS |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3345 if (sp == NULL) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3346 PyErr_SetString(socket_error, "port/proto not found"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3347 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3348 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3349 return PyUnicode_FromString(sp->s_name); |
|
32429
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32213
diff
changeset
|
3350 } |
|
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32213
diff
changeset
|
3351 |
|
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32213
diff
changeset
|
3352 PyDoc_STRVAR(getservbyport_doc, |
|
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32213
diff
changeset
|
3353 "getservbyport(port[, protocolname]) -> string\n\ |
|
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32213
diff
changeset
|
3354 \n\ |
|
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32213
diff
changeset
|
3355 Return the service name from a port number and protocol name.\n\ |
|
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32213
diff
changeset
|
3356 The optional protocol name, if given, should be 'tcp' or 'udp',\n\ |
|
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32213
diff
changeset
|
3357 otherwise any protocol will match."); |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
3358 |
|
4782
2426a220664b
Added getprotobyname() interface.
Guido van Rossum <guido@python.org>
parents:
4651
diff
changeset
|
3359 /* Python interface to getprotobyname(name). |
|
2426a220664b
Added getprotobyname() interface.
Guido van Rossum <guido@python.org>
parents:
4651
diff
changeset
|
3360 This only returns the protocol number, since the other info is |
|
2426a220664b
Added getprotobyname() interface.
Guido van Rossum <guido@python.org>
parents:
4651
diff
changeset
|
3361 already known or not useful (like the list of aliases). */ |
|
2426a220664b
Added getprotobyname() interface.
Guido van Rossum <guido@python.org>
parents:
4651
diff
changeset
|
3362 |
|
2426a220664b
Added getprotobyname() interface.
Guido van Rossum <guido@python.org>
parents:
4651
diff
changeset
|
3363 /*ARGSUSED*/ |
|
2426a220664b
Added getprotobyname() interface.
Guido van Rossum <guido@python.org>
parents:
4651
diff
changeset
|
3364 static PyObject * |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
3365 socket_getprotobyname(PyObject *self, PyObject *args) |
|
4782
2426a220664b
Added getprotobyname() interface.
Guido van Rossum <guido@python.org>
parents:
4651
diff
changeset
|
3366 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3367 char *name; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3368 struct protoent *sp; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3369 if (!PyArg_ParseTuple(args, "s:getprotobyname", &name)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3370 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3371 Py_BEGIN_ALLOW_THREADS |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3372 sp = getprotobyname(name); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3373 Py_END_ALLOW_THREADS |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3374 if (sp == NULL) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3375 PyErr_SetString(socket_error, "protocol not found"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3376 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3377 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3378 return PyLong_FromLong((long) sp->p_proto); |
|
4782
2426a220664b
Added getprotobyname() interface.
Guido van Rossum <guido@python.org>
parents:
4651
diff
changeset
|
3379 } |
|
2426a220664b
Added getprotobyname() interface.
Guido van Rossum <guido@python.org>
parents:
4651
diff
changeset
|
3380 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
3381 PyDoc_STRVAR(getprotobyname_doc, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
3382 "getprotobyname(name) -> integer\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
3383 \n\ |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
3384 Return the protocol number for the named protocol. (Rarely used.)"); |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
3385 |
|
4782
2426a220664b
Added getprotobyname() interface.
Guido van Rossum <guido@python.org>
parents:
4651
diff
changeset
|
3386 |
|
43881
70cfc7b504c2
This is roughly socket2.diff from issue 1378, with a few changes applied
Guido van Rossum <guido@python.org>
parents:
43877
diff
changeset
|
3387 #ifndef NO_DUP |
|
70cfc7b504c2
This is roughly socket2.diff from issue 1378, with a few changes applied
Guido van Rossum <guido@python.org>
parents:
43877
diff
changeset
|
3388 /* dup() function for socket fds */ |
|
70cfc7b504c2
This is roughly socket2.diff from issue 1378, with a few changes applied
Guido van Rossum <guido@python.org>
parents:
43877
diff
changeset
|
3389 |
|
70cfc7b504c2
This is roughly socket2.diff from issue 1378, with a few changes applied
Guido van Rossum <guido@python.org>
parents:
43877
diff
changeset
|
3390 static PyObject * |
|
70cfc7b504c2
This is roughly socket2.diff from issue 1378, with a few changes applied
Guido van Rossum <guido@python.org>
parents:
43877
diff
changeset
|
3391 socket_dup(PyObject *self, PyObject *fdobj) |
|
70cfc7b504c2
This is roughly socket2.diff from issue 1378, with a few changes applied
Guido van Rossum <guido@python.org>
parents:
43877
diff
changeset
|
3392 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3393 SOCKET_T fd, newfd; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3394 PyObject *newfdobj; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3395 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3396 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3397 fd = PyLong_AsSocket_t(fdobj); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3398 if (fd == (SOCKET_T)(-1) && PyErr_Occurred()) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3399 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3400 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3401 newfd = dup_socket(fd); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3402 if (newfd == INVALID_SOCKET) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3403 return set_error(); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3404 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3405 newfdobj = PyLong_FromSocket_t(newfd); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3406 if (newfdobj == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3407 SOCKETCLOSE(newfd); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3408 return newfdobj; |
|
43881
70cfc7b504c2
This is roughly socket2.diff from issue 1378, with a few changes applied
Guido van Rossum <guido@python.org>
parents:
43877
diff
changeset
|
3409 } |
|
70cfc7b504c2
This is roughly socket2.diff from issue 1378, with a few changes applied
Guido van Rossum <guido@python.org>
parents:
43877
diff
changeset
|
3410 |
|
70cfc7b504c2
This is roughly socket2.diff from issue 1378, with a few changes applied
Guido van Rossum <guido@python.org>
parents:
43877
diff
changeset
|
3411 PyDoc_STRVAR(dup_doc, |
|
70cfc7b504c2
This is roughly socket2.diff from issue 1378, with a few changes applied
Guido van Rossum <guido@python.org>
parents:
43877
diff
changeset
|
3412 "dup(integer) -> integer\n\ |
|
70cfc7b504c2
This is roughly socket2.diff from issue 1378, with a few changes applied
Guido van Rossum <guido@python.org>
parents:
43877
diff
changeset
|
3413 \n\ |
|
70cfc7b504c2
This is roughly socket2.diff from issue 1378, with a few changes applied
Guido van Rossum <guido@python.org>
parents:
43877
diff
changeset
|
3414 Duplicate an integer socket file descriptor. This is like os.dup(), but for\n\ |
|
70cfc7b504c2
This is roughly socket2.diff from issue 1378, with a few changes applied
Guido van Rossum <guido@python.org>
parents:
43877
diff
changeset
|
3415 sockets; on some platforms os.dup() won't work for socket file descriptors."); |
|
70cfc7b504c2
This is roughly socket2.diff from issue 1378, with a few changes applied
Guido van Rossum <guido@python.org>
parents:
43877
diff
changeset
|
3416 #endif |
|
70cfc7b504c2
This is roughly socket2.diff from issue 1378, with a few changes applied
Guido van Rossum <guido@python.org>
parents:
43877
diff
changeset
|
3417 |
|
70cfc7b504c2
This is roughly socket2.diff from issue 1378, with a few changes applied
Guido van Rossum <guido@python.org>
parents:
43877
diff
changeset
|
3418 |
|
33063
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3419 #ifdef HAVE_SOCKETPAIR |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3420 /* Create a pair of sockets using the socketpair() function. |
|
33239
fb9869044bba
Updated the socketpair() docstring and documentation to explain that the
Dave Cole <djc@object-craft.com.au>
parents:
33238
diff
changeset
|
3421 Arguments as for socket() except the default family is AF_UNIX if |
|
33280
826ad896a7a5
Patch #1015012. Improve markup and punctuation in libsocket.tex
Dave Cole <djc@object-craft.com.au>
parents:
33260
diff
changeset
|
3422 defined on the platform; otherwise, the default is AF_INET. */ |
|
33063
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3423 |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3424 /*ARGSUSED*/ |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3425 static PyObject * |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3426 socket_socketpair(PyObject *self, PyObject *args) |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3427 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3428 PySocketSockObject *s0 = NULL, *s1 = NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3429 SOCKET_T sv[2]; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3430 int family, type = SOCK_STREAM, proto = 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3431 PyObject *res = NULL; |
|
33063
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3432 |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3433 #if defined(AF_UNIX) |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3434 family = AF_UNIX; |
|
33063
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3435 #else |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3436 family = AF_INET; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3437 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3438 if (!PyArg_ParseTuple(args, "|iii:socketpair", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3439 &family, &type, &proto)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3440 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3441 /* Create a pair of socket fds */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3442 if (socketpair(family, type, proto, sv) < 0) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3443 return set_error(); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3444 s0 = new_sockobject(sv[0], family, type, proto); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3445 if (s0 == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3446 goto finally; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3447 s1 = new_sockobject(sv[1], family, type, proto); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3448 if (s1 == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3449 goto finally; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3450 res = PyTuple_Pack(2, s0, s1); |
|
33063
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3451 |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3452 finally: |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3453 if (res == NULL) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3454 if (s0 == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3455 SOCKETCLOSE(sv[0]); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3456 if (s1 == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3457 SOCKETCLOSE(sv[1]); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3458 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3459 Py_XDECREF(s0); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3460 Py_XDECREF(s1); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3461 return res; |
|
33063
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3462 } |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3463 |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3464 PyDoc_STRVAR(socketpair_doc, |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3465 "socketpair([family[, type[, proto]]]) -> (socket object, socket object)\n\ |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3466 \n\ |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3467 Create a pair of socket objects from the sockets returned by the platform\n\ |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3468 socketpair() function.\n\ |
|
33239
fb9869044bba
Updated the socketpair() docstring and documentation to explain that the
Dave Cole <djc@object-craft.com.au>
parents:
33238
diff
changeset
|
3469 The arguments are the same as for socket() except the default family is\n\ |
|
33280
826ad896a7a5
Patch #1015012. Improve markup and punctuation in libsocket.tex
Dave Cole <djc@object-craft.com.au>
parents:
33260
diff
changeset
|
3470 AF_UNIX if defined on the platform; otherwise, the default is AF_INET."); |
|
33063
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3471 |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3472 #endif /* HAVE_SOCKETPAIR */ |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3473 |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3474 |
|
3673
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
3475 static PyObject * |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
3476 socket_ntohs(PyObject *self, PyObject *args) |
|
3673
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
3477 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3478 int x1, x2; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3479 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3480 if (!PyArg_ParseTuple(args, "i:ntohs", &x1)) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3481 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3482 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3483 if (x1 < 0) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3484 PyErr_SetString(PyExc_OverflowError, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3485 "can't convert negative number to unsigned long"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3486 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3487 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3488 x2 = (unsigned int)ntohs((unsigned short)x1); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3489 return PyLong_FromLong(x2); |
|
3673
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
3490 } |
|
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
3491 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
3492 PyDoc_STRVAR(ntohs_doc, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
3493 "ntohs(integer) -> integer\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
3494 \n\ |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
3495 Convert a 16-bit integer from network to host byte order."); |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
3496 |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
3497 |
|
3673
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
3498 static PyObject * |
|
24375
89ce62126664
Extended socket.htonl and ntohl to accept longs.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24363
diff
changeset
|
3499 socket_ntohl(PyObject *self, PyObject *arg) |
|
3673
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
3500 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3501 unsigned long x; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3502 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3503 if (PyLong_Check(arg)) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3504 x = PyLong_AsUnsignedLong(arg); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3505 if (x == (unsigned long) -1 && PyErr_Occurred()) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3506 return NULL; |
|
24375
89ce62126664
Extended socket.htonl and ntohl to accept longs.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24363
diff
changeset
|
3507 #if SIZEOF_LONG > 4 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3508 { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3509 unsigned long y; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3510 /* only want the trailing 32 bits */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3511 y = x & 0xFFFFFFFFUL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3512 if (y ^ x) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3513 return PyErr_Format(PyExc_OverflowError, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3514 "long int larger than 32 bits"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3515 x = y; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3516 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3517 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3518 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3519 else |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3520 return PyErr_Format(PyExc_TypeError, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3521 "expected int/long, %s found", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3522 Py_TYPE(arg)->tp_name); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3523 if (x == (unsigned long) -1 && PyErr_Occurred()) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3524 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3525 return PyLong_FromUnsignedLong(ntohl(x)); |
|
3673
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
3526 } |
|
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
3527 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
3528 PyDoc_STRVAR(ntohl_doc, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
3529 "ntohl(integer) -> integer\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
3530 \n\ |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
3531 Convert a 32-bit integer from network to host byte order."); |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
3532 |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
3533 |
|
3673
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
3534 static PyObject * |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
3535 socket_htons(PyObject *self, PyObject *args) |
|
3673
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
3536 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3537 int x1, x2; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3538 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3539 if (!PyArg_ParseTuple(args, "i:htons", &x1)) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3540 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3541 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3542 if (x1 < 0) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3543 PyErr_SetString(PyExc_OverflowError, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3544 "can't convert negative number to unsigned long"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3545 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3546 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3547 x2 = (unsigned int)htons((unsigned short)x1); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3548 return PyLong_FromLong(x2); |
|
3673
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
3549 } |
|
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
3550 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
3551 PyDoc_STRVAR(htons_doc, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
3552 "htons(integer) -> integer\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
3553 \n\ |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
3554 Convert a 16-bit integer from host to network byte order."); |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
3555 |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
3556 |
|
3673
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
3557 static PyObject * |
|
24375
89ce62126664
Extended socket.htonl and ntohl to accept longs.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24363
diff
changeset
|
3558 socket_htonl(PyObject *self, PyObject *arg) |
|
3673
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
3559 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3560 unsigned long x; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3561 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3562 if (PyLong_Check(arg)) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3563 x = PyLong_AsUnsignedLong(arg); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3564 if (x == (unsigned long) -1 && PyErr_Occurred()) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3565 return NULL; |
|
24375
89ce62126664
Extended socket.htonl and ntohl to accept longs.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24363
diff
changeset
|
3566 #if SIZEOF_LONG > 4 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3567 { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3568 unsigned long y; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3569 /* only want the trailing 32 bits */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3570 y = x & 0xFFFFFFFFUL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3571 if (y ^ x) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3572 return PyErr_Format(PyExc_OverflowError, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3573 "long int larger than 32 bits"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3574 x = y; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3575 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3576 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3577 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3578 else |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3579 return PyErr_Format(PyExc_TypeError, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3580 "expected int/long, %s found", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3581 Py_TYPE(arg)->tp_name); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3582 return PyLong_FromUnsignedLong(htonl((unsigned long)x)); |
|
3673
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
3583 } |
|
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
3584 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
3585 PyDoc_STRVAR(htonl_doc, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
3586 "htonl(integer) -> integer\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
3587 \n\ |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
3588 Convert a 32-bit integer from host to network byte order."); |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
3589 |
|
23723
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
3590 /* socket.inet_aton() and socket.inet_ntoa() functions. */ |
|
11217
f406e78ec10b
Patch by Ben Gertzfield to add inet_aton() and inet_ntoa() calls.
Guido van Rossum <guido@python.org>
parents:
11182
diff
changeset
|
3591 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
3592 PyDoc_STRVAR(inet_aton_doc, |
|
41809
8e062e572ea4
Sockets facelift. APIs that could return binary data (e.g. aton() and
Guido van Rossum <guido@python.org>
parents:
41770
diff
changeset
|
3593 "inet_aton(string) -> bytes giving packed 32-bit IP representation\n\ |
|
11217
f406e78ec10b
Patch by Ben Gertzfield to add inet_aton() and inet_ntoa() calls.
Guido van Rossum <guido@python.org>
parents:
11182
diff
changeset
|
3594 \n\ |
|
11219
2d7331f4dfe3
Port inet_ntoa and inet_aton to Windows:
Guido van Rossum <guido@python.org>
parents:
11217
diff
changeset
|
3595 Convert an IP address in string format (123.45.67.89) to the 32-bit packed\n\ |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
3596 binary format used in low-level network functions."); |
|
11217
f406e78ec10b
Patch by Ben Gertzfield to add inet_aton() and inet_ntoa() calls.
Guido van Rossum <guido@python.org>
parents:
11182
diff
changeset
|
3597 |
|
f406e78ec10b
Patch by Ben Gertzfield to add inet_aton() and inet_ntoa() calls.
Guido van Rossum <guido@python.org>
parents:
11182
diff
changeset
|
3598 static PyObject* |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
3599 socket_inet_aton(PyObject *self, PyObject *args) |
|
11217
f406e78ec10b
Patch by Ben Gertzfield to add inet_aton() and inet_ntoa() calls.
Guido van Rossum <guido@python.org>
parents:
11182
diff
changeset
|
3600 { |
|
11268
3fe8d13328c8
It appears that inet_aton() doesn't really exist except in libresolv;
Guido van Rossum <guido@python.org>
parents:
11219
diff
changeset
|
3601 #ifndef INADDR_NONE |
|
3fe8d13328c8
It appears that inet_aton() doesn't really exist except in libresolv;
Guido van Rossum <guido@python.org>
parents:
11219
diff
changeset
|
3602 #define INADDR_NONE (-1) |
|
3fe8d13328c8
It appears that inet_aton() doesn't really exist except in libresolv;
Guido van Rossum <guido@python.org>
parents:
11219
diff
changeset
|
3603 #endif |
|
27858
9453d8cdd01e
Ummm, try to get it right this time
Neal Norwitz <nnorwitz@gmail.com>
parents:
27857
diff
changeset
|
3604 #ifdef HAVE_INET_ATON |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3605 struct in_addr buf; |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
3606 #endif |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
3607 |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
3608 #if !defined(HAVE_INET_ATON) || defined(USE_INET_ATON_WEAKLINK) |
|
51579
648e07dd0825
Merged revisions 69364-69365,69409-69410,69413,69417,69435,69442,69447,69495,69519-69521 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
51384
diff
changeset
|
3609 #if (SIZEOF_INT != 4) |
|
648e07dd0825
Merged revisions 69364-69365,69409-69410,69413,69417,69435,69442,69447,69495,69519-69521 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
51384
diff
changeset
|
3610 #error "Not sure if in_addr_t exists and int is not 32-bits." |
|
648e07dd0825
Merged revisions 69364-69365,69409-69410,69413,69417,69435,69442,69447,69495,69519-69521 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
51384
diff
changeset
|
3611 #endif |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3612 /* Have to use inet_addr() instead */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3613 unsigned int packed_addr; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3614 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3615 char *ip_addr; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3616 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3617 if (!PyArg_ParseTuple(args, "s:inet_aton", &ip_addr)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3618 return NULL; |
|
27861
f8440bb8ede5
socket_inet_aton(): ip_addr was left undefined before use in the
Tim Peters <tim.peters@gmail.com>
parents:
27858
diff
changeset
|
3619 |
|
f8440bb8ede5
socket_inet_aton(): ip_addr was left undefined before use in the
Tim Peters <tim.peters@gmail.com>
parents:
27858
diff
changeset
|
3620 |
|
f8440bb8ede5
socket_inet_aton(): ip_addr was left undefined before use in the
Tim Peters <tim.peters@gmail.com>
parents:
27858
diff
changeset
|
3621 #ifdef HAVE_INET_ATON |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
3622 |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
3623 #ifdef USE_INET_ATON_WEAKLINK |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
3624 if (inet_aton != NULL) { |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
3625 #endif |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3626 if (inet_aton(ip_addr, &buf)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3627 return PyBytes_FromStringAndSize((char *)(&buf), |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3628 sizeof(buf)); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3629 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3630 PyErr_SetString(socket_error, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3631 "illegal IP address string passed to inet_aton"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3632 return NULL; |
|
27854
81afca747caa
Addressing SF bug #643005, implement socket.inet_aton() using
Guido van Rossum <guido@python.org>
parents:
27558
diff
changeset
|
3633 |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
3634 #ifdef USE_INET_ATON_WEAKLINK |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
3635 } else { |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
3636 #endif |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
3637 |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
3638 #endif |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
3639 |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
3640 #if !defined(HAVE_INET_ATON) || defined(USE_INET_ATON_WEAKLINK) |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
3641 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3642 /* special-case this address as inet_addr might return INADDR_NONE |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3643 * for this */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3644 if (strcmp(ip_addr, "255.255.255.255") == 0) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3645 packed_addr = 0xFFFFFFFF; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3646 } else { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3647 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3648 packed_addr = inet_addr(ip_addr); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3649 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3650 if (packed_addr == INADDR_NONE) { /* invalid address */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3651 PyErr_SetString(socket_error, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3652 "illegal IP address string passed to inet_aton"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3653 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3654 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3655 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3656 return PyBytes_FromStringAndSize((char *) &packed_addr, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3657 sizeof(packed_addr)); |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
3658 |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
3659 #ifdef USE_INET_ATON_WEAKLINK |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
3660 } |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
3661 #endif |
|
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
3662 |
|
27854
81afca747caa
Addressing SF bug #643005, implement socket.inet_aton() using
Guido van Rossum <guido@python.org>
parents:
27558
diff
changeset
|
3663 #endif |
|
11217
f406e78ec10b
Patch by Ben Gertzfield to add inet_aton() and inet_ntoa() calls.
Guido van Rossum <guido@python.org>
parents:
11182
diff
changeset
|
3664 } |
|
f406e78ec10b
Patch by Ben Gertzfield to add inet_aton() and inet_ntoa() calls.
Guido van Rossum <guido@python.org>
parents:
11182
diff
changeset
|
3665 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
3666 PyDoc_STRVAR(inet_ntoa_doc, |
| 11937 | 3667 "inet_ntoa(packed_ip) -> ip_address_string\n\ |
|
11217
f406e78ec10b
Patch by Ben Gertzfield to add inet_aton() and inet_ntoa() calls.
Guido van Rossum <guido@python.org>
parents:
11182
diff
changeset
|
3668 \n\ |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
3669 Convert an IP address from 32-bit packed binary format to string format"); |
|
11217
f406e78ec10b
Patch by Ben Gertzfield to add inet_aton() and inet_ntoa() calls.
Guido van Rossum <guido@python.org>
parents:
11182
diff
changeset
|
3670 |
|
f406e78ec10b
Patch by Ben Gertzfield to add inet_aton() and inet_ntoa() calls.
Guido van Rossum <guido@python.org>
parents:
11182
diff
changeset
|
3671 static PyObject* |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
3672 socket_inet_ntoa(PyObject *self, PyObject *args) |
|
11217
f406e78ec10b
Patch by Ben Gertzfield to add inet_aton() and inet_ntoa() calls.
Guido van Rossum <guido@python.org>
parents:
11182
diff
changeset
|
3673 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3674 char *packed_str; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3675 int addr_len; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3676 struct in_addr packed_addr; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3677 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3678 if (!PyArg_ParseTuple(args, "y#:inet_ntoa", &packed_str, &addr_len)) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3679 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3680 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3681 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3682 if (addr_len != sizeof(packed_addr)) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3683 PyErr_SetString(socket_error, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3684 "packed IP wrong length for inet_ntoa"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3685 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3686 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3687 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3688 memcpy(&packed_addr, packed_str, addr_len); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3689 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3690 return PyUnicode_FromString(inet_ntoa(packed_addr)); |
|
11217
f406e78ec10b
Patch by Ben Gertzfield to add inet_aton() and inet_ntoa() calls.
Guido van Rossum <guido@python.org>
parents:
11182
diff
changeset
|
3691 } |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
3692 |
|
28818
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3693 #ifdef HAVE_INET_PTON |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3694 |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3695 PyDoc_STRVAR(inet_pton_doc, |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3696 "inet_pton(af, ip) -> packed IP address string\n\ |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3697 \n\ |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3698 Convert an IP address from string format to a packed string suitable\n\ |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3699 for use with low-level network functions."); |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3700 |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3701 static PyObject * |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3702 socket_inet_pton(PyObject *self, PyObject *args) |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3703 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3704 int af; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3705 char* ip; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3706 int retval; |
|
29066
90342f395721
Patch #734231: Update RiscOS support. In particular, correct
Martin v. Löwis <martin@v.loewis.de>
parents:
29037
diff
changeset
|
3707 #ifdef ENABLE_IPV6 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3708 char packed[MAX(sizeof(struct in_addr), sizeof(struct in6_addr))]; |
|
29066
90342f395721
Patch #734231: Update RiscOS support. In particular, correct
Martin v. Löwis <martin@v.loewis.de>
parents:
29037
diff
changeset
|
3709 #else |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3710 char packed[sizeof(struct in_addr)]; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3711 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3712 if (!PyArg_ParseTuple(args, "is:inet_pton", &af, &ip)) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3713 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3714 } |
|
28818
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3715 |
|
32183
a799b0d1c568
Patch #924294: Do not check for AF_INET6 if it is not defined.
Martin v. Löwis <martin@v.loewis.de>
parents:
32149
diff
changeset
|
3716 #if !defined(ENABLE_IPV6) && defined(AF_INET6) |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3717 if(af == AF_INET6) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3718 PyErr_SetString(socket_error, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3719 "can't use AF_INET6, IPv6 is disabled"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3720 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3721 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3722 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3723 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3724 retval = inet_pton(af, ip, packed); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3725 if (retval < 0) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3726 PyErr_SetFromErrno(socket_error); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3727 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3728 } else if (retval == 0) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3729 PyErr_SetString(socket_error, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3730 "illegal IP address string passed to inet_pton"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3731 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3732 } else if (af == AF_INET) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3733 return PyBytes_FromStringAndSize(packed, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3734 sizeof(struct in_addr)); |
|
29066
90342f395721
Patch #734231: Update RiscOS support. In particular, correct
Martin v. Löwis <martin@v.loewis.de>
parents:
29037
diff
changeset
|
3735 #ifdef ENABLE_IPV6 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3736 } else if (af == AF_INET6) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3737 return PyBytes_FromStringAndSize(packed, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3738 sizeof(struct in6_addr)); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3739 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3740 } else { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3741 PyErr_SetString(socket_error, "unknown address family"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3742 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3743 } |
|
28818
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3744 } |
|
38453
29ae5e0fc348
Much-needed merge (using svnmerge.py this time) of trunk changes into p3yk.
Thomas Wouters <thomas@python.org>
parents:
37879
diff
changeset
|
3745 |
|
28818
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3746 PyDoc_STRVAR(inet_ntop_doc, |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3747 "inet_ntop(af, packed_ip) -> string formatted IP address\n\ |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3748 \n\ |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3749 Convert a packed IP address of the given family to string format."); |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3750 |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3751 static PyObject * |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3752 socket_inet_ntop(PyObject *self, PyObject *args) |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3753 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3754 int af; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3755 char* packed; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3756 int len; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3757 const char* retval; |
|
29066
90342f395721
Patch #734231: Update RiscOS support. In particular, correct
Martin v. Löwis <martin@v.loewis.de>
parents:
29037
diff
changeset
|
3758 #ifdef ENABLE_IPV6 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3759 char ip[MAX(INET_ADDRSTRLEN, INET6_ADDRSTRLEN) + 1]; |
|
29066
90342f395721
Patch #734231: Update RiscOS support. In particular, correct
Martin v. Löwis <martin@v.loewis.de>
parents:
29037
diff
changeset
|
3760 #else |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3761 char ip[INET_ADDRSTRLEN + 1]; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3762 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3763 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3764 /* Guarantee NUL-termination for PyUnicode_FromString() below */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3765 memset((void *) &ip[0], '\0', sizeof(ip)); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3766 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3767 if (!PyArg_ParseTuple(args, "iy#:inet_ntop", &af, &packed, &len)) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3768 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3769 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3770 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3771 if (af == AF_INET) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3772 if (len != sizeof(struct in_addr)) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3773 PyErr_SetString(PyExc_ValueError, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3774 "invalid length of packed IP address string"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3775 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3776 } |
|
29066
90342f395721
Patch #734231: Update RiscOS support. In particular, correct
Martin v. Löwis <martin@v.loewis.de>
parents:
29037
diff
changeset
|
3777 #ifdef ENABLE_IPV6 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3778 } else if (af == AF_INET6) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3779 if (len != sizeof(struct in6_addr)) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3780 PyErr_SetString(PyExc_ValueError, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3781 "invalid length of packed IP address string"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3782 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3783 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3784 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3785 } else { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3786 PyErr_Format(PyExc_ValueError, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3787 "unknown address family %d", af); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3788 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3789 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3790 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3791 retval = inet_ntop(af, packed, ip, sizeof(ip)); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3792 if (!retval) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3793 PyErr_SetFromErrno(socket_error); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3794 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3795 } else { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3796 return PyUnicode_FromString(retval); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3797 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3798 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3799 /* NOTREACHED */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3800 PyErr_SetString(PyExc_RuntimeError, "invalid handling of inet_ntop"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3801 return NULL; |
|
28818
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3802 } |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3803 |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3804 #endif /* HAVE_INET_PTON */ |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3805 |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3806 /* Python interface to getaddrinfo(host, port). */ |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3807 |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3808 /*ARGSUSED*/ |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3809 static PyObject * |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
3810 socket_getaddrinfo(PyObject *self, PyObject *args) |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3811 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3812 struct addrinfo hints, *res; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3813 struct addrinfo *res0 = NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3814 PyObject *hobj = NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3815 PyObject *pobj = (PyObject *)NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3816 char pbuf[30]; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3817 char *hptr, *pptr; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3818 int family, socktype, protocol, flags; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3819 int error; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3820 PyObject *all = (PyObject *)NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3821 PyObject *idna = NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3822 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3823 family = socktype = protocol = flags = 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3824 family = AF_UNSPEC; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3825 if (!PyArg_ParseTuple(args, "OO|iiii:getaddrinfo", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3826 &hobj, &pobj, &family, &socktype, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3827 &protocol, &flags)) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3828 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3829 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3830 if (hobj == Py_None) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3831 hptr = NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3832 } else if (PyUnicode_Check(hobj)) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3833 idna = PyObject_CallMethod(hobj, "encode", "s", "idna"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3834 if (!idna) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3835 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3836 assert(PyBytes_Check(idna)); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3837 hptr = PyBytes_AS_STRING(idna); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3838 } else if (PyBytes_Check(hobj)) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3839 hptr = PyBytes_AsString(hobj); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3840 } else { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3841 PyErr_SetString(PyExc_TypeError, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3842 "getaddrinfo() argument 1 must be string or None"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3843 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3844 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3845 if (PyLong_CheckExact(pobj)) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3846 long value = PyLong_AsLong(pobj); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3847 if (value == -1 && PyErr_Occurred()) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3848 goto err; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3849 PyOS_snprintf(pbuf, sizeof(pbuf), "%ld", value); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3850 pptr = pbuf; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3851 } else if (PyUnicode_Check(pobj)) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3852 pptr = _PyUnicode_AsString(pobj); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3853 } else if (PyBytes_Check(pobj)) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3854 pptr = PyBytes_AsString(pobj); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3855 } else if (pobj == Py_None) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3856 pptr = (char *)NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3857 } else { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3858 PyErr_SetString(socket_error, "Int or String expected"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3859 goto err; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3860 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3861 memset(&hints, 0, sizeof(hints)); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3862 hints.ai_family = family; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3863 hints.ai_socktype = socktype; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3864 hints.ai_protocol = protocol; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3865 hints.ai_flags = flags; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3866 Py_BEGIN_ALLOW_THREADS |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3867 ACQUIRE_GETADDRINFO_LOCK |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3868 error = getaddrinfo(hptr, pptr, &hints, &res0); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3869 Py_END_ALLOW_THREADS |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3870 RELEASE_GETADDRINFO_LOCK /* see comment in setipaddr() */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3871 if (error) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3872 set_gaierror(error); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3873 goto err; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3874 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3875 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3876 if ((all = PyList_New(0)) == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3877 goto err; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3878 for (res = res0; res; res = res->ai_next) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3879 PyObject *single; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3880 PyObject *addr = |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3881 makesockaddr(-1, res->ai_addr, res->ai_addrlen, protocol); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3882 if (addr == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3883 goto err; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3884 single = Py_BuildValue("iiisO", res->ai_family, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3885 res->ai_socktype, res->ai_protocol, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3886 res->ai_canonname ? res->ai_canonname : "", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3887 addr); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3888 Py_DECREF(addr); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3889 if (single == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3890 goto err; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3891 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3892 if (PyList_Append(all, single)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3893 goto err; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3894 Py_XDECREF(single); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3895 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3896 Py_XDECREF(idna); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3897 if (res0) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3898 freeaddrinfo(res0); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3899 return all; |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3900 err: |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3901 Py_XDECREF(all); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3902 Py_XDECREF(idna); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3903 if (res0) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3904 freeaddrinfo(res0); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3905 return (PyObject *)NULL; |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3906 } |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3907 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
3908 PyDoc_STRVAR(getaddrinfo_doc, |
|
24676
980767c6cd97
Clean up some docstrings. Some docstrings didn't show their return
Guido van Rossum <guido@python.org>
parents:
24619
diff
changeset
|
3909 "getaddrinfo(host, port [, family, socktype, proto, flags])\n\ |
|
980767c6cd97
Clean up some docstrings. Some docstrings didn't show their return
Guido van Rossum <guido@python.org>
parents:
24619
diff
changeset
|
3910 -> list of (family, socktype, proto, canonname, sockaddr)\n\ |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3911 \n\ |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
3912 Resolve host and port into addrinfo struct."); |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3913 |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3914 /* Python interface to getnameinfo(sa, flags). */ |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3915 |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3916 /*ARGSUSED*/ |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3917 static PyObject * |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
3918 socket_getnameinfo(PyObject *self, PyObject *args) |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3919 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3920 PyObject *sa = (PyObject *)NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3921 int flags; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3922 char *hostp; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3923 int port, flowinfo, scope_id; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3924 char hbuf[NI_MAXHOST], pbuf[NI_MAXSERV]; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3925 struct addrinfo hints, *res = NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3926 int error; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3927 PyObject *ret = (PyObject *)NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3928 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3929 flags = flowinfo = scope_id = 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3930 if (!PyArg_ParseTuple(args, "Oi:getnameinfo", &sa, &flags)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3931 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3932 if (!PyTuple_Check(sa)) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3933 PyErr_SetString(PyExc_TypeError, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3934 "getnameinfo() argument 1 must be a tuple"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3935 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3936 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3937 if (!PyArg_ParseTuple(sa, "si|ii", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3938 &hostp, &port, &flowinfo, &scope_id)) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3939 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3940 PyOS_snprintf(pbuf, sizeof(pbuf), "%d", port); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3941 memset(&hints, 0, sizeof(hints)); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3942 hints.ai_family = AF_UNSPEC; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3943 hints.ai_socktype = SOCK_DGRAM; /* make numeric port happy */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3944 Py_BEGIN_ALLOW_THREADS |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3945 ACQUIRE_GETADDRINFO_LOCK |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3946 error = getaddrinfo(hostp, pbuf, &hints, &res); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3947 Py_END_ALLOW_THREADS |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3948 RELEASE_GETADDRINFO_LOCK /* see comment in setipaddr() */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3949 if (error) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3950 set_gaierror(error); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3951 goto fail; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3952 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3953 if (res->ai_next) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3954 PyErr_SetString(socket_error, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3955 "sockaddr resolved to multiple addresses"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3956 goto fail; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3957 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3958 switch (res->ai_family) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3959 case AF_INET: |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3960 { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3961 if (PyTuple_GET_SIZE(sa) != 2) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3962 PyErr_SetString(socket_error, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3963 "IPv4 sockaddr must be 2 tuple"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3964 goto fail; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3965 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3966 break; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3967 } |
|
21128
15ff504632ed
Remove INET6 define. Use ENABLE_IPV6 instead.
Martin v. Löwis <martin@v.loewis.de>
parents:
21094
diff
changeset
|
3968 #ifdef ENABLE_IPV6 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3969 case AF_INET6: |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3970 { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3971 struct sockaddr_in6 *sin6; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3972 sin6 = (struct sockaddr_in6 *)res->ai_addr; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3973 sin6->sin6_flowinfo = flowinfo; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3974 sin6->sin6_scope_id = scope_id; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3975 break; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3976 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3977 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3978 } |
|
64121
2a4ceebdfcfb
Merged revisions 84146-84147,84150 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61467
diff
changeset
|
3979 error = getnameinfo(res->ai_addr, (socklen_t) res->ai_addrlen, |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3980 hbuf, sizeof(hbuf), pbuf, sizeof(pbuf), flags); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3981 if (error) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3982 set_gaierror(error); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3983 goto fail; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3984 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3985 ret = Py_BuildValue("ss", hbuf, pbuf); |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3986 |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3987 fail: |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3988 if (res) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3989 freeaddrinfo(res); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
3990 return ret; |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3991 } |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3992 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
3993 PyDoc_STRVAR(getnameinfo_doc, |
|
24676
980767c6cd97
Clean up some docstrings. Some docstrings didn't show their return
Guido van Rossum <guido@python.org>
parents:
24619
diff
changeset
|
3994 "getnameinfo(sockaddr, flags) --> (host, port)\n\ |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3995 \n\ |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
3996 Get host and port for a sockaddr."); |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3997 |
|
24293
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
3998 |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
3999 /* Python API to getting and setting the default timeout value. */ |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4000 |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4001 static PyObject * |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4002 socket_getdefaulttimeout(PyObject *self) |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4003 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4004 if (defaulttimeout < 0.0) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4005 Py_INCREF(Py_None); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4006 return Py_None; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4007 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4008 else |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4009 return PyFloat_FromDouble(defaulttimeout); |
|
24293
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4010 } |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4011 |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4012 PyDoc_STRVAR(getdefaulttimeout_doc, |
|
24676
980767c6cd97
Clean up some docstrings. Some docstrings didn't show their return
Guido van Rossum <guido@python.org>
parents:
24619
diff
changeset
|
4013 "getdefaulttimeout() -> timeout\n\ |
|
24293
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4014 \n\ |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4015 Returns the default timeout in floating seconds for new socket objects.\n\ |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4016 A value of None indicates that new socket objects have no timeout.\n\ |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4017 When the socket module is first imported, the default is None."); |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4018 |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4019 static PyObject * |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4020 socket_setdefaulttimeout(PyObject *self, PyObject *arg) |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4021 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4022 double timeout; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4023 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4024 if (arg == Py_None) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4025 timeout = -1.0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4026 else { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4027 timeout = PyFloat_AsDouble(arg); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4028 if (timeout < 0.0) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4029 if (!PyErr_Occurred()) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4030 PyErr_SetString(PyExc_ValueError, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4031 "Timeout value out of range"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4032 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4033 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4034 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4035 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4036 defaulttimeout = timeout; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4037 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4038 Py_INCREF(Py_None); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4039 return Py_None; |
|
24293
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4040 } |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4041 |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4042 PyDoc_STRVAR(setdefaulttimeout_doc, |
|
24676
980767c6cd97
Clean up some docstrings. Some docstrings didn't show their return
Guido van Rossum <guido@python.org>
parents:
24619
diff
changeset
|
4043 "setdefaulttimeout(timeout)\n\ |
|
24293
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4044 \n\ |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4045 Set the default timeout in floating seconds for new socket objects.\n\ |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4046 A value of None indicates that new socket objects have no timeout.\n\ |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4047 When the socket module is first imported, the default is None."); |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4048 |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4049 |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
4050 /* List of functions exported by this module. */ |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
4051 |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4052 static PyMethodDef socket_methods[] = { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4053 {"gethostbyname", socket_gethostbyname, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4054 METH_VARARGS, gethostbyname_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4055 {"gethostbyname_ex", socket_gethostbyname_ex, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4056 METH_VARARGS, ghbn_ex_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4057 {"gethostbyaddr", socket_gethostbyaddr, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4058 METH_VARARGS, gethostbyaddr_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4059 {"gethostname", socket_gethostname, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4060 METH_NOARGS, gethostname_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4061 {"getservbyname", socket_getservbyname, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4062 METH_VARARGS, getservbyname_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4063 {"getservbyport", socket_getservbyport, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4064 METH_VARARGS, getservbyport_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4065 {"getprotobyname", socket_getprotobyname, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4066 METH_VARARGS, getprotobyname_doc}, |
|
43881
70cfc7b504c2
This is roughly socket2.diff from issue 1378, with a few changes applied
Guido van Rossum <guido@python.org>
parents:
43877
diff
changeset
|
4067 #ifndef NO_DUP |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4068 {"dup", socket_dup, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4069 METH_O, dup_doc}, |
|
43881
70cfc7b504c2
This is roughly socket2.diff from issue 1378, with a few changes applied
Guido van Rossum <guido@python.org>
parents:
43877
diff
changeset
|
4070 #endif |
|
33063
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
4071 #ifdef HAVE_SOCKETPAIR |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4072 {"socketpair", socket_socketpair, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4073 METH_VARARGS, socketpair_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4074 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4075 {"ntohs", socket_ntohs, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4076 METH_VARARGS, ntohs_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4077 {"ntohl", socket_ntohl, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4078 METH_O, ntohl_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4079 {"htons", socket_htons, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4080 METH_VARARGS, htons_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4081 {"htonl", socket_htonl, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4082 METH_O, htonl_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4083 {"inet_aton", socket_inet_aton, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4084 METH_VARARGS, inet_aton_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4085 {"inet_ntoa", socket_inet_ntoa, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4086 METH_VARARGS, inet_ntoa_doc}, |
|
28818
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
4087 #ifdef HAVE_INET_PTON |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4088 {"inet_pton", socket_inet_pton, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4089 METH_VARARGS, inet_pton_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4090 {"inet_ntop", socket_inet_ntop, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4091 METH_VARARGS, inet_ntop_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4092 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4093 {"getaddrinfo", socket_getaddrinfo, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4094 METH_VARARGS, getaddrinfo_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4095 {"getnameinfo", socket_getnameinfo, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4096 METH_VARARGS, getnameinfo_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4097 {"getdefaulttimeout", (PyCFunction)socket_getdefaulttimeout, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4098 METH_NOARGS, getdefaulttimeout_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4099 {"setdefaulttimeout", socket_setdefaulttimeout, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4100 METH_O, setdefaulttimeout_doc}, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4101 {NULL, NULL} /* Sentinel */ |
| 294 | 4102 }; |
| 4103 | |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
4104 |
|
3702
3408756ec601
changed windows test symbols; removed debug printf from sockets
Guido van Rossum <guido@python.org>
parents:
3700
diff
changeset
|
4105 #ifdef MS_WINDOWS |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4106 #define OS_INIT_DEFINED |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4107 |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4108 /* Additional initialization and cleanup for Windows */ |
|
3700
931086cb8529
More rational support for Windows (tested on Roj's NT 3.5 machine only).
Guido van Rossum <guido@python.org>
parents:
3673
diff
changeset
|
4109 |
|
931086cb8529
More rational support for Windows (tested on Roj's NT 3.5 machine only).
Guido van Rossum <guido@python.org>
parents:
3673
diff
changeset
|
4110 static void |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4111 os_cleanup(void) |
|
3700
931086cb8529
More rational support for Windows (tested on Roj's NT 3.5 machine only).
Guido van Rossum <guido@python.org>
parents:
3673
diff
changeset
|
4112 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4113 WSACleanup(); |
|
3700
931086cb8529
More rational support for Windows (tested on Roj's NT 3.5 machine only).
Guido van Rossum <guido@python.org>
parents:
3673
diff
changeset
|
4114 } |
|
931086cb8529
More rational support for Windows (tested on Roj's NT 3.5 machine only).
Guido van Rossum <guido@python.org>
parents:
3673
diff
changeset
|
4115 |
|
931086cb8529
More rational support for Windows (tested on Roj's NT 3.5 machine only).
Guido van Rossum <guido@python.org>
parents:
3673
diff
changeset
|
4116 static int |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4117 os_init(void) |
|
3700
931086cb8529
More rational support for Windows (tested on Roj's NT 3.5 machine only).
Guido van Rossum <guido@python.org>
parents:
3673
diff
changeset
|
4118 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4119 WSADATA WSAData; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4120 int ret; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4121 ret = WSAStartup(0x0101, &WSAData); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4122 switch (ret) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4123 case 0: /* No error */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4124 Py_AtExit(os_cleanup); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4125 return 1; /* Success */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4126 case WSASYSNOTREADY: |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4127 PyErr_SetString(PyExc_ImportError, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4128 "WSAStartup failed: network not ready"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4129 break; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4130 case WSAVERNOTSUPPORTED: |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4131 case WSAEINVAL: |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4132 PyErr_SetString( |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4133 PyExc_ImportError, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4134 "WSAStartup failed: requested version not supported"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4135 break; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4136 default: |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4137 PyErr_Format(PyExc_ImportError, "WSAStartup failed: error code %d", ret); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4138 break; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4139 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4140 return 0; /* Failure */ |
|
3700
931086cb8529
More rational support for Windows (tested on Roj's NT 3.5 machine only).
Guido van Rossum <guido@python.org>
parents:
3673
diff
changeset
|
4141 } |
|
931086cb8529
More rational support for Windows (tested on Roj's NT 3.5 machine only).
Guido van Rossum <guido@python.org>
parents:
3673
diff
changeset
|
4142 |
|
3702
3408756ec601
changed windows test symbols; removed debug printf from sockets
Guido van Rossum <guido@python.org>
parents:
3700
diff
changeset
|
4143 #endif /* MS_WINDOWS */ |
|
3700
931086cb8529
More rational support for Windows (tested on Roj's NT 3.5 machine only).
Guido van Rossum <guido@python.org>
parents:
3673
diff
changeset
|
4144 |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4145 |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4146 #ifdef PYOS_OS2 |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4147 #define OS_INIT_DEFINED |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4148 |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4149 /* Additional initialization for OS/2 */ |
|
6626
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
4150 |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
4151 static int |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4152 os_init(void) |
|
6626
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
4153 { |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4154 #ifndef PYCC_GCC |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4155 int rc = sock_init(); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4156 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4157 if (rc == 0) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4158 return 1; /* Success */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4159 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4160 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4161 PyErr_Format(PyExc_ImportError, "OS/2 TCP/IP Error# %d", sock_errno()); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4162 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4163 return 0; /* Failure */ |
|
22115
d104bb50a194
OS/2 EMX port changes (Modules part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
22096
diff
changeset
|
4164 #else |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4165 /* No need to initialise sockets with GCC/EMX */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4166 return 1; /* Success */ |
|
22115
d104bb50a194
OS/2 EMX port changes (Modules part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
22096
diff
changeset
|
4167 #endif |
|
6626
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
4168 } |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
4169 |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
4170 #endif /* PYOS_OS2 */ |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
4171 |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4172 |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4173 #ifndef OS_INIT_DEFINED |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4174 static int |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4175 os_init(void) |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4176 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4177 return 1; /* Success */ |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4178 } |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4179 #endif |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4180 |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4181 |
|
21959
3957d155f8c5
Break SSL support out of _socket module and place it into a new
Marc-André Lemburg <mal@egenix.com>
parents:
21757
diff
changeset
|
4182 /* C API table - always add new things to the end for binary |
|
3957d155f8c5
Break SSL support out of _socket module and place it into a new
Marc-André Lemburg <mal@egenix.com>
parents:
21757
diff
changeset
|
4183 compatibility. */ |
|
3957d155f8c5
Break SSL support out of _socket module and place it into a new
Marc-André Lemburg <mal@egenix.com>
parents:
21757
diff
changeset
|
4184 static |
|
3957d155f8c5
Break SSL support out of _socket module and place it into a new
Marc-André Lemburg <mal@egenix.com>
parents:
21757
diff
changeset
|
4185 PySocketModule_APIObject PySocketModuleAPI = |
|
3957d155f8c5
Break SSL support out of _socket module and place it into a new
Marc-André Lemburg <mal@egenix.com>
parents:
21757
diff
changeset
|
4186 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4187 &sock_type, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4188 NULL |
|
21959
3957d155f8c5
Break SSL support out of _socket module and place it into a new
Marc-André Lemburg <mal@egenix.com>
parents:
21757
diff
changeset
|
4189 }; |
|
3957d155f8c5
Break SSL support out of _socket module and place it into a new
Marc-André Lemburg <mal@egenix.com>
parents:
21757
diff
changeset
|
4190 |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4191 |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4192 /* Initialize the _socket module. |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4193 |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4194 This module is actually called "_socket", and there's a wrapper |
|
41809
8e062e572ea4
Sockets facelift. APIs that could return binary data (e.g. aton() and
Guido van Rossum <guido@python.org>
parents:
41770
diff
changeset
|
4195 "socket.py" which implements some additional functionality. |
|
8e062e572ea4
Sockets facelift. APIs that could return binary data (e.g. aton() and
Guido van Rossum <guido@python.org>
parents:
41770
diff
changeset
|
4196 The import of "_socket" may fail with an ImportError exception if |
|
8e062e572ea4
Sockets facelift. APIs that could return binary data (e.g. aton() and
Guido van Rossum <guido@python.org>
parents:
41770
diff
changeset
|
4197 os-specific initialization fails. On Windows, this does WINSOCK |
|
8e062e572ea4
Sockets facelift. APIs that could return binary data (e.g. aton() and
Guido van Rossum <guido@python.org>
parents:
41770
diff
changeset
|
4198 initialization. When WINSOCK is initialized succesfully, a call to |
|
8e062e572ea4
Sockets facelift. APIs that could return binary data (e.g. aton() and
Guido van Rossum <guido@python.org>
parents:
41770
diff
changeset
|
4199 WSACleanup() is scheduled to be made at exit time. |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4200 */ |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4201 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
4202 PyDoc_STRVAR(socket_doc, |
|
24676
980767c6cd97
Clean up some docstrings. Some docstrings didn't show their return
Guido van Rossum <guido@python.org>
parents:
24619
diff
changeset
|
4203 "Implementation module for socket operations.\n\ |
|
980767c6cd97
Clean up some docstrings. Some docstrings didn't show their return
Guido van Rossum <guido@python.org>
parents:
24619
diff
changeset
|
4204 \n\ |
|
980767c6cd97
Clean up some docstrings. Some docstrings didn't show their return
Guido van Rossum <guido@python.org>
parents:
24619
diff
changeset
|
4205 See the socket module for documentation."); |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
4206 |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
4207 static struct PyModuleDef socketmodule = { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4208 PyModuleDef_HEAD_INIT, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4209 PySocket_MODULE_NAME, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4210 socket_doc, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4211 -1, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4212 socket_methods, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4213 NULL, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4214 NULL, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4215 NULL, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4216 NULL |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
4217 }; |
|
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
4218 |
|
24471
f66b3a3509c7
Excise DL_EXPORT/DL_IMPORT from Modules/*. Required adding a prototype
Mark Hammond <mhammond@skippinet.com.au>
parents:
24411
diff
changeset
|
4219 PyMODINIT_FUNC |
|
47580
94f64f11fdd0
Implement PEP 3121: new module initialization and finalization API.
Martin v. Löwis <martin@v.loewis.de>
parents:
47301
diff
changeset
|
4220 PyInit__socket(void) |
| 294 | 4221 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4222 PyObject *m, *has_ipv6; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4223 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4224 if (!os_init()) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4225 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4226 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4227 Py_TYPE(&sock_type) = &PyType_Type; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4228 m = PyModule_Create(&socketmodule); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4229 if (m == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4230 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4231 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4232 socket_error = PyErr_NewException("socket.error", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4233 PyExc_IOError, NULL); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4234 if (socket_error == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4235 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4236 PySocketModuleAPI.error = socket_error; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4237 Py_INCREF(socket_error); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4238 PyModule_AddObject(m, "error", socket_error); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4239 socket_herror = PyErr_NewException("socket.herror", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4240 socket_error, NULL); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4241 if (socket_herror == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4242 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4243 Py_INCREF(socket_herror); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4244 PyModule_AddObject(m, "herror", socket_herror); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4245 socket_gaierror = PyErr_NewException("socket.gaierror", socket_error, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4246 NULL); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4247 if (socket_gaierror == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4248 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4249 Py_INCREF(socket_gaierror); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4250 PyModule_AddObject(m, "gaierror", socket_gaierror); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4251 socket_timeout = PyErr_NewException("socket.timeout", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4252 socket_error, NULL); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4253 if (socket_timeout == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4254 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4255 Py_INCREF(socket_timeout); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4256 PyModule_AddObject(m, "timeout", socket_timeout); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4257 Py_INCREF((PyObject *)&sock_type); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4258 if (PyModule_AddObject(m, "SocketType", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4259 (PyObject *)&sock_type) != 0) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4260 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4261 Py_INCREF((PyObject *)&sock_type); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4262 if (PyModule_AddObject(m, "socket", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4263 (PyObject *)&sock_type) != 0) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4264 return NULL; |
|
11182
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
4265 |
|
28818
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
4266 #ifdef ENABLE_IPV6 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4267 has_ipv6 = Py_True; |
|
28818
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
4268 #else |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4269 has_ipv6 = Py_False; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4270 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4271 Py_INCREF(has_ipv6); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4272 PyModule_AddObject(m, "has_ipv6", has_ipv6); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4273 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4274 /* Export C API */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4275 if (PyModule_AddObject(m, PySocket_CAPI_NAME, |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4276 PyCapsule_New(&PySocketModuleAPI, PySocket_CAPSULE_NAME, NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4277 ) != 0) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4278 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4279 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4280 /* Address families (we only support AF_INET and AF_UNIX) */ |
|
11182
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
4281 #ifdef AF_UNSPEC |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4282 PyModule_AddIntConstant(m, "AF_UNSPEC", AF_UNSPEC); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4283 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4284 PyModule_AddIntConstant(m, "AF_INET", AF_INET); |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4285 #ifdef AF_INET6 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4286 PyModule_AddIntConstant(m, "AF_INET6", AF_INET6); |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4287 #endif /* AF_INET6 */ |
|
31867
51aaceeaabe1
OS/2's TCP/IP stack supports AF_UNIX sockets, with the limitation that
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
31790
diff
changeset
|
4288 #if defined(AF_UNIX) |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4289 PyModule_AddIntConstant(m, "AF_UNIX", AF_UNIX); |
|
1746
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1413
diff
changeset
|
4290 #endif /* AF_UNIX */ |
|
11182
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
4291 #ifdef AF_AX25 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4292 /* Amateur Radio AX.25 */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4293 PyModule_AddIntConstant(m, "AF_AX25", AF_AX25); |
|
11182
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
4294 #endif |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
4295 #ifdef AF_IPX |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4296 PyModule_AddIntConstant(m, "AF_IPX", AF_IPX); /* Novell IPX */ |
|
11182
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
4297 #endif |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
4298 #ifdef AF_APPLETALK |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4299 /* Appletalk DDP */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4300 PyModule_AddIntConstant(m, "AF_APPLETALK", AF_APPLETALK); |
|
11182
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
4301 #endif |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
4302 #ifdef AF_NETROM |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4303 /* Amateur radio NetROM */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4304 PyModule_AddIntConstant(m, "AF_NETROM", AF_NETROM); |
|
11182
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
4305 #endif |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
4306 #ifdef AF_BRIDGE |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4307 /* Multiprotocol bridge */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4308 PyModule_AddIntConstant(m, "AF_BRIDGE", AF_BRIDGE); |
|
11182
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
4309 #endif |
|
32764
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4310 #ifdef AF_ATMPVC |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4311 /* ATM PVCs */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4312 PyModule_AddIntConstant(m, "AF_ATMPVC", AF_ATMPVC); |
|
32764
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4313 #endif |
|
11182
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
4314 #ifdef AF_AAL5 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4315 /* Reserved for Werner's ATM */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4316 PyModule_AddIntConstant(m, "AF_AAL5", AF_AAL5); |
|
11182
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
4317 #endif |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
4318 #ifdef AF_X25 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4319 /* Reserved for X.25 project */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4320 PyModule_AddIntConstant(m, "AF_X25", AF_X25); |
|
11182
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
4321 #endif |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
4322 #ifdef AF_INET6 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4323 PyModule_AddIntConstant(m, "AF_INET6", AF_INET6); /* IP version 6 */ |
|
11182
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
4324 #endif |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
4325 #ifdef AF_ROSE |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4326 /* Amateur Radio X.25 PLP */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4327 PyModule_AddIntConstant(m, "AF_ROSE", AF_ROSE); |
|
11182
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
4328 #endif |
|
32764
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4329 #ifdef AF_DECnet |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4330 /* Reserved for DECnet project */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4331 PyModule_AddIntConstant(m, "AF_DECnet", AF_DECnet); |
|
32764
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4332 #endif |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4333 #ifdef AF_NETBEUI |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4334 /* Reserved for 802.2LLC project */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4335 PyModule_AddIntConstant(m, "AF_NETBEUI", AF_NETBEUI); |
|
32764
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4336 #endif |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4337 #ifdef AF_SECURITY |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4338 /* Security callback pseudo AF */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4339 PyModule_AddIntConstant(m, "AF_SECURITY", AF_SECURITY); |
|
32764
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4340 #endif |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4341 #ifdef AF_KEY |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4342 /* PF_KEY key management API */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4343 PyModule_AddIntConstant(m, "AF_KEY", AF_KEY); |
|
32764
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4344 #endif |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4345 #ifdef AF_NETLINK |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4346 /* */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4347 PyModule_AddIntConstant(m, "AF_NETLINK", AF_NETLINK); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4348 PyModule_AddIntConstant(m, "NETLINK_ROUTE", NETLINK_ROUTE); |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36684
diff
changeset
|
4349 #ifdef NETLINK_SKIP |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4350 PyModule_AddIntConstant(m, "NETLINK_SKIP", NETLINK_SKIP); |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36684
diff
changeset
|
4351 #endif |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36684
diff
changeset
|
4352 #ifdef NETLINK_W1 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4353 PyModule_AddIntConstant(m, "NETLINK_W1", NETLINK_W1); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4354 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4355 PyModule_AddIntConstant(m, "NETLINK_USERSOCK", NETLINK_USERSOCK); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4356 PyModule_AddIntConstant(m, "NETLINK_FIREWALL", NETLINK_FIREWALL); |
|
36632
4d988dda6478
NETLINK_TCPDIAG and NETLINK_NFLOG aren't defined on older Linux
Guido van Rossum <guido@python.org>
parents:
36610
diff
changeset
|
4357 #ifdef NETLINK_TCPDIAG |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4358 PyModule_AddIntConstant(m, "NETLINK_TCPDIAG", NETLINK_TCPDIAG); |
|
36632
4d988dda6478
NETLINK_TCPDIAG and NETLINK_NFLOG aren't defined on older Linux
Guido van Rossum <guido@python.org>
parents:
36610
diff
changeset
|
4359 #endif |
|
4d988dda6478
NETLINK_TCPDIAG and NETLINK_NFLOG aren't defined on older Linux
Guido van Rossum <guido@python.org>
parents:
36610
diff
changeset
|
4360 #ifdef NETLINK_NFLOG |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4361 PyModule_AddIntConstant(m, "NETLINK_NFLOG", NETLINK_NFLOG); |
|
36632
4d988dda6478
NETLINK_TCPDIAG and NETLINK_NFLOG aren't defined on older Linux
Guido van Rossum <guido@python.org>
parents:
36610
diff
changeset
|
4362 #endif |
|
36298
9eeaa33f9640
Get socketmodule to build after adding netlink support.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36289
diff
changeset
|
4363 #ifdef NETLINK_XFRM |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4364 PyModule_AddIntConstant(m, "NETLINK_XFRM", NETLINK_XFRM); |
|
36298
9eeaa33f9640
Get socketmodule to build after adding netlink support.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36289
diff
changeset
|
4365 #endif |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36684
diff
changeset
|
4366 #ifdef NETLINK_ARPD |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4367 PyModule_AddIntConstant(m, "NETLINK_ARPD", NETLINK_ARPD); |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36684
diff
changeset
|
4368 #endif |
|
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36684
diff
changeset
|
4369 #ifdef NETLINK_ROUTE6 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4370 PyModule_AddIntConstant(m, "NETLINK_ROUTE6", NETLINK_ROUTE6); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4371 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4372 PyModule_AddIntConstant(m, "NETLINK_IP6_FW", NETLINK_IP6_FW); |
|
40893
32c4897b5d46
Merged revisions 53623-53858 via svnmerge from
Thomas Wouters <thomas@python.org>
parents:
40638
diff
changeset
|
4373 #ifdef NETLINK_DNRTMSG |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4374 PyModule_AddIntConstant(m, "NETLINK_DNRTMSG", NETLINK_DNRTMSG); |
|
43881
70cfc7b504c2
This is roughly socket2.diff from issue 1378, with a few changes applied
Guido van Rossum <guido@python.org>
parents:
43877
diff
changeset
|
4375 #endif |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36684
diff
changeset
|
4376 #ifdef NETLINK_TAPBASE |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4377 PyModule_AddIntConstant(m, "NETLINK_TAPBASE", NETLINK_TAPBASE); |
|
32764
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4378 #endif |
|
37879
f731859e9b3b
Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents:
36684
diff
changeset
|
4379 #endif /* AF_NETLINK */ |
|
32764
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4380 #ifdef AF_ROUTE |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4381 /* Alias to emulate 4.4BSD */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4382 PyModule_AddIntConstant(m, "AF_ROUTE", AF_ROUTE); |
|
32764
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4383 #endif |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4384 #ifdef AF_ASH |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4385 /* Ash */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4386 PyModule_AddIntConstant(m, "AF_ASH", AF_ASH); |
|
32764
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4387 #endif |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4388 #ifdef AF_ECONET |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4389 /* Acorn Econet */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4390 PyModule_AddIntConstant(m, "AF_ECONET", AF_ECONET); |
|
32764
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4391 #endif |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4392 #ifdef AF_ATMSVC |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4393 /* ATM SVCs */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4394 PyModule_AddIntConstant(m, "AF_ATMSVC", AF_ATMSVC); |
|
32764
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4395 #endif |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4396 #ifdef AF_SNA |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4397 /* Linux SNA Project (nutters!) */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4398 PyModule_AddIntConstant(m, "AF_SNA", AF_SNA); |
|
32764
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4399 #endif |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4400 #ifdef AF_IRDA |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4401 /* IRDA sockets */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4402 PyModule_AddIntConstant(m, "AF_IRDA", AF_IRDA); |
|
32764
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4403 #endif |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4404 #ifdef AF_PPPOX |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4405 /* PPPoX sockets */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4406 PyModule_AddIntConstant(m, "AF_PPPOX", AF_PPPOX); |
|
32764
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4407 #endif |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4408 #ifdef AF_WANPIPE |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4409 /* Wanpipe API Sockets */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4410 PyModule_AddIntConstant(m, "AF_WANPIPE", AF_WANPIPE); |
|
32764
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4411 #endif |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4412 #ifdef AF_LLC |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4413 /* Linux LLC */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4414 PyModule_AddIntConstant(m, "AF_LLC", AF_LLC); |
|
32764
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4415 #endif |
|
31441
493707692671
Patch #874083: Bluetooth support for socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
31274
diff
changeset
|
4416 |
|
31443
afb4c9726d1a
Add FreeBSD support for bluetooth sockets.
Hye-Shik Chang <hyeshik@gmail.com>
parents:
31441
diff
changeset
|
4417 #ifdef USE_BLUETOOTH |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4418 PyModule_AddIntConstant(m, "AF_BLUETOOTH", AF_BLUETOOTH); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4419 PyModule_AddIntConstant(m, "BTPROTO_L2CAP", BTPROTO_L2CAP); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4420 PyModule_AddIntConstant(m, "BTPROTO_HCI", BTPROTO_HCI); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4421 PyModule_AddIntConstant(m, "SOL_HCI", SOL_HCI); |
|
65429
15859740aae6
Merged revisions 85586-85587,85596-85598 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
65245
diff
changeset
|
4422 #if !defined(__NetBSD__) && !defined(__DragonFly__) |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4423 PyModule_AddIntConstant(m, "HCI_FILTER", HCI_FILTER); |
|
65429
15859740aae6
Merged revisions 85586-85587,85596-85598 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
65245
diff
changeset
|
4424 #endif |
|
42084
229c28cb9afb
Merged revisions 55817-55961 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41943
diff
changeset
|
4425 #if !defined(__FreeBSD__) |
|
65429
15859740aae6
Merged revisions 85586-85587,85596-85598 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
65245
diff
changeset
|
4426 #if !defined(__NetBSD__) && !defined(__DragonFly__) |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4427 PyModule_AddIntConstant(m, "HCI_TIME_STAMP", HCI_TIME_STAMP); |
|
65429
15859740aae6
Merged revisions 85586-85587,85596-85598 via svnmerge from
Gregory P. Smith <greg@mad-scientist.com>
parents:
65245
diff
changeset
|
4428 #endif |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4429 PyModule_AddIntConstant(m, "HCI_DATA_DIR", HCI_DATA_DIR); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4430 PyModule_AddIntConstant(m, "BTPROTO_SCO", BTPROTO_SCO); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4431 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4432 PyModule_AddIntConstant(m, "BTPROTO_RFCOMM", BTPROTO_RFCOMM); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4433 PyModule_AddStringConstant(m, "BDADDR_ANY", "00:00:00:00:00:00"); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4434 PyModule_AddStringConstant(m, "BDADDR_LOCAL", "00:00:00:FF:FF:FF"); |
|
31441
493707692671
Patch #874083: Bluetooth support for socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
31274
diff
changeset
|
4435 #endif |
|
493707692671
Patch #874083: Bluetooth support for socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
31274
diff
changeset
|
4436 |
|
65668
add1bc05e426
Merged revisions 85868 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
65429
diff
changeset
|
4437 #ifdef AF_PACKET |
|
add1bc05e426
Merged revisions 85868 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
65429
diff
changeset
|
4438 PyModule_AddIntMacro(m, AF_PACKET); |
|
add1bc05e426
Merged revisions 85868 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
65429
diff
changeset
|
4439 #endif |
|
add1bc05e426
Merged revisions 85868 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
65429
diff
changeset
|
4440 #ifdef PF_PACKET |
|
add1bc05e426
Merged revisions 85868 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
65429
diff
changeset
|
4441 PyModule_AddIntMacro(m, PF_PACKET); |
|
add1bc05e426
Merged revisions 85868 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
65429
diff
changeset
|
4442 #endif |
|
add1bc05e426
Merged revisions 85868 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
65429
diff
changeset
|
4443 #ifdef PACKET_HOST |
|
add1bc05e426
Merged revisions 85868 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
65429
diff
changeset
|
4444 PyModule_AddIntMacro(m, PACKET_HOST); |
|
add1bc05e426
Merged revisions 85868 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
65429
diff
changeset
|
4445 #endif |
|
add1bc05e426
Merged revisions 85868 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
65429
diff
changeset
|
4446 #ifdef PACKET_BROADCAST |
|
add1bc05e426
Merged revisions 85868 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
65429
diff
changeset
|
4447 PyModule_AddIntMacro(m, PACKET_BROADCAST); |
|
add1bc05e426
Merged revisions 85868 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
65429
diff
changeset
|
4448 #endif |
|
add1bc05e426
Merged revisions 85868 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
65429
diff
changeset
|
4449 #ifdef PACKET_MULTICAST |
|
add1bc05e426
Merged revisions 85868 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
65429
diff
changeset
|
4450 PyModule_AddIntMacro(m, PACKET_MULTICAST); |
|
add1bc05e426
Merged revisions 85868 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
65429
diff
changeset
|
4451 #endif |
|
add1bc05e426
Merged revisions 85868 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
65429
diff
changeset
|
4452 #ifdef PACKET_OTHERHOST |
|
add1bc05e426
Merged revisions 85868 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
65429
diff
changeset
|
4453 PyModule_AddIntMacro(m, PACKET_OTHERHOST); |
|
add1bc05e426
Merged revisions 85868 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
65429
diff
changeset
|
4454 #endif |
|
add1bc05e426
Merged revisions 85868 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
65429
diff
changeset
|
4455 #ifdef PACKET_OUTGOING |
|
add1bc05e426
Merged revisions 85868 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
65429
diff
changeset
|
4456 PyModule_AddIntMacro(m, PACKET_OUTGOING); |
|
add1bc05e426
Merged revisions 85868 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
65429
diff
changeset
|
4457 #endif |
|
add1bc05e426
Merged revisions 85868 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
65429
diff
changeset
|
4458 #ifdef PACKET_LOOPBACK |
|
add1bc05e426
Merged revisions 85868 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
65429
diff
changeset
|
4459 PyModule_AddIntMacro(m, PACKET_LOOPBACK); |
|
add1bc05e426
Merged revisions 85868 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
65429
diff
changeset
|
4460 #endif |
|
add1bc05e426
Merged revisions 85868 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
65429
diff
changeset
|
4461 #ifdef PACKET_FASTROUTE |
|
add1bc05e426
Merged revisions 85868 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
65429
diff
changeset
|
4462 PyModule_AddIntMacro(m, PACKET_FASTROUTE); |
|
16947
b25131bc6ec7
RISCOS changes by dschwertberger.
Guido van Rossum <guido@python.org>
parents:
16472
diff
changeset
|
4463 #endif |
|
11182
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
4464 |
|
44568
305d7d2ce047
Copied doc for reload() from trunk's function.rst to imp.rst
Christian Heimes <christian@cheimes.de>
parents:
44535
diff
changeset
|
4465 #ifdef HAVE_LINUX_TIPC_H |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4466 PyModule_AddIntConstant(m, "AF_TIPC", AF_TIPC); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4467 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4468 /* for addresses */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4469 PyModule_AddIntConstant(m, "TIPC_ADDR_NAMESEQ", TIPC_ADDR_NAMESEQ); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4470 PyModule_AddIntConstant(m, "TIPC_ADDR_NAME", TIPC_ADDR_NAME); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4471 PyModule_AddIntConstant(m, "TIPC_ADDR_ID", TIPC_ADDR_ID); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4472 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4473 PyModule_AddIntConstant(m, "TIPC_ZONE_SCOPE", TIPC_ZONE_SCOPE); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4474 PyModule_AddIntConstant(m, "TIPC_CLUSTER_SCOPE", TIPC_CLUSTER_SCOPE); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4475 PyModule_AddIntConstant(m, "TIPC_NODE_SCOPE", TIPC_NODE_SCOPE); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4476 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4477 /* for setsockopt() */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4478 PyModule_AddIntConstant(m, "SOL_TIPC", SOL_TIPC); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4479 PyModule_AddIntConstant(m, "TIPC_IMPORTANCE", TIPC_IMPORTANCE); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4480 PyModule_AddIntConstant(m, "TIPC_SRC_DROPPABLE", TIPC_SRC_DROPPABLE); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4481 PyModule_AddIntConstant(m, "TIPC_DEST_DROPPABLE", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4482 TIPC_DEST_DROPPABLE); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4483 PyModule_AddIntConstant(m, "TIPC_CONN_TIMEOUT", TIPC_CONN_TIMEOUT); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4484 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4485 PyModule_AddIntConstant(m, "TIPC_LOW_IMPORTANCE", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4486 TIPC_LOW_IMPORTANCE); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4487 PyModule_AddIntConstant(m, "TIPC_MEDIUM_IMPORTANCE", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4488 TIPC_MEDIUM_IMPORTANCE); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4489 PyModule_AddIntConstant(m, "TIPC_HIGH_IMPORTANCE", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4490 TIPC_HIGH_IMPORTANCE); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4491 PyModule_AddIntConstant(m, "TIPC_CRITICAL_IMPORTANCE", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4492 TIPC_CRITICAL_IMPORTANCE); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4493 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4494 /* for subscriptions */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4495 PyModule_AddIntConstant(m, "TIPC_SUB_PORTS", TIPC_SUB_PORTS); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4496 PyModule_AddIntConstant(m, "TIPC_SUB_SERVICE", TIPC_SUB_SERVICE); |
|
44643
d8e4342c145e
Merged revisions 59883-59920 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44568
diff
changeset
|
4497 #ifdef TIPC_SUB_CANCEL |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4498 /* doesn't seem to be available everywhere */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4499 PyModule_AddIntConstant(m, "TIPC_SUB_CANCEL", TIPC_SUB_CANCEL); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4500 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4501 PyModule_AddIntConstant(m, "TIPC_WAIT_FOREVER", TIPC_WAIT_FOREVER); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4502 PyModule_AddIntConstant(m, "TIPC_PUBLISHED", TIPC_PUBLISHED); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4503 PyModule_AddIntConstant(m, "TIPC_WITHDRAWN", TIPC_WITHDRAWN); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4504 PyModule_AddIntConstant(m, "TIPC_SUBSCR_TIMEOUT", TIPC_SUBSCR_TIMEOUT); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4505 PyModule_AddIntConstant(m, "TIPC_CFG_SRV", TIPC_CFG_SRV); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4506 PyModule_AddIntConstant(m, "TIPC_TOP_SRV", TIPC_TOP_SRV); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4507 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4508 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4509 /* Socket types */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4510 PyModule_AddIntConstant(m, "SOCK_STREAM", SOCK_STREAM); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4511 PyModule_AddIntConstant(m, "SOCK_DGRAM", SOCK_DGRAM); |
|
8823
f2a4a2b60860
Changes for BeOS, QNX and long long, by Chris Herborth.
Guido van Rossum <guido@python.org>
parents:
8821
diff
changeset
|
4512 /* We have incomplete socket support. */ |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4513 PyModule_AddIntConstant(m, "SOCK_RAW", SOCK_RAW); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4514 PyModule_AddIntConstant(m, "SOCK_SEQPACKET", SOCK_SEQPACKET); |
|
26597
7ddea4dfa519
Patch #650422: Use Posix AF_ constants instead of PF_ ones.
Martin v. Löwis <martin@v.loewis.de>
parents:
26551
diff
changeset
|
4515 #if defined(SOCK_RDM) |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4516 PyModule_AddIntConstant(m, "SOCK_RDM", SOCK_RDM); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4517 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4518 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4519 #ifdef SO_DEBUG |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4520 PyModule_AddIntConstant(m, "SO_DEBUG", SO_DEBUG); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4521 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4522 #ifdef SO_ACCEPTCONN |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4523 PyModule_AddIntConstant(m, "SO_ACCEPTCONN", SO_ACCEPTCONN); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4524 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4525 #ifdef SO_REUSEADDR |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4526 PyModule_AddIntConstant(m, "SO_REUSEADDR", SO_REUSEADDR); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4527 #endif |
|
32578
21fd6e62cd27
[Patch #982665 ] add SO_EXCLUSIVEADDRUSE constant
Andrew M. Kuchling <amk@amk.ca>
parents:
32521
diff
changeset
|
4528 #ifdef SO_EXCLUSIVEADDRUSE |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4529 PyModule_AddIntConstant(m, "SO_EXCLUSIVEADDRUSE", SO_EXCLUSIVEADDRUSE); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4530 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4531 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4532 #ifdef SO_KEEPALIVE |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4533 PyModule_AddIntConstant(m, "SO_KEEPALIVE", SO_KEEPALIVE); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4534 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4535 #ifdef SO_DONTROUTE |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4536 PyModule_AddIntConstant(m, "SO_DONTROUTE", SO_DONTROUTE); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4537 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4538 #ifdef SO_BROADCAST |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4539 PyModule_AddIntConstant(m, "SO_BROADCAST", SO_BROADCAST); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4540 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4541 #ifdef SO_USELOOPBACK |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4542 PyModule_AddIntConstant(m, "SO_USELOOPBACK", SO_USELOOPBACK); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4543 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4544 #ifdef SO_LINGER |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4545 PyModule_AddIntConstant(m, "SO_LINGER", SO_LINGER); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4546 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4547 #ifdef SO_OOBINLINE |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4548 PyModule_AddIntConstant(m, "SO_OOBINLINE", SO_OOBINLINE); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4549 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4550 #ifdef SO_REUSEPORT |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4551 PyModule_AddIntConstant(m, "SO_REUSEPORT", SO_REUSEPORT); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4552 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4553 #ifdef SO_SNDBUF |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4554 PyModule_AddIntConstant(m, "SO_SNDBUF", SO_SNDBUF); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4555 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4556 #ifdef SO_RCVBUF |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4557 PyModule_AddIntConstant(m, "SO_RCVBUF", SO_RCVBUF); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4558 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4559 #ifdef SO_SNDLOWAT |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4560 PyModule_AddIntConstant(m, "SO_SNDLOWAT", SO_SNDLOWAT); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4561 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4562 #ifdef SO_RCVLOWAT |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4563 PyModule_AddIntConstant(m, "SO_RCVLOWAT", SO_RCVLOWAT); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4564 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4565 #ifdef SO_SNDTIMEO |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4566 PyModule_AddIntConstant(m, "SO_SNDTIMEO", SO_SNDTIMEO); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4567 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4568 #ifdef SO_RCVTIMEO |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4569 PyModule_AddIntConstant(m, "SO_RCVTIMEO", SO_RCVTIMEO); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4570 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4571 #ifdef SO_ERROR |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4572 PyModule_AddIntConstant(m, "SO_ERROR", SO_ERROR); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4573 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4574 #ifdef SO_TYPE |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4575 PyModule_AddIntConstant(m, "SO_TYPE", SO_TYPE); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4576 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4577 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4578 /* Maximum number of connections for "listen" */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4579 #ifdef SOMAXCONN |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4580 PyModule_AddIntConstant(m, "SOMAXCONN", SOMAXCONN); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4581 #else |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4582 PyModule_AddIntConstant(m, "SOMAXCONN", 5); /* Common value */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4583 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4584 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4585 /* Flags for send, recv */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4586 #ifdef MSG_OOB |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4587 PyModule_AddIntConstant(m, "MSG_OOB", MSG_OOB); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4588 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4589 #ifdef MSG_PEEK |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4590 PyModule_AddIntConstant(m, "MSG_PEEK", MSG_PEEK); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4591 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4592 #ifdef MSG_DONTROUTE |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4593 PyModule_AddIntConstant(m, "MSG_DONTROUTE", MSG_DONTROUTE); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4594 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4595 #ifdef MSG_DONTWAIT |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4596 PyModule_AddIntConstant(m, "MSG_DONTWAIT", MSG_DONTWAIT); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4597 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4598 #ifdef MSG_EOR |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4599 PyModule_AddIntConstant(m, "MSG_EOR", MSG_EOR); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4600 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4601 #ifdef MSG_TRUNC |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4602 PyModule_AddIntConstant(m, "MSG_TRUNC", MSG_TRUNC); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4603 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4604 #ifdef MSG_CTRUNC |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4605 PyModule_AddIntConstant(m, "MSG_CTRUNC", MSG_CTRUNC); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4606 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4607 #ifdef MSG_WAITALL |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4608 PyModule_AddIntConstant(m, "MSG_WAITALL", MSG_WAITALL); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4609 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4610 #ifdef MSG_BTAG |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4611 PyModule_AddIntConstant(m, "MSG_BTAG", MSG_BTAG); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4612 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4613 #ifdef MSG_ETAG |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4614 PyModule_AddIntConstant(m, "MSG_ETAG", MSG_ETAG); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4615 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4616 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4617 /* Protocol level and numbers, usable for [gs]etsockopt */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4618 #ifdef SOL_SOCKET |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4619 PyModule_AddIntConstant(m, "SOL_SOCKET", SOL_SOCKET); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4620 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4621 #ifdef SOL_IP |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4622 PyModule_AddIntConstant(m, "SOL_IP", SOL_IP); |
|
11182
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
4623 #else |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4624 PyModule_AddIntConstant(m, "SOL_IP", 0); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4625 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4626 #ifdef SOL_IPX |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4627 PyModule_AddIntConstant(m, "SOL_IPX", SOL_IPX); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4628 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4629 #ifdef SOL_AX25 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4630 PyModule_AddIntConstant(m, "SOL_AX25", SOL_AX25); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4631 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4632 #ifdef SOL_ATALK |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4633 PyModule_AddIntConstant(m, "SOL_ATALK", SOL_ATALK); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4634 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4635 #ifdef SOL_NETROM |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4636 PyModule_AddIntConstant(m, "SOL_NETROM", SOL_NETROM); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4637 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4638 #ifdef SOL_ROSE |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4639 PyModule_AddIntConstant(m, "SOL_ROSE", SOL_ROSE); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4640 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4641 #ifdef SOL_TCP |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4642 PyModule_AddIntConstant(m, "SOL_TCP", SOL_TCP); |
|
11182
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
4643 #else |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4644 PyModule_AddIntConstant(m, "SOL_TCP", 6); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4645 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4646 #ifdef SOL_UDP |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4647 PyModule_AddIntConstant(m, "SOL_UDP", SOL_UDP); |
|
11182
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
4648 #else |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4649 PyModule_AddIntConstant(m, "SOL_UDP", 17); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4650 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4651 #ifdef IPPROTO_IP |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4652 PyModule_AddIntConstant(m, "IPPROTO_IP", IPPROTO_IP); |
|
8439
534602746079
Some systems (e.g. Linux) use enums for some symbols (like IPPROTO_IP)
Guido van Rossum <guido@python.org>
parents:
7942
diff
changeset
|
4653 #else |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4654 PyModule_AddIntConstant(m, "IPPROTO_IP", 0); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4655 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4656 #ifdef IPPROTO_HOPOPTS |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4657 PyModule_AddIntConstant(m, "IPPROTO_HOPOPTS", IPPROTO_HOPOPTS); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4658 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4659 #ifdef IPPROTO_ICMP |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4660 PyModule_AddIntConstant(m, "IPPROTO_ICMP", IPPROTO_ICMP); |
|
8439
534602746079
Some systems (e.g. Linux) use enums for some symbols (like IPPROTO_IP)
Guido van Rossum <guido@python.org>
parents:
7942
diff
changeset
|
4661 #else |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4662 PyModule_AddIntConstant(m, "IPPROTO_ICMP", 1); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4663 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4664 #ifdef IPPROTO_IGMP |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4665 PyModule_AddIntConstant(m, "IPPROTO_IGMP", IPPROTO_IGMP); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4666 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4667 #ifdef IPPROTO_GGP |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4668 PyModule_AddIntConstant(m, "IPPROTO_GGP", IPPROTO_GGP); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4669 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4670 #ifdef IPPROTO_IPV4 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4671 PyModule_AddIntConstant(m, "IPPROTO_IPV4", IPPROTO_IPV4); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4672 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4673 #ifdef IPPROTO_IPV6 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4674 PyModule_AddIntConstant(m, "IPPROTO_IPV6", IPPROTO_IPV6); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4675 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4676 #ifdef IPPROTO_IPIP |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4677 PyModule_AddIntConstant(m, "IPPROTO_IPIP", IPPROTO_IPIP); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4678 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4679 #ifdef IPPROTO_TCP |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4680 PyModule_AddIntConstant(m, "IPPROTO_TCP", IPPROTO_TCP); |
|
8439
534602746079
Some systems (e.g. Linux) use enums for some symbols (like IPPROTO_IP)
Guido van Rossum <guido@python.org>
parents:
7942
diff
changeset
|
4681 #else |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4682 PyModule_AddIntConstant(m, "IPPROTO_TCP", 6); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4683 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4684 #ifdef IPPROTO_EGP |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4685 PyModule_AddIntConstant(m, "IPPROTO_EGP", IPPROTO_EGP); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4686 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4687 #ifdef IPPROTO_PUP |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4688 PyModule_AddIntConstant(m, "IPPROTO_PUP", IPPROTO_PUP); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4689 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4690 #ifdef IPPROTO_UDP |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4691 PyModule_AddIntConstant(m, "IPPROTO_UDP", IPPROTO_UDP); |
|
8439
534602746079
Some systems (e.g. Linux) use enums for some symbols (like IPPROTO_IP)
Guido van Rossum <guido@python.org>
parents:
7942
diff
changeset
|
4692 #else |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4693 PyModule_AddIntConstant(m, "IPPROTO_UDP", 17); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4694 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4695 #ifdef IPPROTO_IDP |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4696 PyModule_AddIntConstant(m, "IPPROTO_IDP", IPPROTO_IDP); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4697 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4698 #ifdef IPPROTO_HELLO |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4699 PyModule_AddIntConstant(m, "IPPROTO_HELLO", IPPROTO_HELLO); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4700 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4701 #ifdef IPPROTO_ND |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4702 PyModule_AddIntConstant(m, "IPPROTO_ND", IPPROTO_ND); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4703 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4704 #ifdef IPPROTO_TP |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4705 PyModule_AddIntConstant(m, "IPPROTO_TP", IPPROTO_TP); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4706 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4707 #ifdef IPPROTO_IPV6 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4708 PyModule_AddIntConstant(m, "IPPROTO_IPV6", IPPROTO_IPV6); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4709 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4710 #ifdef IPPROTO_ROUTING |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4711 PyModule_AddIntConstant(m, "IPPROTO_ROUTING", IPPROTO_ROUTING); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4712 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4713 #ifdef IPPROTO_FRAGMENT |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4714 PyModule_AddIntConstant(m, "IPPROTO_FRAGMENT", IPPROTO_FRAGMENT); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4715 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4716 #ifdef IPPROTO_RSVP |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4717 PyModule_AddIntConstant(m, "IPPROTO_RSVP", IPPROTO_RSVP); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4718 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4719 #ifdef IPPROTO_GRE |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4720 PyModule_AddIntConstant(m, "IPPROTO_GRE", IPPROTO_GRE); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4721 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4722 #ifdef IPPROTO_ESP |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4723 PyModule_AddIntConstant(m, "IPPROTO_ESP", IPPROTO_ESP); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4724 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4725 #ifdef IPPROTO_AH |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4726 PyModule_AddIntConstant(m, "IPPROTO_AH", IPPROTO_AH); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4727 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4728 #ifdef IPPROTO_MOBILE |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4729 PyModule_AddIntConstant(m, "IPPROTO_MOBILE", IPPROTO_MOBILE); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4730 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4731 #ifdef IPPROTO_ICMPV6 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4732 PyModule_AddIntConstant(m, "IPPROTO_ICMPV6", IPPROTO_ICMPV6); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4733 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4734 #ifdef IPPROTO_NONE |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4735 PyModule_AddIntConstant(m, "IPPROTO_NONE", IPPROTO_NONE); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4736 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4737 #ifdef IPPROTO_DSTOPTS |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4738 PyModule_AddIntConstant(m, "IPPROTO_DSTOPTS", IPPROTO_DSTOPTS); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4739 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4740 #ifdef IPPROTO_XTP |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4741 PyModule_AddIntConstant(m, "IPPROTO_XTP", IPPROTO_XTP); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4742 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4743 #ifdef IPPROTO_EON |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4744 PyModule_AddIntConstant(m, "IPPROTO_EON", IPPROTO_EON); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4745 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4746 #ifdef IPPROTO_PIM |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4747 PyModule_AddIntConstant(m, "IPPROTO_PIM", IPPROTO_PIM); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4748 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4749 #ifdef IPPROTO_IPCOMP |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4750 PyModule_AddIntConstant(m, "IPPROTO_IPCOMP", IPPROTO_IPCOMP); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4751 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4752 #ifdef IPPROTO_VRRP |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4753 PyModule_AddIntConstant(m, "IPPROTO_VRRP", IPPROTO_VRRP); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4754 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4755 #ifdef IPPROTO_BIP |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4756 PyModule_AddIntConstant(m, "IPPROTO_BIP", IPPROTO_BIP); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4757 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4758 /**/ |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4759 #ifdef IPPROTO_RAW |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4760 PyModule_AddIntConstant(m, "IPPROTO_RAW", IPPROTO_RAW); |
|
8439
534602746079
Some systems (e.g. Linux) use enums for some symbols (like IPPROTO_IP)
Guido van Rossum <guido@python.org>
parents:
7942
diff
changeset
|
4761 #else |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4762 PyModule_AddIntConstant(m, "IPPROTO_RAW", 255); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4763 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4764 #ifdef IPPROTO_MAX |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4765 PyModule_AddIntConstant(m, "IPPROTO_MAX", IPPROTO_MAX); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4766 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4767 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4768 /* Some port configuration */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4769 #ifdef IPPORT_RESERVED |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4770 PyModule_AddIntConstant(m, "IPPORT_RESERVED", IPPORT_RESERVED); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4771 #else |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4772 PyModule_AddIntConstant(m, "IPPORT_RESERVED", 1024); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4773 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4774 #ifdef IPPORT_USERRESERVED |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4775 PyModule_AddIntConstant(m, "IPPORT_USERRESERVED", IPPORT_USERRESERVED); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4776 #else |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4777 PyModule_AddIntConstant(m, "IPPORT_USERRESERVED", 5000); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4778 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4779 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4780 /* Some reserved IP v.4 addresses */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4781 #ifdef INADDR_ANY |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4782 PyModule_AddIntConstant(m, "INADDR_ANY", INADDR_ANY); |
| 2369 | 4783 #else |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4784 PyModule_AddIntConstant(m, "INADDR_ANY", 0x00000000); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4785 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4786 #ifdef INADDR_BROADCAST |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4787 PyModule_AddIntConstant(m, "INADDR_BROADCAST", INADDR_BROADCAST); |
| 2369 | 4788 #else |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4789 PyModule_AddIntConstant(m, "INADDR_BROADCAST", 0xffffffff); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4790 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4791 #ifdef INADDR_LOOPBACK |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4792 PyModule_AddIntConstant(m, "INADDR_LOOPBACK", INADDR_LOOPBACK); |
| 2369 | 4793 #else |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4794 PyModule_AddIntConstant(m, "INADDR_LOOPBACK", 0x7F000001); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4795 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4796 #ifdef INADDR_UNSPEC_GROUP |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4797 PyModule_AddIntConstant(m, "INADDR_UNSPEC_GROUP", INADDR_UNSPEC_GROUP); |
| 2369 | 4798 #else |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4799 PyModule_AddIntConstant(m, "INADDR_UNSPEC_GROUP", 0xe0000000); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4800 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4801 #ifdef INADDR_ALLHOSTS_GROUP |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4802 PyModule_AddIntConstant(m, "INADDR_ALLHOSTS_GROUP", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4803 INADDR_ALLHOSTS_GROUP); |
| 2369 | 4804 #else |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4805 PyModule_AddIntConstant(m, "INADDR_ALLHOSTS_GROUP", 0xe0000001); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4806 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4807 #ifdef INADDR_MAX_LOCAL_GROUP |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4808 PyModule_AddIntConstant(m, "INADDR_MAX_LOCAL_GROUP", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4809 INADDR_MAX_LOCAL_GROUP); |
| 2369 | 4810 #else |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4811 PyModule_AddIntConstant(m, "INADDR_MAX_LOCAL_GROUP", 0xe00000ff); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4812 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4813 #ifdef INADDR_NONE |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4814 PyModule_AddIntConstant(m, "INADDR_NONE", INADDR_NONE); |
| 2369 | 4815 #else |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4816 PyModule_AddIntConstant(m, "INADDR_NONE", 0xffffffff); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4817 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4818 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4819 /* IPv4 [gs]etsockopt options */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4820 #ifdef IP_OPTIONS |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4821 PyModule_AddIntConstant(m, "IP_OPTIONS", IP_OPTIONS); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4822 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4823 #ifdef IP_HDRINCL |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4824 PyModule_AddIntConstant(m, "IP_HDRINCL", IP_HDRINCL); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4825 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4826 #ifdef IP_TOS |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4827 PyModule_AddIntConstant(m, "IP_TOS", IP_TOS); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4828 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4829 #ifdef IP_TTL |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4830 PyModule_AddIntConstant(m, "IP_TTL", IP_TTL); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4831 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4832 #ifdef IP_RECVOPTS |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4833 PyModule_AddIntConstant(m, "IP_RECVOPTS", IP_RECVOPTS); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4834 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4835 #ifdef IP_RECVRETOPTS |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4836 PyModule_AddIntConstant(m, "IP_RECVRETOPTS", IP_RECVRETOPTS); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4837 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4838 #ifdef IP_RECVDSTADDR |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4839 PyModule_AddIntConstant(m, "IP_RECVDSTADDR", IP_RECVDSTADDR); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4840 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4841 #ifdef IP_RETOPTS |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4842 PyModule_AddIntConstant(m, "IP_RETOPTS", IP_RETOPTS); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4843 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4844 #ifdef IP_MULTICAST_IF |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4845 PyModule_AddIntConstant(m, "IP_MULTICAST_IF", IP_MULTICAST_IF); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4846 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4847 #ifdef IP_MULTICAST_TTL |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4848 PyModule_AddIntConstant(m, "IP_MULTICAST_TTL", IP_MULTICAST_TTL); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4849 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4850 #ifdef IP_MULTICAST_LOOP |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4851 PyModule_AddIntConstant(m, "IP_MULTICAST_LOOP", IP_MULTICAST_LOOP); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4852 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4853 #ifdef IP_ADD_MEMBERSHIP |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4854 PyModule_AddIntConstant(m, "IP_ADD_MEMBERSHIP", IP_ADD_MEMBERSHIP); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4855 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4856 #ifdef IP_DROP_MEMBERSHIP |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4857 PyModule_AddIntConstant(m, "IP_DROP_MEMBERSHIP", IP_DROP_MEMBERSHIP); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4858 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4859 #ifdef IP_DEFAULT_MULTICAST_TTL |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4860 PyModule_AddIntConstant(m, "IP_DEFAULT_MULTICAST_TTL", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4861 IP_DEFAULT_MULTICAST_TTL); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4862 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4863 #ifdef IP_DEFAULT_MULTICAST_LOOP |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4864 PyModule_AddIntConstant(m, "IP_DEFAULT_MULTICAST_LOOP", |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4865 IP_DEFAULT_MULTICAST_LOOP); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4866 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4867 #ifdef IP_MAX_MEMBERSHIPS |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4868 PyModule_AddIntConstant(m, "IP_MAX_MEMBERSHIPS", IP_MAX_MEMBERSHIPS); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4869 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4870 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4871 /* IPv6 [gs]etsockopt options, defined in RFC2553 */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4872 #ifdef IPV6_JOIN_GROUP |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4873 PyModule_AddIntConstant(m, "IPV6_JOIN_GROUP", IPV6_JOIN_GROUP); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4874 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4875 #ifdef IPV6_LEAVE_GROUP |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4876 PyModule_AddIntConstant(m, "IPV6_LEAVE_GROUP", IPV6_LEAVE_GROUP); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4877 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4878 #ifdef IPV6_MULTICAST_HOPS |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4879 PyModule_AddIntConstant(m, "IPV6_MULTICAST_HOPS", IPV6_MULTICAST_HOPS); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4880 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4881 #ifdef IPV6_MULTICAST_IF |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4882 PyModule_AddIntConstant(m, "IPV6_MULTICAST_IF", IPV6_MULTICAST_IF); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4883 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4884 #ifdef IPV6_MULTICAST_LOOP |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4885 PyModule_AddIntConstant(m, "IPV6_MULTICAST_LOOP", IPV6_MULTICAST_LOOP); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4886 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4887 #ifdef IPV6_UNICAST_HOPS |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4888 PyModule_AddIntConstant(m, "IPV6_UNICAST_HOPS", IPV6_UNICAST_HOPS); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4889 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4890 /* Additional IPV6 socket options, defined in RFC 3493 */ |
|
31274
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
4891 #ifdef IPV6_V6ONLY |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4892 PyModule_AddIntConstant(m, "IPV6_V6ONLY", IPV6_V6ONLY); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4893 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4894 /* Advanced IPV6 socket options, from RFC 3542 */ |
|
31274
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
4895 #ifdef IPV6_CHECKSUM |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4896 PyModule_AddIntConstant(m, "IPV6_CHECKSUM", IPV6_CHECKSUM); |
|
31274
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
4897 #endif |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
4898 #ifdef IPV6_DONTFRAG |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4899 PyModule_AddIntConstant(m, "IPV6_DONTFRAG", IPV6_DONTFRAG); |
|
31274
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
4900 #endif |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
4901 #ifdef IPV6_DSTOPTS |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4902 PyModule_AddIntConstant(m, "IPV6_DSTOPTS", IPV6_DSTOPTS); |
|
31274
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
4903 #endif |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
4904 #ifdef IPV6_HOPLIMIT |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4905 PyModule_AddIntConstant(m, "IPV6_HOPLIMIT", IPV6_HOPLIMIT); |
|
31274
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
4906 #endif |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
4907 #ifdef IPV6_HOPOPTS |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4908 PyModule_AddIntConstant(m, "IPV6_HOPOPTS", IPV6_HOPOPTS); |
|
31274
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
4909 #endif |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
4910 #ifdef IPV6_NEXTHOP |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4911 PyModule_AddIntConstant(m, "IPV6_NEXTHOP", IPV6_NEXTHOP); |
|
31274
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
4912 #endif |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
4913 #ifdef IPV6_PATHMTU |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4914 PyModule_AddIntConstant(m, "IPV6_PATHMTU", IPV6_PATHMTU); |
|
31274
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
4915 #endif |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
4916 #ifdef IPV6_PKTINFO |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4917 PyModule_AddIntConstant(m, "IPV6_PKTINFO", IPV6_PKTINFO); |
|
31274
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
4918 #endif |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
4919 #ifdef IPV6_RECVDSTOPTS |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4920 PyModule_AddIntConstant(m, "IPV6_RECVDSTOPTS", IPV6_RECVDSTOPTS); |
|
31274
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
4921 #endif |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
4922 #ifdef IPV6_RECVHOPLIMIT |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4923 PyModule_AddIntConstant(m, "IPV6_RECVHOPLIMIT", IPV6_RECVHOPLIMIT); |
|
31274
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
4924 #endif |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
4925 #ifdef IPV6_RECVHOPOPTS |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4926 PyModule_AddIntConstant(m, "IPV6_RECVHOPOPTS", IPV6_RECVHOPOPTS); |
|
31274
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
4927 #endif |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
4928 #ifdef IPV6_RECVPKTINFO |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4929 PyModule_AddIntConstant(m, "IPV6_RECVPKTINFO", IPV6_RECVPKTINFO); |
|
31274
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
4930 #endif |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
4931 #ifdef IPV6_RECVRTHDR |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4932 PyModule_AddIntConstant(m, "IPV6_RECVRTHDR", IPV6_RECVRTHDR); |
|
31274
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
4933 #endif |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
4934 #ifdef IPV6_RECVTCLASS |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4935 PyModule_AddIntConstant(m, "IPV6_RECVTCLASS", IPV6_RECVTCLASS); |
|
31274
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
4936 #endif |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
4937 #ifdef IPV6_RTHDR |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4938 PyModule_AddIntConstant(m, "IPV6_RTHDR", IPV6_RTHDR); |
|
31274
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
4939 #endif |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
4940 #ifdef IPV6_RTHDRDSTOPTS |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4941 PyModule_AddIntConstant(m, "IPV6_RTHDRDSTOPTS", IPV6_RTHDRDSTOPTS); |
|
31274
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
4942 #endif |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
4943 #ifdef IPV6_RTHDR_TYPE_0 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4944 PyModule_AddIntConstant(m, "IPV6_RTHDR_TYPE_0", IPV6_RTHDR_TYPE_0); |
|
31274
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
4945 #endif |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
4946 #ifdef IPV6_RECVPATHMTU |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4947 PyModule_AddIntConstant(m, "IPV6_RECVPATHMTU", IPV6_RECVPATHMTU); |
|
31274
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
4948 #endif |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
4949 #ifdef IPV6_TCLASS |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4950 PyModule_AddIntConstant(m, "IPV6_TCLASS", IPV6_TCLASS); |
|
31274
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
4951 #endif |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
4952 #ifdef IPV6_USE_MIN_MTU |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4953 PyModule_AddIntConstant(m, "IPV6_USE_MIN_MTU", IPV6_USE_MIN_MTU); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4954 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4955 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4956 /* TCP options */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4957 #ifdef TCP_NODELAY |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4958 PyModule_AddIntConstant(m, "TCP_NODELAY", TCP_NODELAY); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4959 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4960 #ifdef TCP_MAXSEG |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4961 PyModule_AddIntConstant(m, "TCP_MAXSEG", TCP_MAXSEG); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4962 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4963 #ifdef TCP_CORK |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4964 PyModule_AddIntConstant(m, "TCP_CORK", TCP_CORK); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4965 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4966 #ifdef TCP_KEEPIDLE |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4967 PyModule_AddIntConstant(m, "TCP_KEEPIDLE", TCP_KEEPIDLE); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4968 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4969 #ifdef TCP_KEEPINTVL |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4970 PyModule_AddIntConstant(m, "TCP_KEEPINTVL", TCP_KEEPINTVL); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4971 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4972 #ifdef TCP_KEEPCNT |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4973 PyModule_AddIntConstant(m, "TCP_KEEPCNT", TCP_KEEPCNT); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4974 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4975 #ifdef TCP_SYNCNT |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4976 PyModule_AddIntConstant(m, "TCP_SYNCNT", TCP_SYNCNT); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4977 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4978 #ifdef TCP_LINGER2 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4979 PyModule_AddIntConstant(m, "TCP_LINGER2", TCP_LINGER2); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4980 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4981 #ifdef TCP_DEFER_ACCEPT |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4982 PyModule_AddIntConstant(m, "TCP_DEFER_ACCEPT", TCP_DEFER_ACCEPT); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4983 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4984 #ifdef TCP_WINDOW_CLAMP |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4985 PyModule_AddIntConstant(m, "TCP_WINDOW_CLAMP", TCP_WINDOW_CLAMP); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4986 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4987 #ifdef TCP_INFO |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4988 PyModule_AddIntConstant(m, "TCP_INFO", TCP_INFO); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4989 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4990 #ifdef TCP_QUICKACK |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4991 PyModule_AddIntConstant(m, "TCP_QUICKACK", TCP_QUICKACK); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4992 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4993 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4994 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4995 /* IPX options */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4996 #ifdef IPX_TYPE |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4997 PyModule_AddIntConstant(m, "IPX_TYPE", IPX_TYPE); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4998 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
4999 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5000 /* get{addr,name}info parameters */ |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5001 #ifdef EAI_ADDRFAMILY |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5002 PyModule_AddIntConstant(m, "EAI_ADDRFAMILY", EAI_ADDRFAMILY); |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5003 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5004 #ifdef EAI_AGAIN |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5005 PyModule_AddIntConstant(m, "EAI_AGAIN", EAI_AGAIN); |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5006 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5007 #ifdef EAI_BADFLAGS |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5008 PyModule_AddIntConstant(m, "EAI_BADFLAGS", EAI_BADFLAGS); |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5009 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5010 #ifdef EAI_FAIL |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5011 PyModule_AddIntConstant(m, "EAI_FAIL", EAI_FAIL); |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5012 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5013 #ifdef EAI_FAMILY |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5014 PyModule_AddIntConstant(m, "EAI_FAMILY", EAI_FAMILY); |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5015 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5016 #ifdef EAI_MEMORY |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5017 PyModule_AddIntConstant(m, "EAI_MEMORY", EAI_MEMORY); |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5018 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5019 #ifdef EAI_NODATA |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5020 PyModule_AddIntConstant(m, "EAI_NODATA", EAI_NODATA); |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5021 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5022 #ifdef EAI_NONAME |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5023 PyModule_AddIntConstant(m, "EAI_NONAME", EAI_NONAME); |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5024 #endif |
|
31274
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
5025 #ifdef EAI_OVERFLOW |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5026 PyModule_AddIntConstant(m, "EAI_OVERFLOW", EAI_OVERFLOW); |
|
31274
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
5027 #endif |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5028 #ifdef EAI_SERVICE |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5029 PyModule_AddIntConstant(m, "EAI_SERVICE", EAI_SERVICE); |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5030 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5031 #ifdef EAI_SOCKTYPE |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5032 PyModule_AddIntConstant(m, "EAI_SOCKTYPE", EAI_SOCKTYPE); |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5033 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5034 #ifdef EAI_SYSTEM |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5035 PyModule_AddIntConstant(m, "EAI_SYSTEM", EAI_SYSTEM); |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5036 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5037 #ifdef EAI_BADHINTS |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5038 PyModule_AddIntConstant(m, "EAI_BADHINTS", EAI_BADHINTS); |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5039 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5040 #ifdef EAI_PROTOCOL |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5041 PyModule_AddIntConstant(m, "EAI_PROTOCOL", EAI_PROTOCOL); |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5042 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5043 #ifdef EAI_MAX |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5044 PyModule_AddIntConstant(m, "EAI_MAX", EAI_MAX); |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5045 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5046 #ifdef AI_PASSIVE |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5047 PyModule_AddIntConstant(m, "AI_PASSIVE", AI_PASSIVE); |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5048 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5049 #ifdef AI_CANONNAME |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5050 PyModule_AddIntConstant(m, "AI_CANONNAME", AI_CANONNAME); |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5051 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5052 #ifdef AI_NUMERICHOST |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5053 PyModule_AddIntConstant(m, "AI_NUMERICHOST", AI_NUMERICHOST); |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5054 #endif |
|
31274
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
5055 #ifdef AI_NUMERICSERV |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5056 PyModule_AddIntConstant(m, "AI_NUMERICSERV", AI_NUMERICSERV); |
|
31274
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
5057 #endif |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5058 #ifdef AI_MASK |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5059 PyModule_AddIntConstant(m, "AI_MASK", AI_MASK); |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5060 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5061 #ifdef AI_ALL |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5062 PyModule_AddIntConstant(m, "AI_ALL", AI_ALL); |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5063 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5064 #ifdef AI_V4MAPPED_CFG |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5065 PyModule_AddIntConstant(m, "AI_V4MAPPED_CFG", AI_V4MAPPED_CFG); |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5066 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5067 #ifdef AI_ADDRCONFIG |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5068 PyModule_AddIntConstant(m, "AI_ADDRCONFIG", AI_ADDRCONFIG); |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5069 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5070 #ifdef AI_V4MAPPED |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5071 PyModule_AddIntConstant(m, "AI_V4MAPPED", AI_V4MAPPED); |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5072 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5073 #ifdef AI_DEFAULT |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5074 PyModule_AddIntConstant(m, "AI_DEFAULT", AI_DEFAULT); |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5075 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5076 #ifdef NI_MAXHOST |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5077 PyModule_AddIntConstant(m, "NI_MAXHOST", NI_MAXHOST); |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5078 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5079 #ifdef NI_MAXSERV |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5080 PyModule_AddIntConstant(m, "NI_MAXSERV", NI_MAXSERV); |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5081 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5082 #ifdef NI_NOFQDN |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5083 PyModule_AddIntConstant(m, "NI_NOFQDN", NI_NOFQDN); |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5084 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5085 #ifdef NI_NUMERICHOST |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5086 PyModule_AddIntConstant(m, "NI_NUMERICHOST", NI_NUMERICHOST); |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5087 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5088 #ifdef NI_NAMEREQD |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5089 PyModule_AddIntConstant(m, "NI_NAMEREQD", NI_NAMEREQD); |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5090 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5091 #ifdef NI_NUMERICSERV |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5092 PyModule_AddIntConstant(m, "NI_NUMERICSERV", NI_NUMERICSERV); |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5093 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5094 #ifdef NI_DGRAM |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5095 PyModule_AddIntConstant(m, "NI_DGRAM", NI_DGRAM); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5096 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5097 |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5098 /* shutdown() parameters */ |
|
31027
bf038986cb8f
Patch #849595: Add socket.shutdown() constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
30978
diff
changeset
|
5099 #ifdef SHUT_RD |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5100 PyModule_AddIntConstant(m, "SHUT_RD", SHUT_RD); |
|
31027
bf038986cb8f
Patch #849595: Add socket.shutdown() constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
30978
diff
changeset
|
5101 #elif defined(SD_RECEIVE) |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5102 PyModule_AddIntConstant(m, "SHUT_RD", SD_RECEIVE); |
|
31027
bf038986cb8f
Patch #849595: Add socket.shutdown() constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
30978
diff
changeset
|
5103 #else |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5104 PyModule_AddIntConstant(m, "SHUT_RD", 0); |
|
31027
bf038986cb8f
Patch #849595: Add socket.shutdown() constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
30978
diff
changeset
|
5105 #endif |
|
bf038986cb8f
Patch #849595: Add socket.shutdown() constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
30978
diff
changeset
|
5106 #ifdef SHUT_WR |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5107 PyModule_AddIntConstant(m, "SHUT_WR", SHUT_WR); |
|
31027
bf038986cb8f
Patch #849595: Add socket.shutdown() constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
30978
diff
changeset
|
5108 #elif defined(SD_SEND) |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5109 PyModule_AddIntConstant(m, "SHUT_WR", SD_SEND); |
|
31027
bf038986cb8f
Patch #849595: Add socket.shutdown() constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
30978
diff
changeset
|
5110 #else |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5111 PyModule_AddIntConstant(m, "SHUT_WR", 1); |
|
31027
bf038986cb8f
Patch #849595: Add socket.shutdown() constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
30978
diff
changeset
|
5112 #endif |
|
bf038986cb8f
Patch #849595: Add socket.shutdown() constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
30978
diff
changeset
|
5113 #ifdef SHUT_RDWR |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5114 PyModule_AddIntConstant(m, "SHUT_RDWR", SHUT_RDWR); |
|
31027
bf038986cb8f
Patch #849595: Add socket.shutdown() constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
30978
diff
changeset
|
5115 #elif defined(SD_BOTH) |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5116 PyModule_AddIntConstant(m, "SHUT_RDWR", SD_BOTH); |
|
31027
bf038986cb8f
Patch #849595: Add socket.shutdown() constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
30978
diff
changeset
|
5117 #else |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5118 PyModule_AddIntConstant(m, "SHUT_RDWR", 2); |
|
31027
bf038986cb8f
Patch #849595: Add socket.shutdown() constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
30978
diff
changeset
|
5119 #endif |
|
bf038986cb8f
Patch #849595: Add socket.shutdown() constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
30978
diff
changeset
|
5120 |
|
44535
420fe6d7d5f4
Merged revisions 59703-59773 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44351
diff
changeset
|
5121 #ifdef SIO_RCVALL |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5122 { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5123 PyObject *tmp; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5124 tmp = PyLong_FromUnsignedLong(SIO_RCVALL); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5125 if (tmp == NULL) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5126 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5127 PyModule_AddObject(m, "SIO_RCVALL", tmp); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5128 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5129 PyModule_AddIntConstant(m, "RCVALL_OFF", RCVALL_OFF); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5130 PyModule_AddIntConstant(m, "RCVALL_ON", RCVALL_ON); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5131 PyModule_AddIntConstant(m, "RCVALL_SOCKETLEVELONLY", RCVALL_SOCKETLEVELONLY); |
|
47663
92b79b6d1a3b
Slowly apply part of #2065: py3k can be compiled with VS8.0
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47583
diff
changeset
|
5132 #ifdef RCVALL_IPLEVEL |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5133 PyModule_AddIntConstant(m, "RCVALL_IPLEVEL", RCVALL_IPLEVEL); |
|
47663
92b79b6d1a3b
Slowly apply part of #2065: py3k can be compiled with VS8.0
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47583
diff
changeset
|
5134 #endif |
|
92b79b6d1a3b
Slowly apply part of #2065: py3k can be compiled with VS8.0
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47583
diff
changeset
|
5135 #ifdef RCVALL_MAX |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5136 PyModule_AddIntConstant(m, "RCVALL_MAX", RCVALL_MAX); |
|
47663
92b79b6d1a3b
Slowly apply part of #2065: py3k can be compiled with VS8.0
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47583
diff
changeset
|
5137 #endif |
|
44535
420fe6d7d5f4
Merged revisions 59703-59773 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44351
diff
changeset
|
5138 #endif /* _MSTCPIP_ */ |
|
420fe6d7d5f4
Merged revisions 59703-59773 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44351
diff
changeset
|
5139 |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5140 /* Initialize gethostbyname lock */ |
|
29035
e1d5ca8ab7dc
[ 731644] & [ 604210 ] Release the GIL around getaddrinfo(), yet protect
Just van Rossum <just@letterror.com>
parents:
28953
diff
changeset
|
5141 #if defined(USE_GETHOSTBYNAME_LOCK) || defined(USE_GETADDRINFO_LOCK) |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5142 netdb_lock = PyThread_allocate_lock(); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5143 #endif |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5144 return m; |
| 294 | 5145 } |
|
18262
6b0a8157be3b
Emulate inet_{pton,ntop} on systems that don't provide it.
Martin v. Löwis <martin@v.loewis.de>
parents:
18253
diff
changeset
|
5146 |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
5147 |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
5148 #ifndef HAVE_INET_PTON |
|
43926
2de7d00fbf19
The patch from weck does a better job than my original idea. Thanks!
Christian Heimes <christian@cheimes.de>
parents:
43881
diff
changeset
|
5149 #if !defined(NTDDI_VERSION) || (NTDDI_VERSION < NTDDI_LONGHORN) |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
5150 |
|
18262
6b0a8157be3b
Emulate inet_{pton,ntop} on systems that don't provide it.
Martin v. Löwis <martin@v.loewis.de>
parents:
18253
diff
changeset
|
5151 /* Simplistic emulation code for inet_pton that only works for IPv4 */ |
|
28818
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
5152 /* These are not exposed because they do not set errno properly */ |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
5153 |
|
23723
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
5154 int |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
5155 inet_pton(int af, const char *src, void *dst) |
|
18262
6b0a8157be3b
Emulate inet_{pton,ntop} on systems that don't provide it.
Martin v. Löwis <martin@v.loewis.de>
parents:
18253
diff
changeset
|
5156 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5157 if (af == AF_INET) { |
|
51579
648e07dd0825
Merged revisions 69364-69365,69409-69410,69413,69417,69435,69442,69447,69495,69519-69521 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
51384
diff
changeset
|
5158 #if (SIZEOF_INT != 4) |
|
648e07dd0825
Merged revisions 69364-69365,69409-69410,69413,69417,69435,69442,69447,69495,69519-69521 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
51384
diff
changeset
|
5159 #error "Not sure if in_addr_t exists and int is not 32-bits." |
|
648e07dd0825
Merged revisions 69364-69365,69409-69410,69413,69417,69435,69442,69447,69495,69519-69521 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
51384
diff
changeset
|
5160 #endif |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5161 unsigned int packed_addr; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5162 packed_addr = inet_addr(src); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5163 if (packed_addr == INADDR_NONE) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5164 return 0; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5165 memcpy(dst, &packed_addr, 4); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5166 return 1; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5167 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5168 /* Should set errno to EAFNOSUPPORT */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5169 return -1; |
|
18262
6b0a8157be3b
Emulate inet_{pton,ntop} on systems that don't provide it.
Martin v. Löwis <martin@v.loewis.de>
parents:
18253
diff
changeset
|
5170 } |
|
6b0a8157be3b
Emulate inet_{pton,ntop} on systems that don't provide it.
Martin v. Löwis <martin@v.loewis.de>
parents:
18253
diff
changeset
|
5171 |
|
18790
7cd22bf56d7b
Silence warnings in MSVC++: hide unused variables, add constness back to
Martin v. Löwis <martin@v.loewis.de>
parents:
18753
diff
changeset
|
5172 const char * |
|
7cd22bf56d7b
Silence warnings in MSVC++: hide unused variables, add constness back to
Martin v. Löwis <martin@v.loewis.de>
parents:
18753
diff
changeset
|
5173 inet_ntop(int af, const void *src, char *dst, socklen_t size) |
|
18262
6b0a8157be3b
Emulate inet_{pton,ntop} on systems that don't provide it.
Martin v. Löwis <martin@v.loewis.de>
parents:
18253
diff
changeset
|
5174 { |
|
61467
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5175 if (af == AF_INET) { |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5176 struct in_addr packed_addr; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5177 if (size < 16) |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5178 /* Should set errno to ENOSPC. */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5179 return NULL; |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5180 memcpy(&packed_addr, src, sizeof(packed_addr)); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5181 return strncpy(dst, inet_ntoa(packed_addr), size); |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5182 } |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5183 /* Should set errno to EAFNOSUPPORT */ |
|
f197407bdba2
Recorded merge of revisions 81032 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents:
61086
diff
changeset
|
5184 return NULL; |
|
18262
6b0a8157be3b
Emulate inet_{pton,ntop} on systems that don't provide it.
Martin v. Löwis <martin@v.loewis.de>
parents:
18253
diff
changeset
|
5185 } |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
5186 |
|
18262
6b0a8157be3b
Emulate inet_{pton,ntop} on systems that don't provide it.
Martin v. Löwis <martin@v.loewis.de>
parents:
18253
diff
changeset
|
5187 #endif |
| 43874 | 5188 #endif |
