Mercurial > cpython-lru_cache-weakref
annotate Modules/socketmodule.c @ 58973:db86bf39ccaa legacy-trunk
Issue 7970: When email.Parser.Parser parses a MIME message of type
message/rfc822 it turns it into an object whose body consists of
a list containing a single Message object. HeaderParser, on the
other hand, just copies the body as a string. Generator.flatten
has a special handler for the message mime type that expected the
body to be the one item list. This fails if the message was parsed
by HeaderParser. So we now check to see if the body is a string
first, and if so just we just emit it.
| author | R. David Murray <rdmurray@bitdance.com> |
|---|---|
| date | Sun, 21 Feb 2010 04:23:00 +0000 |
| parents | 54e975582c65 |
| children | 435fa215d33f |
| 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 |
|
44561
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
10 portable manner, though AF_PACKET, AF_NETLINK and AF_TIPC are supported |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
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, |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
20 a subclass of socket.error |
|
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, |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
22 a subclass of socket.error |
|
25105
39e09f30f7ef
Update the module doc comment.
Guido van Rossum <guido@python.org>
parents:
24687
diff
changeset
|
23 - socket.fromfd(fd, family, type[, proto]) --> new socket object (created |
|
39e09f30f7ef
Update the module doc comment.
Guido van Rossum <guido@python.org>
parents:
24687
diff
changeset
|
24 from an existing file descriptor) |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
25 - 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
|
26 - 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
|
27 - 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
|
28 - 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
|
29 - 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
|
30 - socket.getservbyport(portnumber[, protocolname]) --> service name |
|
25105
39e09f30f7ef
Update the module doc comment.
Guido van Rossum <guido@python.org>
parents:
24687
diff
changeset
|
31 - socket.socket([family[, type [, proto]]]) --> new socket object |
|
33063
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
32 - 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
|
33 - 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
|
34 - 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
|
35 - 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
|
36 - 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
|
37 - socket.getaddrinfo(host, port [, family, socktype, proto, flags]) |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
38 --> List of (family, socktype, proto, canonname, sockaddr) |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
39 - socket.getnameinfo(sockaddr, flags) --> (host, port) |
|
2565
912813d573b4
fixed up comments describing interface
Guido van Rossum <guido@python.org>
parents:
2532
diff
changeset
|
40 - 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
|
41 - 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
|
42 - 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
|
43 - 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
|
44 - socket.getdefaulttimeout() -> None | float |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
45 - socket.setdefaulttimeout(None | float) |
| 294 | 46 - an Internet socket address is a pair (hostname, port) |
| 47 where hostname can be anything recognized by gethostbyname() | |
| 48 (including the dd.dd.dd.dd notation) and port is in host byte order | |
| 49 - 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
|
50 - 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
|
51 - 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
|
52 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
|
53 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
|
54 ("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
|
55 specify packet-type and ha-type/addr. |
|
44561
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
56 - an AF_TIPC socket address is expressed as |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
57 (addr_type, v1, v2, v3 [, scope]); where addr_type can be one of: |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
58 TIPC_ADDR_NAMESEQ, TIPC_ADDR_NAME, and TIPC_ADDR_ID; |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
59 and scope can be one of: |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
60 TIPC_ZONE_SCOPE, TIPC_CLUSTER_SCOPE, and TIPC_NODE_SCOPE. |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
61 The meaning of v1, v2 and v3 depends on the value of addr_type: |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
62 if addr_type is TIPC_ADDR_NAME: |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
63 v1 is the server type |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
64 v2 is the port identifier |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
65 v3 is ignored |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
66 if addr_type is TIPC_ADDR_NAMESEQ: |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
67 v1 is the server type |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
68 v2 is the lower port number |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
69 v3 is the upper port number |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
70 if addr_type is TIPC_ADDR_ID: |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
71 v1 is the node |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
72 v2 is the ref |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
73 v3 is ignored |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
74 |
| 294 | 75 |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
76 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
|
77 |
|
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 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
|
79 - 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
|
80 - 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
|
81 |
| 294 | 82 */ |
| 83 | |
|
37934
ea67628ddae5
Patch 1471925 - Weak linking support for OSX
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
37853
diff
changeset
|
84 #ifdef __APPLE__ |
|
ea67628ddae5
Patch 1471925 - Weak linking support for OSX
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
37853
diff
changeset
|
85 /* |
|
ea67628ddae5
Patch 1471925 - Weak linking support for OSX
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
37853
diff
changeset
|
86 * inet_aton is not available on OSX 10.3, yet we want to use a binary |
|
ea67628ddae5
Patch 1471925 - Weak linking support for OSX
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
37853
diff
changeset
|
87 * that was build on 10.4 or later to work on that release, weak linking |
|
ea67628ddae5
Patch 1471925 - Weak linking support for OSX
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
37853
diff
changeset
|
88 * comes to the rescue. |
|
ea67628ddae5
Patch 1471925 - Weak linking support for OSX
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
37853
diff
changeset
|
89 */ |
|
ea67628ddae5
Patch 1471925 - Weak linking support for OSX
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
37853
diff
changeset
|
90 # pragma weak inet_aton |
|
ea67628ddae5
Patch 1471925 - Weak linking support for OSX
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
37853
diff
changeset
|
91 #endif |
|
ea67628ddae5
Patch 1471925 - Weak linking support for OSX
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
37853
diff
changeset
|
92 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
93 #include "Python.h" |
|
37069
dd49847a60d3
RFE #567972: Socket objects' family, type and proto properties are
Georg Brandl <georg@python.org>
parents:
36684
diff
changeset
|
94 #include "structmember.h" |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
95 |
|
28818
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
96 #undef MAX |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
97 #define MAX(x, y) ((x) < (y) ? (y) : (x)) |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
98 |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
99 /* Socket object documentation */ |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
100 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
|
101 "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
|
102 \n\ |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
103 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
|
104 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
|
105 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
|
106 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
|
107 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
|
108 \n\ |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
109 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
|
110 \n\ |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
111 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
|
112 \n\ |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
113 accept() -- accept a connection, returning new socket and client 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 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
|
115 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
|
116 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
|
117 connect_ex(addr) -- connect, return an error code instead of an exception\n\ |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
118 dup() -- return a new socket object identical to the current one [*]\n\ |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
119 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
|
120 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
|
121 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
|
122 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
|
123 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
|
124 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
|
125 makefile([mode, [bufsize]]) -- return a file object for 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
|
126 recv(buflen[, flags]) -- receive data\n\ |
|
38580
a114003aa3d3
Fixes in struct and socket from merge reviews.
Martin Blais <blais@furius.ca>
parents:
38498
diff
changeset
|
127 recv_into(buffer[, nbytes[, flags]]) -- receive data (into a buffer)\n\ |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
128 recvfrom(buflen[, flags]) -- receive data and sender\'s address\n\ |
|
38580
a114003aa3d3
Fixes in struct and socket from merge reviews.
Martin Blais <blais@furius.ca>
parents:
38498
diff
changeset
|
129 recvfrom_into(buffer[, nbytes, [, flags])\n\ |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
130 -- 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
|
131 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
|
132 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
|
133 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
|
134 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
|
135 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
|
136 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
|
137 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
|
138 \n\ |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
139 [*] not available on all platforms!"); |
|
10442
9184c9e108f9
Clean up pass for the previous patches.
Guido van Rossum <guido@python.org>
parents:
10441
diff
changeset
|
140 |
|
30722
651fc8d98d99
Fix a bunch of typos in documentation, docstrings and comments.
Walter Dörwald <walter@livinglogic.de>
parents:
30683
diff
changeset
|
141 /* 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
|
142 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
|
143 |
|
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
|
144 /* 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
|
145 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
|
146 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
|
147 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
|
148 |
|
adf87d13a0c1
(1) On Linux, we really need to trust the configure script to select
Guido van Rossum <guido@python.org>
parents:
11268
diff
changeset
|
149 #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
|
150 # 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
|
151 # 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
|
152 # 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
|
153 #endif |
|
10454
dad14ffe1c22
Implement two suggestions by Jonathan Giddy: (1) in AIX, clear the
Guido van Rossum <guido@python.org>
parents:
10453
diff
changeset
|
154 |
|
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 #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
|
156 # 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
|
157 #endif |
|
1ed1eb5bc6ec
Put back __osf__ support for gethostbyname_r(); the real bug was that
Guido van Rossum <guido@python.org>
parents:
10561
diff
changeset
|
158 |
|
10454
dad14ffe1c22
Implement two suggestions by Jonathan Giddy: (1) in AIX, clear the
Guido van Rossum <guido@python.org>
parents:
10453
diff
changeset
|
159 #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
|
160 # 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
|
161 # 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
|
162 # 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
|
163 # 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
|
164 # 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
|
165 /* 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
|
166 # 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
|
167 # 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
|
168 # endif |
|
10454
dad14ffe1c22
Implement two suggestions by Jonathan Giddy: (1) in AIX, clear the
Guido van Rossum <guido@python.org>
parents:
10453
diff
changeset
|
169 #endif |
|
dad14ffe1c22
Implement two suggestions by Jonathan Giddy: (1) in AIX, clear the
Guido van Rossum <guido@python.org>
parents:
10453
diff
changeset
|
170 |
|
23723
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
171 #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
|
172 !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
|
173 # define USE_GETHOSTBYNAME_LOCK |
|
10442
9184c9e108f9
Clean up pass for the previous patches.
Guido van Rossum <guido@python.org>
parents:
10441
diff
changeset
|
174 #endif |
|
9184c9e108f9
Clean up pass for the previous patches.
Guido van Rossum <guido@python.org>
parents:
10441
diff
changeset
|
175 |
|
35635
27e1426b7f31
Patch #1288833: Removed thread lock from socket.getaddrinfo on
Hye-Shik Chang <hyeshik@gmail.com>
parents:
35551
diff
changeset
|
176 /* To use __FreeBSD_version */ |
|
27e1426b7f31
Patch #1288833: Removed thread lock from socket.getaddrinfo on
Hye-Shik Chang <hyeshik@gmail.com>
parents:
35551
diff
changeset
|
177 #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
|
178 #include <sys/param.h> |
|
27e1426b7f31
Patch #1288833: Removed thread lock from socket.getaddrinfo on
Hye-Shik Chang <hyeshik@gmail.com>
parents:
35551
diff
changeset
|
179 #endif |
|
29035
e1d5ca8ab7dc
[ 731644] & [ 604210 ] Release the GIL around getaddrinfo(), yet protect
Just van Rossum <just@letterror.com>
parents:
28953
diff
changeset
|
180 /* 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
|
181 (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
|
182 #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
|
183 (defined(__FreeBSD__) && __FreeBSD_version+0 < 503000) || \ |
|
39043
c67b23397f30
Patch #1516912: improve Modules support for OpenVMS.
Neal Norwitz <nnorwitz@gmail.com>
parents:
38716
diff
changeset
|
184 defined(__OpenBSD__) || defined(__NetBSD__) || \ |
|
c67b23397f30
Patch #1516912: improve Modules support for OpenVMS.
Neal Norwitz <nnorwitz@gmail.com>
parents:
38716
diff
changeset
|
185 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
|
186 #define USE_GETADDRINFO_LOCK |
|
e1d5ca8ab7dc
[ 731644] & [ 604210 ] Release the GIL around getaddrinfo(), yet protect
Just van Rossum <just@letterror.com>
parents:
28953
diff
changeset
|
187 #endif |
|
e1d5ca8ab7dc
[ 731644] & [ 604210 ] Release the GIL around getaddrinfo(), yet protect
Just van Rossum <just@letterror.com>
parents:
28953
diff
changeset
|
188 |
|
e1d5ca8ab7dc
[ 731644] & [ 604210 ] Release the GIL around getaddrinfo(), yet protect
Just van Rossum <just@letterror.com>
parents:
28953
diff
changeset
|
189 #ifdef USE_GETADDRINFO_LOCK |
|
e1d5ca8ab7dc
[ 731644] & [ 604210 ] Release the GIL around getaddrinfo(), yet protect
Just van Rossum <just@letterror.com>
parents:
28953
diff
changeset
|
190 #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
|
191 #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
|
192 #else |
|
e1d5ca8ab7dc
[ 731644] & [ 604210 ] Release the GIL around getaddrinfo(), yet protect
Just van Rossum <just@letterror.com>
parents:
28953
diff
changeset
|
193 #define ACQUIRE_GETADDRINFO_LOCK |
|
e1d5ca8ab7dc
[ 731644] & [ 604210 ] Release the GIL around getaddrinfo(), yet protect
Just van Rossum <just@letterror.com>
parents:
28953
diff
changeset
|
194 #define RELEASE_GETADDRINFO_LOCK |
|
e1d5ca8ab7dc
[ 731644] & [ 604210 ] Release the GIL around getaddrinfo(), yet protect
Just van Rossum <just@letterror.com>
parents:
28953
diff
changeset
|
195 #endif |
|
e1d5ca8ab7dc
[ 731644] & [ 604210 ] Release the GIL around getaddrinfo(), yet protect
Just van Rossum <just@letterror.com>
parents:
28953
diff
changeset
|
196 |
|
e1d5ca8ab7dc
[ 731644] & [ 604210 ] Release the GIL around getaddrinfo(), yet protect
Just van Rossum <just@letterror.com>
parents:
28953
diff
changeset
|
197 #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
|
198 # include "pythread.h" |
|
7942
ee2aaa2f722a
Threading speedup patches by Christopher Lindblad <cjl@infoseek.com>.
Guido van Rossum <guido@python.org>
parents:
6718
diff
changeset
|
199 #endif |
| 294 | 200 |
|
6626
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
201 #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
|
202 # 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
|
203 # 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
|
204 # 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
|
205 # 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
|
206 # include <ctype.h> |
|
6626
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
207 #endif |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
208 |
|
26551
0c995cd07026
Don't include <ioctl.h> unless on __VMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
26550
diff
changeset
|
209 #if defined(__VMS) |
|
26550
b9c912e2c3c0
Patch #614055: Support OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
25994
diff
changeset
|
210 # include <ioctl.h> |
|
b9c912e2c3c0
Patch #614055: Support OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
25994
diff
changeset
|
211 #endif |
|
b9c912e2c3c0
Patch #614055: Support OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
25994
diff
changeset
|
212 |
|
6626
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
213 #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
|
214 # 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
|
215 # 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
|
216 # 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
|
217 # include <os2.h> |
|
6626
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
218 #endif |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
219 |
|
29929
08d2636b8e58
Get socketmodule compiling on IRIX 6.5.10.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
29790
diff
changeset
|
220 #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
|
221 /* 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
|
222 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
|
223 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
|
224 |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
225 /* 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
|
226 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
|
227 #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
|
228 #define _SGIAPI 1 |
|
29929
08d2636b8e58
Get socketmodule compiling on IRIX 6.5.10.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
29790
diff
changeset
|
229 |
|
33478
1b3ac674a57c
Patch for compilation on IRIX from rwgk on http://python.org/sf/728330
Trent Mick <trentm@activestate.com>
parents:
33427
diff
changeset
|
230 #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
|
231 #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
|
232 #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
|
233 #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
|
234 #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
|
235 #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
|
236 #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
|
237 #endif |
|
1b3ac674a57c
Patch for compilation on IRIX from rwgk on http://python.org/sf/728330
Trent Mick <trentm@activestate.com>
parents:
33427
diff
changeset
|
238 |
|
29929
08d2636b8e58
Get socketmodule compiling on IRIX 6.5.10.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
29790
diff
changeset
|
239 #define HAVE_INET_PTON |
|
08d2636b8e58
Get socketmodule compiling on IRIX 6.5.10.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
29790
diff
changeset
|
240 #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
|
241 #endif |
|
337fcc24985b
Patch #608999: Fix portability problems with MIPSPro 7.x
Martin v. Löwis <martin@v.loewis.de>
parents:
25105
diff
changeset
|
242 |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
243 /* Irix 6.5 fails to define this variable at all. This is needed |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
244 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
|
245 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
|
246 #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
|
247 #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
|
248 #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
|
249 |
|
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
|
250 /* Generic includes */ |
|
38716
42808526511c
Patch #1495999: Part two of Windows CE changes.
Martin v. Löwis <martin@v.loewis.de>
parents:
38655
diff
changeset
|
251 #ifdef HAVE_SYS_TYPES_H |
|
1746
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1413
diff
changeset
|
252 #include <sys/types.h> |
|
38716
42808526511c
Patch #1495999: Part two of Windows CE changes.
Martin v. Löwis <martin@v.loewis.de>
parents:
38655
diff
changeset
|
253 #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
|
254 |
|
21961
ea23e6e49290
Also fix the comment.
Marc-André Lemburg <mal@egenix.com>
parents:
21960
diff
changeset
|
255 /* 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
|
256 #define PySocket_BUILDING_SOCKET |
|
21960
7a917ad8f442
Fix the name of the header file.
Marc-André Lemburg <mal@egenix.com>
parents:
21959
diff
changeset
|
257 #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
|
258 |
|
3957d155f8c5
Break SSL support out of _socket module and place it into a new
Marc-André Lemburg <mal@egenix.com>
parents:
21757
diff
changeset
|
259 /* 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
|
260 |
|
3738
ce74bba8a6a6
Slightly different Windows ifdefs
Guido van Rossum <guido@python.org>
parents:
3702
diff
changeset
|
261 #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
|
262 |
|
3957d155f8c5
Break SSL support out of _socket module and place it into a new
Marc-André Lemburg <mal@egenix.com>
parents:
21757
diff
changeset
|
263 /* 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
|
264 # 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
|
265 |
|
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
|
266 /* Headers needed for inet_ntoa() and inet_addr() */ |
|
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
|
267 # ifdef __BEOS__ |
|
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 # include <net/netdb.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
|
269 # elif defined(PYOS_OS2) && defined(PYCC_VACPP) |
|
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 # 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
|
271 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
|
272 # 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
|
273 # 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
|
274 # 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
|
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 # ifndef RISCOS |
|
3957d155f8c5
Break SSL support out of _socket module and place it into a new
Marc-André Lemburg <mal@egenix.com>
parents:
21757
diff
changeset
|
277 # 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
|
278 # else |
|
29066
90342f395721
Patch #734231: Update RiscOS support. In particular, correct
Martin v. Löwis <martin@v.loewis.de>
parents:
29037
diff
changeset
|
279 # include <sys/ioctl.h> |
|
90342f395721
Patch #734231: Update RiscOS support. In particular, correct
Martin v. Löwis <martin@v.loewis.de>
parents:
29037
diff
changeset
|
280 # include <socklib.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
|
281 # define NO_DUP |
|
20654
edd9d0b3c47e
SF patch #474590 -- RISC OS support
Guido van Rossum <guido@python.org>
parents:
20648
diff
changeset
|
282 int h_errno; /* not used */ |
|
29066
90342f395721
Patch #734231: Update RiscOS support. In particular, correct
Martin v. Löwis <martin@v.loewis.de>
parents:
29037
diff
changeset
|
283 # define INET_ADDRSTRLEN 16 |
|
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
|
284 # 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
|
285 |
|
20654
edd9d0b3c47e
SF patch #474590 -- RISC OS support
Guido van Rossum <guido@python.org>
parents:
20648
diff
changeset
|
286 #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
|
287 |
|
3957d155f8c5
Break SSL support out of _socket module and place it into a new
Marc-André Lemburg <mal@egenix.com>
parents:
21757
diff
changeset
|
288 /* MS_WINDOWS includes */ |
|
38716
42808526511c
Patch #1495999: Part two of Windows CE changes.
Martin v. Löwis <martin@v.loewis.de>
parents:
38655
diff
changeset
|
289 # ifdef HAVE_FCNTL_H |
|
42808526511c
Patch #1495999: Part two of Windows CE changes.
Martin v. Löwis <martin@v.loewis.de>
parents:
38655
diff
changeset
|
290 # include <fcntl.h> |
|
42808526511c
Patch #1495999: Part two of Windows CE changes.
Martin v. Löwis <martin@v.loewis.de>
parents:
38655
diff
changeset
|
291 # 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
|
292 |
|
16410
3d4a7cd0bf17
SF patch 101137 from Grant Edwards
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16400
diff
changeset
|
293 #endif |
|
3d4a7cd0bf17
SF patch 101137 from Grant Edwards
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16400
diff
changeset
|
294 |
|
31504
2abc52c3d4c2
remove support for missing ANSI C header files (limits.h, stddef.h, etc).
Skip Montanaro <skip@pobox.com>
parents:
31443
diff
changeset
|
295 #include <stddef.h> |
|
18263
41491d196748
Provide a definition for offsetof.
Martin v. Löwis <martin@v.loewis.de>
parents:
18262
diff
changeset
|
296 |
|
41491d196748
Provide a definition for offsetof.
Martin v. Löwis <martin@v.loewis.de>
parents:
18262
diff
changeset
|
297 #ifndef offsetof |
|
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
|
298 # 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
|
299 #endif |
|
41491d196748
Provide a definition for offsetof.
Martin v. Löwis <martin@v.loewis.de>
parents:
18262
diff
changeset
|
300 |
|
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
|
301 #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
|
302 # define O_NONBLOCK O_NDELAY |
|
2055
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
303 #endif |
|
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
304 |
|
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
|
305 /* 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
|
306 #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
|
307 /* 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
|
308 * _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
|
309 * 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
|
310 */ |
|
38716
42808526511c
Patch #1495999: Part two of Windows CE changes.
Martin v. Löwis <martin@v.loewis.de>
parents:
38655
diff
changeset
|
311 #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
|
312 /* 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
|
313 * 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
|
314 */ |
|
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
|
315 #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
|
316 # 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
|
317 #endif |
|
33066
cda0455bd0a0
Bug #1001857: socketmodule does not build under cygwin
Jason Tishler <jason@tishler.net>
parents:
33063
diff
changeset
|
318 |
|
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
|
319 #ifndef HAVE_INET_PTON |
|
43972
a8dd8874ff2d
Backport of the PCbuild9 directory from the py3k branch.
Christian Heimes <christian@cheimes.de>
parents:
43876
diff
changeset
|
320 #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
|
321 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
|
322 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
|
323 #endif |
|
43972
a8dd8874ff2d
Backport of the PCbuild9 directory from the py3k branch.
Christian Heimes <christian@cheimes.de>
parents:
43876
diff
changeset
|
324 #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
|
325 |
|
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
|
326 #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
|
327 /* 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
|
328 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
|
329 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
|
330 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
|
331 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
|
332 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
|
333 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
|
334 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
|
335 #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
|
336 /* 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
|
337 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
|
338 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
|
339 #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
|
340 #endif |
|
37934
ea67628ddae5
Patch 1471925 - Weak linking support for OSX
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
37853
diff
changeset
|
341 |
|
ea67628ddae5
Patch 1471925 - Weak linking support for OSX
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
37853
diff
changeset
|
342 #ifdef HAVE_INET_ATON |
|
ea67628ddae5
Patch 1471925 - Weak linking support for OSX
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
37853
diff
changeset
|
343 #define USE_INET_ATON_WEAKLINK |
|
ea67628ddae5
Patch 1471925 - Weak linking support for OSX
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
37853
diff
changeset
|
344 #endif |
|
ea67628ddae5
Patch 1471925 - Weak linking support for OSX
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
37853
diff
changeset
|
345 |
|
24078
702a5900df7d
Mac OS X Jaguar (developer preview) seems to have a working getaddrinfo().
Jack Jansen <jack.jansen@cwi.nl>
parents:
23832
diff
changeset
|
346 #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
|
347 |
|
18246
c4db09b87424
Patch #401196: Configuration machinery for IPv6.
Martin v. Löwis <martin@v.loewis.de>
parents:
17806
diff
changeset
|
348 /* 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
|
349 #if !defined(HAVE_GETADDRINFO) |
|
28913
b04c074586aa
Patch #725942: Always rename emulation functions.
Martin v. Löwis <martin@v.loewis.de>
parents:
28818
diff
changeset
|
350 /* 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
|
351 #define getaddrinfo fake_getaddrinfo |
|
b04c074586aa
Patch #725942: Always rename emulation functions.
Martin v. Löwis <martin@v.loewis.de>
parents:
28818
diff
changeset
|
352 #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
|
353 #define freeaddrinfo fake_freeaddrinfo |
|
18246
c4db09b87424
Patch #401196: Configuration machinery for IPv6.
Martin v. Löwis <martin@v.loewis.de>
parents:
17806
diff
changeset
|
354 #include "getaddrinfo.c" |
|
c4db09b87424
Patch #401196: Configuration machinery for IPv6.
Martin v. Löwis <martin@v.loewis.de>
parents:
17806
diff
changeset
|
355 #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
|
356 #if !defined(HAVE_GETNAMEINFO) |
|
28913
b04c074586aa
Patch #725942: Always rename emulation functions.
Martin v. Löwis <martin@v.loewis.de>
parents:
28818
diff
changeset
|
357 #define getnameinfo fake_getnameinfo |
|
18246
c4db09b87424
Patch #401196: Configuration machinery for IPv6.
Martin v. Löwis <martin@v.loewis.de>
parents:
17806
diff
changeset
|
358 #include "getnameinfo.c" |
|
c4db09b87424
Patch #401196: Configuration machinery for IPv6.
Martin v. Löwis <martin@v.loewis.de>
parents:
17806
diff
changeset
|
359 #endif |
|
c4db09b87424
Patch #401196: Configuration machinery for IPv6.
Martin v. Löwis <martin@v.loewis.de>
parents:
17806
diff
changeset
|
360 |
|
8823
f2a4a2b60860
Changes for BeOS, QNX and long long, by Chris Herborth.
Guido van Rossum <guido@python.org>
parents:
8821
diff
changeset
|
361 #if defined(MS_WINDOWS) || defined(__BEOS__) |
|
f2a4a2b60860
Changes for BeOS, QNX and long long, by Chris Herborth.
Guido van Rossum <guido@python.org>
parents:
8821
diff
changeset
|
362 /* BeOS suffers from the same socket dichotomy as Win32... - [cjh] */ |
|
1792
a584b4bbbc59
Changes to make it work and compile on NT, by Mark Hammond.
Guido van Rossum <guido@python.org>
parents:
1760
diff
changeset
|
363 /* seem to be a few differences in the API */ |
|
12436
dff7b26116de
Use an explicit macro SOCKETCLOSE which expands to closesocket (on
Guido van Rossum <guido@python.org>
parents:
12319
diff
changeset
|
364 #define SOCKETCLOSE closesocket |
|
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
|
365 #define NO_DUP /* Actually it exists on NT 3.5, but what the heck... */ |
|
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 |
|
52549
87171283d02f
Apply patch for netbsd multiprocessing support
Jesse Noller <jnoller@gmail.com>
parents:
51538
diff
changeset
|
382 #if defined(HAVE_BLUETOOTH_H) || defined(HAVE_BLUETOOTH_BLUETOOTH_H) && !defined(__NetBSD__) |
|
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 |
|
40842
90e22fea8363
Patch #1432399: Add HCI sockets.
Martin v. Löwis <martin@v.loewis.de>
parents:
40837
diff
changeset
|
387 #define BTPROTO_HCI BLUETOOTH_PROTO_HCI |
|
41946
c36ac67eef5b
Fix build on FreeBSD. Bluetooth HCI API in FreeBSD is quite different
Hye-Shik Chang <hyeshik@gmail.com>
parents:
41341
diff
changeset
|
388 #define SOL_HCI SOL_HCI_RAW |
|
c36ac67eef5b
Fix build on FreeBSD. Bluetooth HCI API in FreeBSD is quite different
Hye-Shik Chang <hyeshik@gmail.com>
parents:
41341
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 |
|
41946
c36ac67eef5b
Fix build on FreeBSD. Bluetooth HCI API in FreeBSD is quite different
Hye-Shik Chang <hyeshik@gmail.com>
parents:
41341
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) |
|
40842
90e22fea8363
Patch #1432399: Add HCI sockets.
Martin v. Löwis <martin@v.loewis.de>
parents:
40837
diff
changeset
|
395 #define _BT_HCI_MEMB(sa, memb) ((sa)->hci_##memb) |
|
39242
0e9a269a2189
Allow socketmodule to compile on NetBSD -current, whose bluetooth API
Matt Fleming <mattjfleming@googlemail.com>
parents:
39059
diff
changeset
|
396 #elif defined(__NetBSD__) |
|
0e9a269a2189
Allow socketmodule to compile on NetBSD -current, whose bluetooth API
Matt Fleming <mattjfleming@googlemail.com>
parents:
39059
diff
changeset
|
397 #define sockaddr_l2 sockaddr_bt |
|
0e9a269a2189
Allow socketmodule to compile on NetBSD -current, whose bluetooth API
Matt Fleming <mattjfleming@googlemail.com>
parents:
39059
diff
changeset
|
398 #define sockaddr_rc sockaddr_bt |
|
40842
90e22fea8363
Patch #1432399: Add HCI sockets.
Martin v. Löwis <martin@v.loewis.de>
parents:
40837
diff
changeset
|
399 #define sockaddr_hci sockaddr_bt |
|
39242
0e9a269a2189
Allow socketmodule to compile on NetBSD -current, whose bluetooth API
Matt Fleming <mattjfleming@googlemail.com>
parents:
39059
diff
changeset
|
400 #define sockaddr_sco sockaddr_bt |
|
0e9a269a2189
Allow socketmodule to compile on NetBSD -current, whose bluetooth API
Matt Fleming <mattjfleming@googlemail.com>
parents:
39059
diff
changeset
|
401 #define _BT_L2_MEMB(sa, memb) ((sa)->bt_##memb) |
|
0e9a269a2189
Allow socketmodule to compile on NetBSD -current, whose bluetooth API
Matt Fleming <mattjfleming@googlemail.com>
parents:
39059
diff
changeset
|
402 #define _BT_RC_MEMB(sa, memb) ((sa)->bt_##memb) |
|
40842
90e22fea8363
Patch #1432399: Add HCI sockets.
Martin v. Löwis <martin@v.loewis.de>
parents:
40837
diff
changeset
|
403 #define _BT_HCI_MEMB(sa, memb) ((sa)->bt_##memb) |
|
39242
0e9a269a2189
Allow socketmodule to compile on NetBSD -current, whose bluetooth API
Matt Fleming <mattjfleming@googlemail.com>
parents:
39059
diff
changeset
|
404 #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
|
405 #else |
|
afb4c9726d1a
Add FreeBSD support for bluetooth sockets.
Hye-Shik Chang <hyeshik@gmail.com>
parents:
31441
diff
changeset
|
406 #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
|
407 #define _BT_RC_MEMB(sa, memb) ((sa)->rc_##memb) |
|
40842
90e22fea8363
Patch #1432399: Add HCI sockets.
Martin v. Löwis <martin@v.loewis.de>
parents:
40837
diff
changeset
|
408 #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
|
409 #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
|
410 #endif |
|
afb4c9726d1a
Add FreeBSD support for bluetooth sockets.
Hye-Shik Chang <hyeshik@gmail.com>
parents:
31441
diff
changeset
|
411 #endif |
|
afb4c9726d1a
Add FreeBSD support for bluetooth sockets.
Hye-Shik Chang <hyeshik@gmail.com>
parents:
31441
diff
changeset
|
412 |
|
39043
c67b23397f30
Patch #1516912: improve Modules support for OpenVMS.
Neal Norwitz <nnorwitz@gmail.com>
parents:
38716
diff
changeset
|
413 #ifdef __VMS |
|
c67b23397f30
Patch #1516912: improve Modules support for OpenVMS.
Neal Norwitz <nnorwitz@gmail.com>
parents:
38716
diff
changeset
|
414 /* TCP/IP Services for VMS uses a maximum send/recv buffer length */ |
|
c67b23397f30
Patch #1516912: improve Modules support for OpenVMS.
Neal Norwitz <nnorwitz@gmail.com>
parents:
38716
diff
changeset
|
415 #define SEGMENT_SIZE (32 * 1024 -1) |
|
c67b23397f30
Patch #1516912: improve Modules support for OpenVMS.
Neal Norwitz <nnorwitz@gmail.com>
parents:
38716
diff
changeset
|
416 #endif |
|
c67b23397f30
Patch #1516912: improve Modules support for OpenVMS.
Neal Norwitz <nnorwitz@gmail.com>
parents:
38716
diff
changeset
|
417 |
|
40416
c43787e6d706
Patch #1544279: Improve thread-safety of the socket module by moving
Martin v. Löwis <martin@v.loewis.de>
parents:
39502
diff
changeset
|
418 #define SAS2SA(x) ((struct sockaddr *)(x)) |
|
c43787e6d706
Patch #1544279: Improve thread-safety of the socket module by moving
Martin v. Löwis <martin@v.loewis.de>
parents:
39502
diff
changeset
|
419 |
|
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
|
420 /* |
|
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
|
421 * 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
|
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 #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
|
424 #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
|
425 #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
|
426 #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
|
427 #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
|
428 #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
|
429 |
|
20727
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
430 /* 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
|
431 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
|
432 |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
433 /* 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
|
434 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
|
435 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
|
436 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
|
437 static PyObject *socket_gaierror; |
|
29651
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
438 static PyObject *socket_timeout; |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
439 |
|
16947
b25131bc6ec7
RISCOS changes by dschwertberger.
Guido van Rossum <guido@python.org>
parents:
16472
diff
changeset
|
440 #ifdef RISCOS |
|
b25131bc6ec7
RISCOS changes by dschwertberger.
Guido van Rossum <guido@python.org>
parents:
16472
diff
changeset
|
441 /* Global variable which is !=0 if Python is running in a RISC OS taskwindow */ |
|
b25131bc6ec7
RISCOS changes by dschwertberger.
Guido van Rossum <guido@python.org>
parents:
16472
diff
changeset
|
442 static int taskwindow; |
|
b25131bc6ec7
RISCOS changes by dschwertberger.
Guido van Rossum <guido@python.org>
parents:
16472
diff
changeset
|
443 #endif |
|
b25131bc6ec7
RISCOS changes by dschwertberger.
Guido van Rossum <guido@python.org>
parents:
16472
diff
changeset
|
444 |
|
21970
b1a871dc5196
Moved the declaration of PySocketSock_Type from socketmodule.h to
Tim Peters <tim.peters@gmail.com>
parents:
21964
diff
changeset
|
445 /* 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
|
446 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
|
447 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
|
448 there has to be a circular reference. */ |
|
24280
1598a1e473e2
staticforward bites the dust.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24078
diff
changeset
|
449 static PyTypeObject sock_type; |
|
16947
b25131bc6ec7
RISCOS changes by dschwertberger.
Guido van Rossum <guido@python.org>
parents:
16472
diff
changeset
|
450 |
|
39059
52a8738f5ab4
#1494314: Fix a regression with high-numbered sockets in 2.4.3. This
Anthony Baxter <anthonybaxter@gmail.com>
parents:
39043
diff
changeset
|
451 #if defined(HAVE_POLL_H) |
|
52a8738f5ab4
#1494314: Fix a regression with high-numbered sockets in 2.4.3. This
Anthony Baxter <anthonybaxter@gmail.com>
parents:
39043
diff
changeset
|
452 #include <poll.h> |
|
52a8738f5ab4
#1494314: Fix a regression with high-numbered sockets in 2.4.3. This
Anthony Baxter <anthonybaxter@gmail.com>
parents:
39043
diff
changeset
|
453 #elif defined(HAVE_SYS_POLL_H) |
|
52a8738f5ab4
#1494314: Fix a regression with high-numbered sockets in 2.4.3. This
Anthony Baxter <anthonybaxter@gmail.com>
parents:
39043
diff
changeset
|
454 #include <sys/poll.h> |
|
52a8738f5ab4
#1494314: Fix a regression with high-numbered sockets in 2.4.3. This
Anthony Baxter <anthonybaxter@gmail.com>
parents:
39043
diff
changeset
|
455 #endif |
|
52a8738f5ab4
#1494314: Fix a regression with high-numbered sockets in 2.4.3. This
Anthony Baxter <anthonybaxter@gmail.com>
parents:
39043
diff
changeset
|
456 |
|
36476
c073dffbe70e
Introduce Py_SOCKET_FD_CAN_BE_GE_FD_SETSIZE.
Martin v. Löwis <martin@v.loewis.de>
parents:
36452
diff
changeset
|
457 #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
|
458 /* 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
|
459 #define IS_SELECTABLE(s) 1 |
|
39059
52a8738f5ab4
#1494314: Fix a regression with high-numbered sockets in 2.4.3. This
Anthony Baxter <anthonybaxter@gmail.com>
parents:
39043
diff
changeset
|
460 #elif defined(HAVE_POLL) |
|
52a8738f5ab4
#1494314: Fix a regression with high-numbered sockets in 2.4.3. This
Anthony Baxter <anthonybaxter@gmail.com>
parents:
39043
diff
changeset
|
461 /* Instead of select(), we'll use poll() since poll() works on any fd. */ |
|
52a8738f5ab4
#1494314: Fix a regression with high-numbered sockets in 2.4.3. This
Anthony Baxter <anthonybaxter@gmail.com>
parents:
39043
diff
changeset
|
462 #define IS_SELECTABLE(s) 1 |
|
52a8738f5ab4
#1494314: Fix a regression with high-numbered sockets in 2.4.3. This
Anthony Baxter <anthonybaxter@gmail.com>
parents:
39043
diff
changeset
|
463 /* 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
|
464 #else |
|
c073dffbe70e
Introduce Py_SOCKET_FD_CAN_BE_GE_FD_SETSIZE.
Martin v. Löwis <martin@v.loewis.de>
parents:
36452
diff
changeset
|
465 /* POSIX says selecting file descriptors beyond FD_SETSIZE |
|
39059
52a8738f5ab4
#1494314: Fix a regression with high-numbered sockets in 2.4.3. This
Anthony Baxter <anthonybaxter@gmail.com>
parents:
39043
diff
changeset
|
466 has undefined behaviour. If there's no timeout left, we don't have to |
|
52a8738f5ab4
#1494314: Fix a regression with high-numbered sockets in 2.4.3. This
Anthony Baxter <anthonybaxter@gmail.com>
parents:
39043
diff
changeset
|
467 call select, so it's a safe, little white lie. */ |
|
52a8738f5ab4
#1494314: Fix a regression with high-numbered sockets in 2.4.3. This
Anthony Baxter <anthonybaxter@gmail.com>
parents:
39043
diff
changeset
|
468 #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
|
469 #endif |
|
36452
7789cc557e1e
Bug #876637, prevent stack corruption when socket descriptor
Neal Norwitz <nnorwitz@gmail.com>
parents:
36324
diff
changeset
|
470 |
|
7789cc557e1e
Bug #876637, prevent stack corruption when socket descriptor
Neal Norwitz <nnorwitz@gmail.com>
parents:
36324
diff
changeset
|
471 static PyObject* |
|
7789cc557e1e
Bug #876637, prevent stack corruption when socket descriptor
Neal Norwitz <nnorwitz@gmail.com>
parents:
36324
diff
changeset
|
472 select_error(void) |
|
7789cc557e1e
Bug #876637, prevent stack corruption when socket descriptor
Neal Norwitz <nnorwitz@gmail.com>
parents:
36324
diff
changeset
|
473 { |
|
7789cc557e1e
Bug #876637, prevent stack corruption when socket descriptor
Neal Norwitz <nnorwitz@gmail.com>
parents:
36324
diff
changeset
|
474 PyErr_SetString(socket_error, "unable to select on socket"); |
|
7789cc557e1e
Bug #876637, prevent stack corruption when socket descriptor
Neal Norwitz <nnorwitz@gmail.com>
parents:
36324
diff
changeset
|
475 return NULL; |
|
7789cc557e1e
Bug #876637, prevent stack corruption when socket descriptor
Neal Norwitz <nnorwitz@gmail.com>
parents:
36324
diff
changeset
|
476 } |
|
7789cc557e1e
Bug #876637, prevent stack corruption when socket descriptor
Neal Norwitz <nnorwitz@gmail.com>
parents:
36324
diff
changeset
|
477 |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
478 /* 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
|
479 and return a NULL pointer from a function. */ |
| 294 | 480 |
| 1970 | 481 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
|
482 set_error(void) |
| 294 | 483 { |
|
3702
3408756ec601
changed windows test symbols; removed debug printf from sockets
Guido van Rossum <guido@python.org>
parents:
3700
diff
changeset
|
484 #ifdef MS_WINDOWS |
|
13680
9f6189e89212
Patch #100926 - Better error messages for socket exceptions on Windows. [Slight style differences from posted patch]
Mark Hammond <mhammond@skippinet.com.au>
parents:
13667
diff
changeset
|
485 int err_no = WSAGetLastError(); |
|
43876
17aaf95af909
A patch from issue 1378 by roudkerk:
Guido van Rossum <guido@python.org>
parents:
43299
diff
changeset
|
486 /* PyErr_SetExcFromWindowsErr() invokes FormatMessage() which |
|
17aaf95af909
A patch from issue 1378 by roudkerk:
Guido van Rossum <guido@python.org>
parents:
43299
diff
changeset
|
487 recognizes the error codes used by both GetLastError() and |
|
17aaf95af909
A patch from issue 1378 by roudkerk:
Guido van Rossum <guido@python.org>
parents:
43299
diff
changeset
|
488 WSAGetLastError */ |
|
17aaf95af909
A patch from issue 1378 by roudkerk:
Guido van Rossum <guido@python.org>
parents:
43299
diff
changeset
|
489 if (err_no) |
|
17aaf95af909
A patch from issue 1378 by roudkerk:
Guido van Rossum <guido@python.org>
parents:
43299
diff
changeset
|
490 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
|
491 #endif |
|
6626
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
492 |
|
22115
d104bb50a194
OS/2 EMX port changes (Modules part of patch #450267):
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
22096
diff
changeset
|
493 #if defined(PYOS_OS2) && !defined(PYCC_GCC) |
|
23723
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
494 if (sock_errno() != NO_ERROR) { |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
495 APIRET rc; |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
496 ULONG msglen; |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
497 char outbuf[100]; |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
498 int myerrorcode = sock_errno(); |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
499 |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
500 /* Retrieve socket-related error message from MPTN.MSG file */ |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
501 rc = DosGetMessage(NULL, 0, outbuf, sizeof(outbuf), |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
502 myerrorcode - SOCBASEERR + 26, |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
503 "mptn.msg", |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
504 &msglen); |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
505 if (rc == NO_ERROR) { |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
506 PyObject *v; |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
507 |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
508 /* OS/2 doesn't guarantee a terminator */ |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
509 outbuf[msglen] = '\0'; |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
510 if (strlen(outbuf) > 0) { |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
511 /* If non-empty msg, trim CRLF */ |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
512 char *lastc = &outbuf[ strlen(outbuf)-1 ]; |
|
36090
8cb686dd6e64
Fix SF bug #1072182, problems with signed characters.
Neal Norwitz <nnorwitz@gmail.com>
parents:
35999
diff
changeset
|
513 while (lastc > outbuf && |
|
8cb686dd6e64
Fix SF bug #1072182, problems with signed characters.
Neal Norwitz <nnorwitz@gmail.com>
parents:
35999
diff
changeset
|
514 isspace(Py_CHARMASK(*lastc))) { |
|
23723
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
515 /* Trim trailing whitespace (CRLF) */ |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
516 *lastc-- = '\0'; |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
517 } |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
518 } |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
519 v = Py_BuildValue("(is)", myerrorcode, outbuf); |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
520 if (v != NULL) { |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
521 PyErr_SetObject(socket_error, v); |
|
23723
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
522 Py_DECREF(v); |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
523 } |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
524 return NULL; |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
525 } |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
526 } |
|
6626
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
527 #endif |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
528 |
|
29066
90342f395721
Patch #734231: Update RiscOS support. In particular, correct
Martin v. Löwis <martin@v.loewis.de>
parents:
29037
diff
changeset
|
529 #if defined(RISCOS) |
|
90342f395721
Patch #734231: Update RiscOS support. In particular, correct
Martin v. Löwis <martin@v.loewis.de>
parents:
29037
diff
changeset
|
530 if (_inet_error.errnum != NULL) { |
|
90342f395721
Patch #734231: Update RiscOS support. In particular, correct
Martin v. Löwis <martin@v.loewis.de>
parents:
29037
diff
changeset
|
531 PyObject *v; |
|
90342f395721
Patch #734231: Update RiscOS support. In particular, correct
Martin v. Löwis <martin@v.loewis.de>
parents:
29037
diff
changeset
|
532 v = Py_BuildValue("(is)", errno, _inet_err()); |
|
90342f395721
Patch #734231: Update RiscOS support. In particular, correct
Martin v. Löwis <martin@v.loewis.de>
parents:
29037
diff
changeset
|
533 if (v != NULL) { |
|
90342f395721
Patch #734231: Update RiscOS support. In particular, correct
Martin v. Löwis <martin@v.loewis.de>
parents:
29037
diff
changeset
|
534 PyErr_SetObject(socket_error, v); |
|
90342f395721
Patch #734231: Update RiscOS support. In particular, correct
Martin v. Löwis <martin@v.loewis.de>
parents:
29037
diff
changeset
|
535 Py_DECREF(v); |
|
90342f395721
Patch #734231: Update RiscOS support. In particular, correct
Martin v. Löwis <martin@v.loewis.de>
parents:
29037
diff
changeset
|
536 } |
|
90342f395721
Patch #734231: Update RiscOS support. In particular, correct
Martin v. Löwis <martin@v.loewis.de>
parents:
29037
diff
changeset
|
537 return NULL; |
|
90342f395721
Patch #734231: Update RiscOS support. In particular, correct
Martin v. Löwis <martin@v.loewis.de>
parents:
29037
diff
changeset
|
538 } |
|
90342f395721
Patch #734231: Update RiscOS support. In particular, correct
Martin v. Löwis <martin@v.loewis.de>
parents:
29037
diff
changeset
|
539 #endif |
|
90342f395721
Patch #734231: Update RiscOS support. In particular, correct
Martin v. Löwis <martin@v.loewis.de>
parents:
29037
diff
changeset
|
540 |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
541 return PyErr_SetFromErrno(socket_error); |
| 294 | 542 } |
| 543 | |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
544 |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
545 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
|
546 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
|
547 { |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
548 PyObject *v; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
549 |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
550 #ifdef HAVE_HSTRERROR |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
551 v = Py_BuildValue("(is)", h_error, (char *)hstrerror(h_error)); |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
552 #else |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
553 v = Py_BuildValue("(is)", h_error, "host not found"); |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
554 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
555 if (v != NULL) { |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
556 PyErr_SetObject(socket_herror, v); |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
557 Py_DECREF(v); |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
558 } |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
559 |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
560 return NULL; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
561 } |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
562 |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
563 |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
564 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
|
565 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
|
566 { |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
567 PyObject *v; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
568 |
|
22096
9e5ff6747437
Patch #520062: Support IPv6 with VC.NET.
Martin v. Löwis <martin@v.loewis.de>
parents:
21970
diff
changeset
|
569 #ifdef EAI_SYSTEM |
|
9e5ff6747437
Patch #520062: Support IPv6 with VC.NET.
Martin v. Löwis <martin@v.loewis.de>
parents:
21970
diff
changeset
|
570 /* EAI_SYSTEM is not available on Windows XP. */ |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
571 if (error == EAI_SYSTEM) |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
572 return set_error(); |
|
22096
9e5ff6747437
Patch #520062: Support IPv6 with VC.NET.
Martin v. Löwis <martin@v.loewis.de>
parents:
21970
diff
changeset
|
573 #endif |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
574 |
|
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
|
575 #ifdef HAVE_GAI_STRERROR |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
576 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
|
577 #else |
|
1afc3116c602
Fix portability problems with glibc 2.0, as reported in #449157.
Martin v. Löwis <martin@v.loewis.de>
parents:
19197
diff
changeset
|
578 v = Py_BuildValue("(is)", error, "getaddrinfo failed"); |
|
1afc3116c602
Fix portability problems with glibc 2.0, as reported in #449157.
Martin v. Löwis <martin@v.loewis.de>
parents:
19197
diff
changeset
|
579 #endif |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
580 if (v != NULL) { |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
581 PyErr_SetObject(socket_gaierror, v); |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
582 Py_DECREF(v); |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
583 } |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
584 |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
585 return NULL; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
586 } |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
587 |
|
39043
c67b23397f30
Patch #1516912: improve Modules support for OpenVMS.
Neal Norwitz <nnorwitz@gmail.com>
parents:
38716
diff
changeset
|
588 #ifdef __VMS |
|
c67b23397f30
Patch #1516912: improve Modules support for OpenVMS.
Neal Norwitz <nnorwitz@gmail.com>
parents:
38716
diff
changeset
|
589 /* Function to send in segments */ |
|
c67b23397f30
Patch #1516912: improve Modules support for OpenVMS.
Neal Norwitz <nnorwitz@gmail.com>
parents:
38716
diff
changeset
|
590 static int |
|
c67b23397f30
Patch #1516912: improve Modules support for OpenVMS.
Neal Norwitz <nnorwitz@gmail.com>
parents:
38716
diff
changeset
|
591 sendsegmented(int sock_fd, char *buf, int len, int flags) |
|
c67b23397f30
Patch #1516912: improve Modules support for OpenVMS.
Neal Norwitz <nnorwitz@gmail.com>
parents:
38716
diff
changeset
|
592 { |
|
c67b23397f30
Patch #1516912: improve Modules support for OpenVMS.
Neal Norwitz <nnorwitz@gmail.com>
parents:
38716
diff
changeset
|
593 int n = 0; |
|
c67b23397f30
Patch #1516912: improve Modules support for OpenVMS.
Neal Norwitz <nnorwitz@gmail.com>
parents:
38716
diff
changeset
|
594 int remaining = len; |
|
c67b23397f30
Patch #1516912: improve Modules support for OpenVMS.
Neal Norwitz <nnorwitz@gmail.com>
parents:
38716
diff
changeset
|
595 |
|
c67b23397f30
Patch #1516912: improve Modules support for OpenVMS.
Neal Norwitz <nnorwitz@gmail.com>
parents:
38716
diff
changeset
|
596 while (remaining > 0) { |
|
c67b23397f30
Patch #1516912: improve Modules support for OpenVMS.
Neal Norwitz <nnorwitz@gmail.com>
parents:
38716
diff
changeset
|
597 unsigned int segment; |
|
c67b23397f30
Patch #1516912: improve Modules support for OpenVMS.
Neal Norwitz <nnorwitz@gmail.com>
parents:
38716
diff
changeset
|
598 |
|
c67b23397f30
Patch #1516912: improve Modules support for OpenVMS.
Neal Norwitz <nnorwitz@gmail.com>
parents:
38716
diff
changeset
|
599 segment = (remaining >= SEGMENT_SIZE ? SEGMENT_SIZE : remaining); |
|
c67b23397f30
Patch #1516912: improve Modules support for OpenVMS.
Neal Norwitz <nnorwitz@gmail.com>
parents:
38716
diff
changeset
|
600 n = send(sock_fd, buf, segment, flags); |
|
c67b23397f30
Patch #1516912: improve Modules support for OpenVMS.
Neal Norwitz <nnorwitz@gmail.com>
parents:
38716
diff
changeset
|
601 if (n < 0) { |
|
c67b23397f30
Patch #1516912: improve Modules support for OpenVMS.
Neal Norwitz <nnorwitz@gmail.com>
parents:
38716
diff
changeset
|
602 return n; |
|
c67b23397f30
Patch #1516912: improve Modules support for OpenVMS.
Neal Norwitz <nnorwitz@gmail.com>
parents:
38716
diff
changeset
|
603 } |
|
c67b23397f30
Patch #1516912: improve Modules support for OpenVMS.
Neal Norwitz <nnorwitz@gmail.com>
parents:
38716
diff
changeset
|
604 remaining -= segment; |
|
c67b23397f30
Patch #1516912: improve Modules support for OpenVMS.
Neal Norwitz <nnorwitz@gmail.com>
parents:
38716
diff
changeset
|
605 buf += segment; |
|
c67b23397f30
Patch #1516912: improve Modules support for OpenVMS.
Neal Norwitz <nnorwitz@gmail.com>
parents:
38716
diff
changeset
|
606 } /* end while */ |
|
c67b23397f30
Patch #1516912: improve Modules support for OpenVMS.
Neal Norwitz <nnorwitz@gmail.com>
parents:
38716
diff
changeset
|
607 |
|
c67b23397f30
Patch #1516912: improve Modules support for OpenVMS.
Neal Norwitz <nnorwitz@gmail.com>
parents:
38716
diff
changeset
|
608 return len; |
|
c67b23397f30
Patch #1516912: improve Modules support for OpenVMS.
Neal Norwitz <nnorwitz@gmail.com>
parents:
38716
diff
changeset
|
609 } |
|
c67b23397f30
Patch #1516912: improve Modules support for OpenVMS.
Neal Norwitz <nnorwitz@gmail.com>
parents:
38716
diff
changeset
|
610 #endif |
|
c67b23397f30
Patch #1516912: improve Modules support for OpenVMS.
Neal Norwitz <nnorwitz@gmail.com>
parents:
38716
diff
changeset
|
611 |
|
23723
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
612 /* 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
|
613 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
|
614 static int |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
615 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
|
616 { |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
617 #ifndef RISCOS |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
618 #ifndef MS_WINDOWS |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
619 int delay_flag; |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
620 #endif |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
621 #endif |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
622 |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
623 Py_BEGIN_ALLOW_THREADS |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
624 #ifdef __BEOS__ |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
625 block = !block; |
|
23723
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
626 setsockopt(s->sock_fd, SOL_SOCKET, SO_NONBLOCK, |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
627 (void *)(&block), sizeof(int)); |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
628 #else |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
629 #ifndef RISCOS |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
630 #ifndef MS_WINDOWS |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
631 #if defined(PYOS_OS2) && !defined(PYCC_GCC) |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
632 block = !block; |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
633 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
|
634 #elif defined(__VMS) |
|
b9c912e2c3c0
Patch #614055: Support OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
25994
diff
changeset
|
635 block = !block; |
|
39043
c67b23397f30
Patch #1516912: improve Modules support for OpenVMS.
Neal Norwitz <nnorwitz@gmail.com>
parents:
38716
diff
changeset
|
636 ioctl(s->sock_fd, FIONBIO, (unsigned int *)&block); |
|
c67b23397f30
Patch #1516912: improve Modules support for OpenVMS.
Neal Norwitz <nnorwitz@gmail.com>
parents:
38716
diff
changeset
|
637 #else /* !PYOS_OS2 && !__VMS */ |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
638 delay_flag = fcntl(s->sock_fd, F_GETFL, 0); |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
639 if (block) |
|
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
|
640 delay_flag &= (~O_NONBLOCK); |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
641 else |
|
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
|
642 delay_flag |= O_NONBLOCK; |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
643 fcntl(s->sock_fd, F_SETFL, delay_flag); |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
644 #endif /* !PYOS_OS2 */ |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
645 #else /* MS_WINDOWS */ |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
646 block = !block; |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
647 ioctlsocket(s->sock_fd, FIONBIO, (u_long*)&block); |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
648 #endif /* MS_WINDOWS */ |
|
29066
90342f395721
Patch #734231: Update RiscOS support. In particular, correct
Martin v. Löwis <martin@v.loewis.de>
parents:
29037
diff
changeset
|
649 #else /* RISCOS */ |
|
90342f395721
Patch #734231: Update RiscOS support. In particular, correct
Martin v. Löwis <martin@v.loewis.de>
parents:
29037
diff
changeset
|
650 block = !block; |
|
90342f395721
Patch #734231: Update RiscOS support. In particular, correct
Martin v. Löwis <martin@v.loewis.de>
parents:
29037
diff
changeset
|
651 socketioctl(s->sock_fd, FIONBIO, (u_long*)&block); |
|
90342f395721
Patch #734231: Update RiscOS support. In particular, correct
Martin v. Löwis <martin@v.loewis.de>
parents:
29037
diff
changeset
|
652 #endif /* RISCOS */ |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
653 #endif /* __BEOS__ */ |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
654 Py_END_ALLOW_THREADS |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
655 |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
656 /* Since these don't return anything */ |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
657 return 1; |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
658 } |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
659 |
|
39059
52a8738f5ab4
#1494314: Fix a regression with high-numbered sockets in 2.4.3. This
Anthony Baxter <anthonybaxter@gmail.com>
parents:
39043
diff
changeset
|
660 /* 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
|
661 The argument writing indicates the direction. |
|
29651
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
662 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
|
663 after they've reacquired the interpreter lock. |
|
39354
85fdcdfca85c
Patch #1519025 and bug #926423: If a KeyboardInterrupt occurs during
Neal Norwitz <nnorwitz@gmail.com>
parents:
39251
diff
changeset
|
664 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
|
665 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
|
666 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
|
667 { |
|
29651
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
668 int n; |
|
23815
203d1412a7e8
Major overhaul of timeout sockets:
Guido van Rossum <guido@python.org>
parents:
23807
diff
changeset
|
669 |
|
24317
29ae8e89153b
Bail out early from internal_select() when socket file descriptor
Guido van Rossum <guido@python.org>
parents:
24305
diff
changeset
|
670 /* Nothing to do unless we're in timeout mode (not non-blocking) */ |
|
23815
203d1412a7e8
Major overhaul of timeout sockets:
Guido van Rossum <guido@python.org>
parents:
23807
diff
changeset
|
671 if (s->sock_timeout <= 0.0) |
|
29651
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
672 return 0; |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
673 |
|
24317
29ae8e89153b
Bail out early from internal_select() when socket file descriptor
Guido van Rossum <guido@python.org>
parents:
24305
diff
changeset
|
674 /* Guard against closed socket */ |
|
29ae8e89153b
Bail out early from internal_select() when socket file descriptor
Guido van Rossum <guido@python.org>
parents:
24305
diff
changeset
|
675 if (s->sock_fd < 0) |
|
29651
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
676 return 0; |
|
24317
29ae8e89153b
Bail out early from internal_select() when socket file descriptor
Guido van Rossum <guido@python.org>
parents:
24305
diff
changeset
|
677 |
|
39059
52a8738f5ab4
#1494314: Fix a regression with high-numbered sockets in 2.4.3. This
Anthony Baxter <anthonybaxter@gmail.com>
parents:
39043
diff
changeset
|
678 /* Prefer poll, if available, since you can poll() any fd |
|
52a8738f5ab4
#1494314: Fix a regression with high-numbered sockets in 2.4.3. This
Anthony Baxter <anthonybaxter@gmail.com>
parents:
39043
diff
changeset
|
679 * which can't be done with select(). */ |
|
52a8738f5ab4
#1494314: Fix a regression with high-numbered sockets in 2.4.3. This
Anthony Baxter <anthonybaxter@gmail.com>
parents:
39043
diff
changeset
|
680 #ifdef HAVE_POLL |
|
52a8738f5ab4
#1494314: Fix a regression with high-numbered sockets in 2.4.3. This
Anthony Baxter <anthonybaxter@gmail.com>
parents:
39043
diff
changeset
|
681 { |
|
52a8738f5ab4
#1494314: Fix a regression with high-numbered sockets in 2.4.3. This
Anthony Baxter <anthonybaxter@gmail.com>
parents:
39043
diff
changeset
|
682 struct pollfd pollfd; |
|
52a8738f5ab4
#1494314: Fix a regression with high-numbered sockets in 2.4.3. This
Anthony Baxter <anthonybaxter@gmail.com>
parents:
39043
diff
changeset
|
683 int timeout; |
|
52a8738f5ab4
#1494314: Fix a regression with high-numbered sockets in 2.4.3. This
Anthony Baxter <anthonybaxter@gmail.com>
parents:
39043
diff
changeset
|
684 |
|
52a8738f5ab4
#1494314: Fix a regression with high-numbered sockets in 2.4.3. This
Anthony Baxter <anthonybaxter@gmail.com>
parents:
39043
diff
changeset
|
685 pollfd.fd = s->sock_fd; |
|
52a8738f5ab4
#1494314: Fix a regression with high-numbered sockets in 2.4.3. This
Anthony Baxter <anthonybaxter@gmail.com>
parents:
39043
diff
changeset
|
686 pollfd.events = writing ? POLLOUT : POLLIN; |
|
52a8738f5ab4
#1494314: Fix a regression with high-numbered sockets in 2.4.3. This
Anthony Baxter <anthonybaxter@gmail.com>
parents:
39043
diff
changeset
|
687 |
|
52a8738f5ab4
#1494314: Fix a regression with high-numbered sockets in 2.4.3. This
Anthony Baxter <anthonybaxter@gmail.com>
parents:
39043
diff
changeset
|
688 /* s->sock_timeout is in seconds, timeout in ms */ |
|
52a8738f5ab4
#1494314: Fix a regression with high-numbered sockets in 2.4.3. This
Anthony Baxter <anthonybaxter@gmail.com>
parents:
39043
diff
changeset
|
689 timeout = (int)(s->sock_timeout * 1000 + 0.5); |
|
52a8738f5ab4
#1494314: Fix a regression with high-numbered sockets in 2.4.3. This
Anthony Baxter <anthonybaxter@gmail.com>
parents:
39043
diff
changeset
|
690 n = poll(&pollfd, 1, timeout); |
|
52a8738f5ab4
#1494314: Fix a regression with high-numbered sockets in 2.4.3. This
Anthony Baxter <anthonybaxter@gmail.com>
parents:
39043
diff
changeset
|
691 } |
|
52a8738f5ab4
#1494314: Fix a regression with high-numbered sockets in 2.4.3. This
Anthony Baxter <anthonybaxter@gmail.com>
parents:
39043
diff
changeset
|
692 #else |
|
52a8738f5ab4
#1494314: Fix a regression with high-numbered sockets in 2.4.3. This
Anthony Baxter <anthonybaxter@gmail.com>
parents:
39043
diff
changeset
|
693 { |
|
52a8738f5ab4
#1494314: Fix a regression with high-numbered sockets in 2.4.3. This
Anthony Baxter <anthonybaxter@gmail.com>
parents:
39043
diff
changeset
|
694 /* Construct the arguments to select */ |
|
52a8738f5ab4
#1494314: Fix a regression with high-numbered sockets in 2.4.3. This
Anthony Baxter <anthonybaxter@gmail.com>
parents:
39043
diff
changeset
|
695 fd_set fds; |
|
52a8738f5ab4
#1494314: Fix a regression with high-numbered sockets in 2.4.3. This
Anthony Baxter <anthonybaxter@gmail.com>
parents:
39043
diff
changeset
|
696 struct timeval tv; |
|
52a8738f5ab4
#1494314: Fix a regression with high-numbered sockets in 2.4.3. This
Anthony Baxter <anthonybaxter@gmail.com>
parents:
39043
diff
changeset
|
697 tv.tv_sec = (int)s->sock_timeout; |
|
52a8738f5ab4
#1494314: Fix a regression with high-numbered sockets in 2.4.3. This
Anthony Baxter <anthonybaxter@gmail.com>
parents:
39043
diff
changeset
|
698 tv.tv_usec = (int)((s->sock_timeout - tv.tv_sec) * 1e6); |
|
52a8738f5ab4
#1494314: Fix a regression with high-numbered sockets in 2.4.3. This
Anthony Baxter <anthonybaxter@gmail.com>
parents:
39043
diff
changeset
|
699 FD_ZERO(&fds); |
|
52a8738f5ab4
#1494314: Fix a regression with high-numbered sockets in 2.4.3. This
Anthony Baxter <anthonybaxter@gmail.com>
parents:
39043
diff
changeset
|
700 FD_SET(s->sock_fd, &fds); |
|
52a8738f5ab4
#1494314: Fix a regression with high-numbered sockets in 2.4.3. This
Anthony Baxter <anthonybaxter@gmail.com>
parents:
39043
diff
changeset
|
701 |
|
52a8738f5ab4
#1494314: Fix a regression with high-numbered sockets in 2.4.3. This
Anthony Baxter <anthonybaxter@gmail.com>
parents:
39043
diff
changeset
|
702 /* See if the socket is ready */ |
|
52a8738f5ab4
#1494314: Fix a regression with high-numbered sockets in 2.4.3. This
Anthony Baxter <anthonybaxter@gmail.com>
parents:
39043
diff
changeset
|
703 if (writing) |
|
52a8738f5ab4
#1494314: Fix a regression with high-numbered sockets in 2.4.3. This
Anthony Baxter <anthonybaxter@gmail.com>
parents:
39043
diff
changeset
|
704 n = select(s->sock_fd+1, NULL, &fds, NULL, &tv); |
|
52a8738f5ab4
#1494314: Fix a regression with high-numbered sockets in 2.4.3. This
Anthony Baxter <anthonybaxter@gmail.com>
parents:
39043
diff
changeset
|
705 else |
|
52a8738f5ab4
#1494314: Fix a regression with high-numbered sockets in 2.4.3. This
Anthony Baxter <anthonybaxter@gmail.com>
parents:
39043
diff
changeset
|
706 n = select(s->sock_fd+1, &fds, NULL, NULL, &tv); |
|
52a8738f5ab4
#1494314: Fix a regression with high-numbered sockets in 2.4.3. This
Anthony Baxter <anthonybaxter@gmail.com>
parents:
39043
diff
changeset
|
707 } |
|
52a8738f5ab4
#1494314: Fix a regression with high-numbered sockets in 2.4.3. This
Anthony Baxter <anthonybaxter@gmail.com>
parents:
39043
diff
changeset
|
708 #endif |
|
39354
85fdcdfca85c
Patch #1519025 and bug #926423: If a KeyboardInterrupt occurs during
Neal Norwitz <nnorwitz@gmail.com>
parents:
39251
diff
changeset
|
709 |
|
85fdcdfca85c
Patch #1519025 and bug #926423: If a KeyboardInterrupt occurs during
Neal Norwitz <nnorwitz@gmail.com>
parents:
39251
diff
changeset
|
710 if (n < 0) |
|
85fdcdfca85c
Patch #1519025 and bug #926423: If a KeyboardInterrupt occurs during
Neal Norwitz <nnorwitz@gmail.com>
parents:
39251
diff
changeset
|
711 return -1; |
|
29651
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
712 if (n == 0) |
|
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
713 return 1; |
|
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
714 return 0; |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
715 } |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
716 |
|
20727
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
717 /* 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
|
718 |
|
24305
428cbbf05639
A Python float is a C double; redeclare defaulttimeout as such; stops
Tim Peters <tim.peters@gmail.com>
parents:
24303
diff
changeset
|
719 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
|
720 |
|
24363
979ff5d0ae07
Replace DL_IMPORT with PyMODINIT_FUNC and remove "/export:init..." link
Mark Hammond <mhammond@skippinet.com.au>
parents:
24317
diff
changeset
|
721 PyMODINIT_FUNC |
|
20727
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
722 init_sockobject(PySocketSockObject *s, |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
723 SOCKET_T fd, int family, int type, int proto) |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
724 { |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
725 #ifdef RISCOS |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
726 int block = 1; |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
727 #endif |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
728 s->sock_fd = fd; |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
729 s->sock_family = family; |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
730 s->sock_type = type; |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
731 s->sock_proto = proto; |
|
24293
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
732 s->sock_timeout = defaulttimeout; |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
733 |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
734 s->errorhandler = &set_error; |
|
24293
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
735 |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
736 if (defaulttimeout >= 0.0) |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
737 internal_setblocking(s, 0); |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
738 |
|
20727
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
739 #ifdef RISCOS |
|
23723
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
740 if (taskwindow) |
|
20727
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
741 socketioctl(s->sock_fd, 0x80046679, (u_long*)&block); |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
742 #endif |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
743 } |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
744 |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
745 |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
746 /* Create a new socket object. |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
747 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
|
748 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
|
749 in NEWOBJ()). */ |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
750 |
| 1970 | 751 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
|
752 new_sockobject(SOCKET_T fd, int family, int type, int proto) |
| 294 | 753 { |
| 1970 | 754 PySocketSockObject *s; |
|
20727
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
755 s = (PySocketSockObject *) |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
756 PyType_GenericNew(&sock_type, NULL, NULL); |
|
20727
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
757 if (s != NULL) |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
758 init_sockobject(s, fd, family, type, proto); |
| 294 | 759 return s; |
| 760 } | |
| 761 | |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
762 |
|
16947
b25131bc6ec7
RISCOS changes by dschwertberger.
Guido van Rossum <guido@python.org>
parents:
16472
diff
changeset
|
763 /* 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
|
764 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
|
765 #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
|
766 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
|
767 #endif |
|
ee2aaa2f722a
Threading speedup patches by Christopher Lindblad <cjl@infoseek.com>.
Guido van Rossum <guido@python.org>
parents:
6718
diff
changeset
|
768 |
|
ee2aaa2f722a
Threading speedup patches by Christopher Lindblad <cjl@infoseek.com>.
Guido van Rossum <guido@python.org>
parents:
6718
diff
changeset
|
769 |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
770 /* 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
|
771 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
|
772 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
|
773 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
|
774 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
|
775 |
| 294 | 776 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
|
777 setipaddr(char *name, struct sockaddr *addr_ret, size_t addr_ret_size, int af) |
| 294 | 778 { |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
779 struct addrinfo hints, *res; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
780 int error; |
|
28925
a769e079bb12
Patch 731209: Restore socketmodule's behaviour with dotted quad addresses
Anthony Baxter <anthonybaxter@gmail.com>
parents:
28913
diff
changeset
|
781 int d1, d2, d3, d4; |
|
a769e079bb12
Patch 731209: Restore socketmodule's behaviour with dotted quad addresses
Anthony Baxter <anthonybaxter@gmail.com>
parents:
28913
diff
changeset
|
782 char ch; |
| 294 | 783 |
| 4600 | 784 memset((void *) addr_ret, '\0', sizeof(*addr_ret)); |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
785 if (name[0] == '\0') { |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
786 int siz; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
787 memset(&hints, 0, sizeof(hints)); |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
788 hints.ai_family = af; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
789 hints.ai_socktype = SOCK_DGRAM; /*dummy*/ |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
790 hints.ai_flags = AI_PASSIVE; |
|
29035
e1d5ca8ab7dc
[ 731644] & [ 604210 ] Release the GIL around getaddrinfo(), yet protect
Just van Rossum <just@letterror.com>
parents:
28953
diff
changeset
|
791 Py_BEGIN_ALLOW_THREADS |
|
e1d5ca8ab7dc
[ 731644] & [ 604210 ] Release the GIL around getaddrinfo(), yet protect
Just van Rossum <just@letterror.com>
parents:
28953
diff
changeset
|
792 ACQUIRE_GETADDRINFO_LOCK |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
793 error = getaddrinfo(NULL, "0", &hints, &res); |
|
29035
e1d5ca8ab7dc
[ 731644] & [ 604210 ] Release the GIL around getaddrinfo(), yet protect
Just van Rossum <just@letterror.com>
parents:
28953
diff
changeset
|
794 Py_END_ALLOW_THREADS |
|
e1d5ca8ab7dc
[ 731644] & [ 604210 ] Release the GIL around getaddrinfo(), yet protect
Just van Rossum <just@letterror.com>
parents:
28953
diff
changeset
|
795 /* We assume that those thread-unsafe getaddrinfo() versions |
|
e1d5ca8ab7dc
[ 731644] & [ 604210 ] Release the GIL around getaddrinfo(), yet protect
Just van Rossum <just@letterror.com>
parents:
28953
diff
changeset
|
796 *are* safe regarding their return value, ie. that a |
|
e1d5ca8ab7dc
[ 731644] & [ 604210 ] Release the GIL around getaddrinfo(), yet protect
Just van Rossum <just@letterror.com>
parents:
28953
diff
changeset
|
797 subsequent call to getaddrinfo() does not destroy the |
|
e1d5ca8ab7dc
[ 731644] & [ 604210 ] Release the GIL around getaddrinfo(), yet protect
Just van Rossum <just@letterror.com>
parents:
28953
diff
changeset
|
798 outcome of the first call. */ |
|
e1d5ca8ab7dc
[ 731644] & [ 604210 ] Release the GIL around getaddrinfo(), yet protect
Just van Rossum <just@letterror.com>
parents:
28953
diff
changeset
|
799 RELEASE_GETADDRINFO_LOCK |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
800 if (error) { |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
801 set_gaierror(error); |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
802 return -1; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
803 } |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
804 switch (res->ai_family) { |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
805 case AF_INET: |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
806 siz = 4; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
807 break; |
|
21128
15ff504632ed
Remove INET6 define. Use ENABLE_IPV6 instead.
Martin v. Löwis <martin@v.loewis.de>
parents:
21094
diff
changeset
|
808 #ifdef ENABLE_IPV6 |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
809 case AF_INET6: |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
810 siz = 16; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
811 break; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
812 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
813 default: |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
814 freeaddrinfo(res); |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
815 PyErr_SetString(socket_error, |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
816 "unsupported address family"); |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
817 return -1; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
818 } |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
819 if (res->ai_next) { |
|
20912
06d95b6877c4
Fix memory leaks detecting in bug report #478003.
Martin v. Löwis <martin@v.loewis.de>
parents:
20871
diff
changeset
|
820 freeaddrinfo(res); |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
821 PyErr_SetString(socket_error, |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
822 "wildcard resolved to multiple address"); |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
823 return -1; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
824 } |
|
24411
8e266d0acd10
Pass length of result structure into setipaddr. Fixes bug #565747.
Martin v. Löwis <martin@v.loewis.de>
parents:
24380
diff
changeset
|
825 if (res->ai_addrlen < addr_ret_size) |
|
8e266d0acd10
Pass length of result structure into setipaddr. Fixes bug #565747.
Martin v. Löwis <martin@v.loewis.de>
parents:
24380
diff
changeset
|
826 addr_ret_size = res->ai_addrlen; |
|
8e266d0acd10
Pass length of result structure into setipaddr. Fixes bug #565747.
Martin v. Löwis <martin@v.loewis.de>
parents:
24380
diff
changeset
|
827 memcpy(addr_ret, res->ai_addr, addr_ret_size); |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
828 freeaddrinfo(res); |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
829 return siz; |
| 294 | 830 } |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
831 if (name[0] == '<' && strcmp(name, "<broadcast>") == 0) { |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
832 struct sockaddr_in *sin; |
|
26597
7ddea4dfa519
Patch #650422: Use Posix AF_ constants instead of PF_ ones.
Martin v. Löwis <martin@v.loewis.de>
parents:
26551
diff
changeset
|
833 if (af != AF_INET && af != AF_UNSPEC) { |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
834 PyErr_SetString(socket_error, |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
835 "address family mismatched"); |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
836 return -1; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
837 } |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
838 sin = (struct sockaddr_in *)addr_ret; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
839 memset((void *) sin, '\0', sizeof(*sin)); |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
840 sin->sin_family = AF_INET; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
841 #ifdef HAVE_SOCKADDR_SA_LEN |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
842 sin->sin_len = sizeof(*sin); |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
843 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
844 sin->sin_addr.s_addr = INADDR_BROADCAST; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
845 return sizeof(sin->sin_addr); |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
846 } |
|
28925
a769e079bb12
Patch 731209: Restore socketmodule's behaviour with dotted quad addresses
Anthony Baxter <anthonybaxter@gmail.com>
parents:
28913
diff
changeset
|
847 if (sscanf(name, "%d.%d.%d.%d%c", &d1, &d2, &d3, &d4, &ch) == 4 && |
|
a769e079bb12
Patch 731209: Restore socketmodule's behaviour with dotted quad addresses
Anthony Baxter <anthonybaxter@gmail.com>
parents:
28913
diff
changeset
|
848 0 <= d1 && d1 <= 255 && 0 <= d2 && d2 <= 255 && |
|
a769e079bb12
Patch 731209: Restore socketmodule's behaviour with dotted quad addresses
Anthony Baxter <anthonybaxter@gmail.com>
parents:
28913
diff
changeset
|
849 0 <= d3 && d3 <= 255 && 0 <= d4 && d4 <= 255) { |
|
a769e079bb12
Patch 731209: Restore socketmodule's behaviour with dotted quad addresses
Anthony Baxter <anthonybaxter@gmail.com>
parents:
28913
diff
changeset
|
850 struct sockaddr_in *sin; |
|
a769e079bb12
Patch 731209: Restore socketmodule's behaviour with dotted quad addresses
Anthony Baxter <anthonybaxter@gmail.com>
parents:
28913
diff
changeset
|
851 sin = (struct sockaddr_in *)addr_ret; |
|
a769e079bb12
Patch 731209: Restore socketmodule's behaviour with dotted quad addresses
Anthony Baxter <anthonybaxter@gmail.com>
parents:
28913
diff
changeset
|
852 sin->sin_addr.s_addr = htonl( |
|
a769e079bb12
Patch 731209: Restore socketmodule's behaviour with dotted quad addresses
Anthony Baxter <anthonybaxter@gmail.com>
parents:
28913
diff
changeset
|
853 ((long) d1 << 24) | ((long) d2 << 16) | |
|
a769e079bb12
Patch 731209: Restore socketmodule's behaviour with dotted quad addresses
Anthony Baxter <anthonybaxter@gmail.com>
parents:
28913
diff
changeset
|
854 ((long) d3 << 8) | ((long) d4 << 0)); |
|
a769e079bb12
Patch 731209: Restore socketmodule's behaviour with dotted quad addresses
Anthony Baxter <anthonybaxter@gmail.com>
parents:
28913
diff
changeset
|
855 sin->sin_family = AF_INET; |
|
a769e079bb12
Patch 731209: Restore socketmodule's behaviour with dotted quad addresses
Anthony Baxter <anthonybaxter@gmail.com>
parents:
28913
diff
changeset
|
856 #ifdef HAVE_SOCKADDR_SA_LEN |
|
a769e079bb12
Patch 731209: Restore socketmodule's behaviour with dotted quad addresses
Anthony Baxter <anthonybaxter@gmail.com>
parents:
28913
diff
changeset
|
857 sin->sin_len = sizeof(*sin); |
|
a769e079bb12
Patch 731209: Restore socketmodule's behaviour with dotted quad addresses
Anthony Baxter <anthonybaxter@gmail.com>
parents:
28913
diff
changeset
|
858 #endif |
|
a769e079bb12
Patch 731209: Restore socketmodule's behaviour with dotted quad addresses
Anthony Baxter <anthonybaxter@gmail.com>
parents:
28913
diff
changeset
|
859 return 4; |
|
a769e079bb12
Patch 731209: Restore socketmodule's behaviour with dotted quad addresses
Anthony Baxter <anthonybaxter@gmail.com>
parents:
28913
diff
changeset
|
860 } |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
861 memset(&hints, 0, sizeof(hints)); |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
862 hints.ai_family = af; |
|
29035
e1d5ca8ab7dc
[ 731644] & [ 604210 ] Release the GIL around getaddrinfo(), yet protect
Just van Rossum <just@letterror.com>
parents:
28953
diff
changeset
|
863 Py_BEGIN_ALLOW_THREADS |
|
e1d5ca8ab7dc
[ 731644] & [ 604210 ] Release the GIL around getaddrinfo(), yet protect
Just van Rossum <just@letterror.com>
parents:
28953
diff
changeset
|
864 ACQUIRE_GETADDRINFO_LOCK |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
865 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
|
866 #if defined(__digital__) && defined(__unix__) |
|
23723
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
867 if (error == EAI_NONAME && af == AF_UNSPEC) { |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
868 /* On Tru64 V5.1, numeric-to-addr conversion fails |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
869 if no address family is given. Assume IPv4 for now.*/ |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
870 hints.ai_family = AF_INET; |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
871 error = getaddrinfo(name, NULL, &hints, &res); |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
872 } |
|
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
|
873 #endif |
|
29035
e1d5ca8ab7dc
[ 731644] & [ 604210 ] Release the GIL around getaddrinfo(), yet protect
Just van Rossum <just@letterror.com>
parents:
28953
diff
changeset
|
874 Py_END_ALLOW_THREADS |
|
e1d5ca8ab7dc
[ 731644] & [ 604210 ] Release the GIL around getaddrinfo(), yet protect
Just van Rossum <just@letterror.com>
parents:
28953
diff
changeset
|
875 RELEASE_GETADDRINFO_LOCK /* see comment in setipaddr() */ |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
876 if (error) { |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
877 set_gaierror(error); |
| 294 | 878 return -1; |
| 879 } | |
|
24411
8e266d0acd10
Pass length of result structure into setipaddr. Fixes bug #565747.
Martin v. Löwis <martin@v.loewis.de>
parents:
24380
diff
changeset
|
880 if (res->ai_addrlen < addr_ret_size) |
|
8e266d0acd10
Pass length of result structure into setipaddr. Fixes bug #565747.
Martin v. Löwis <martin@v.loewis.de>
parents:
24380
diff
changeset
|
881 addr_ret_size = res->ai_addrlen; |
|
8e266d0acd10
Pass length of result structure into setipaddr. Fixes bug #565747.
Martin v. Löwis <martin@v.loewis.de>
parents:
24380
diff
changeset
|
882 memcpy((char *) addr_ret, res->ai_addr, addr_ret_size); |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
883 freeaddrinfo(res); |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
884 switch (addr_ret->sa_family) { |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
885 case AF_INET: |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
886 return 4; |
|
21128
15ff504632ed
Remove INET6 define. Use ENABLE_IPV6 instead.
Martin v. Löwis <martin@v.loewis.de>
parents:
21094
diff
changeset
|
887 #ifdef ENABLE_IPV6 |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
888 case AF_INET6: |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
889 return 16; |
|
10441
9ba5dffccb1b
Jonathan Giddy writes:
Guido van Rossum <guido@python.org>
parents:
10401
diff
changeset
|
890 #endif |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
891 default: |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
892 PyErr_SetString(socket_error, "unknown address family"); |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
893 return -1; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
894 } |
| 294 | 895 } |
| 896 | |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
897 |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
898 /* 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
|
899 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
|
900 size numbers). */ |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
901 |
| 1970 | 902 static PyObject * |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
903 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
|
904 { |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
905 char buf[NI_MAXHOST]; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
906 int error; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
907 |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
908 error = getnameinfo(addr, addrlen, buf, sizeof(buf), NULL, 0, |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
909 NI_NUMERICHOST); |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
910 if (error) { |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
911 set_gaierror(error); |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
912 return NULL; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
913 } |
|
47527
52294af4b663
This reverts r63675 based on the discussion in this thread:
Gregory P. Smith <greg@mad-scientist.com>
parents:
47294
diff
changeset
|
914 return PyString_FromString(buf); |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
915 } |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
916 |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
917 |
|
32213
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
918 #ifdef USE_BLUETOOTH |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
919 /* 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
|
920 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
|
921 an error occurred. */ |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
922 |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
923 static int |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
924 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
|
925 { |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
926 unsigned int b0, b1, b2, b3, b4, b5; |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
927 char ch; |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
928 int n; |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
929 |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
930 n = sscanf(name, "%X:%X:%X:%X:%X:%X%c", |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
931 &b5, &b4, &b3, &b2, &b1, &b0, &ch); |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
932 if (n == 6 && (b0 | b1 | b2 | b3 | b4 | b5) < 256) { |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
933 bdaddr->b[0] = b0; |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
934 bdaddr->b[1] = b1; |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
935 bdaddr->b[2] = b2; |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
936 bdaddr->b[3] = b3; |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
937 bdaddr->b[4] = b4; |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
938 bdaddr->b[5] = b5; |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
939 return 6; |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
940 } else { |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
941 PyErr_SetString(socket_error, "bad bluetooth address"); |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
942 return -1; |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
943 } |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
944 } |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
945 |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
946 /* 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
|
947 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
|
948 value (zero padded if necessary). */ |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
949 |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
950 static PyObject * |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
951 makebdaddr(bdaddr_t *bdaddr) |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
952 { |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
953 char buf[(6 * 2) + 5 + 1]; |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
954 |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
955 sprintf(buf, "%02X:%02X:%02X:%02X:%02X:%02X", |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
956 bdaddr->b[5], bdaddr->b[4], bdaddr->b[3], |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
957 bdaddr->b[2], bdaddr->b[1], bdaddr->b[0]); |
|
47527
52294af4b663
This reverts r63675 based on the discussion in this thread:
Gregory P. Smith <greg@mad-scientist.com>
parents:
47294
diff
changeset
|
958 return PyString_FromString(buf); |
|
32213
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
959 } |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
960 #endif |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
961 |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
962 |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
963 /* 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
|
964 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
|
965 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
|
966 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
|
967 |
| 294 | 968 /*ARGSUSED*/ |
| 1970 | 969 static PyObject * |
|
32213
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
970 makesockaddr(int sockfd, struct sockaddr *addr, int addrlen, int proto) |
| 294 | 971 { |
|
925
61143bf03b44
Sometimes, recvfrom() returns an empty address; this is not an error.
Guido van Rossum <guido@python.org>
parents:
902
diff
changeset
|
972 if (addrlen == 0) { |
|
61143bf03b44
Sometimes, recvfrom() returns an empty address; this is not an error.
Guido van Rossum <guido@python.org>
parents:
902
diff
changeset
|
973 /* No address -- may be recvfrom() from known socket */ |
| 1970 | 974 Py_INCREF(Py_None); |
| 975 return Py_None; | |
|
925
61143bf03b44
Sometimes, recvfrom() returns an empty address; this is not an error.
Guido van Rossum <guido@python.org>
parents:
902
diff
changeset
|
976 } |
|
61143bf03b44
Sometimes, recvfrom() returns an empty address; this is not an error.
Guido van Rossum <guido@python.org>
parents:
902
diff
changeset
|
977 |
|
8823
f2a4a2b60860
Changes for BeOS, QNX and long long, by Chris Herborth.
Guido van Rossum <guido@python.org>
parents:
8821
diff
changeset
|
978 #ifdef __BEOS__ |
|
12492
1725e802e3eb
Patch by Charles G Waldman:
Guido van Rossum <guido@python.org>
parents:
12479
diff
changeset
|
979 /* XXX: BeOS version of accept() doesn't set family correctly */ |
|
8823
f2a4a2b60860
Changes for BeOS, QNX and long long, by Chris Herborth.
Guido van Rossum <guido@python.org>
parents:
8821
diff
changeset
|
980 addr->sa_family = AF_INET; |
|
f2a4a2b60860
Changes for BeOS, QNX and long long, by Chris Herborth.
Guido van Rossum <guido@python.org>
parents:
8821
diff
changeset
|
981 #endif |
|
f2a4a2b60860
Changes for BeOS, QNX and long long, by Chris Herborth.
Guido van Rossum <guido@python.org>
parents:
8821
diff
changeset
|
982 |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
983 switch (addr->sa_family) { |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
984 |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
985 case AF_INET: |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
986 { |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
987 struct sockaddr_in *a; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
988 PyObject *addrobj = makeipaddr(addr, sizeof(*a)); |
|
4871
a7159ba0e45d
Check of return values and proper error handling.
Barry Warsaw <barry@python.org>
parents:
4783
diff
changeset
|
989 PyObject *ret = NULL; |
|
a7159ba0e45d
Check of return values and proper error handling.
Barry Warsaw <barry@python.org>
parents:
4783
diff
changeset
|
990 if (addrobj) { |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
991 a = (struct sockaddr_in *)addr; |
|
4871
a7159ba0e45d
Check of return values and proper error handling.
Barry Warsaw <barry@python.org>
parents:
4783
diff
changeset
|
992 ret = Py_BuildValue("Oi", addrobj, ntohs(a->sin_port)); |
|
a7159ba0e45d
Check of return values and proper error handling.
Barry Warsaw <barry@python.org>
parents:
4783
diff
changeset
|
993 Py_DECREF(addrobj); |
|
a7159ba0e45d
Check of return values and proper error handling.
Barry Warsaw <barry@python.org>
parents:
4783
diff
changeset
|
994 } |
|
1207
b564bd4e57e1
* ceval.c: ifdef out the last argument passing compat hack.
Guido van Rossum <guido@python.org>
parents:
1132
diff
changeset
|
995 return ret; |
| 294 | 996 } |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
997 |
|
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
|
998 #if defined(AF_UNIX) |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
999 case AF_UNIX: |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1000 { |
| 294 | 1001 struct sockaddr_un *a = (struct sockaddr_un *) addr; |
|
37853
29257ef6abeb
SF Patch #1062014: AF_UNIX sockets under Linux have a special
Armin Rigo <arigo@tunes.org>
parents:
37732
diff
changeset
|
1002 #ifdef linux |
|
29257ef6abeb
SF Patch #1062014: AF_UNIX sockets under Linux have a special
Armin Rigo <arigo@tunes.org>
parents:
37732
diff
changeset
|
1003 if (a->sun_path[0] == 0) { /* Linux abstract namespace */ |
| 44887 | 1004 addrlen -= offsetof(struct sockaddr_un, sun_path); |
|
47527
52294af4b663
This reverts r63675 based on the discussion in this thread:
Gregory P. Smith <greg@mad-scientist.com>
parents:
47294
diff
changeset
|
1005 return PyString_FromStringAndSize(a->sun_path, |
|
37853
29257ef6abeb
SF Patch #1062014: AF_UNIX sockets under Linux have a special
Armin Rigo <arigo@tunes.org>
parents:
37732
diff
changeset
|
1006 addrlen); |
|
29257ef6abeb
SF Patch #1062014: AF_UNIX sockets under Linux have a special
Armin Rigo <arigo@tunes.org>
parents:
37732
diff
changeset
|
1007 } |
|
29257ef6abeb
SF Patch #1062014: AF_UNIX sockets under Linux have a special
Armin Rigo <arigo@tunes.org>
parents:
37732
diff
changeset
|
1008 else |
|
29257ef6abeb
SF Patch #1062014: AF_UNIX sockets under Linux have a special
Armin Rigo <arigo@tunes.org>
parents:
37732
diff
changeset
|
1009 #endif /* linux */ |
|
29257ef6abeb
SF Patch #1062014: AF_UNIX sockets under Linux have a special
Armin Rigo <arigo@tunes.org>
parents:
37732
diff
changeset
|
1010 { |
|
29257ef6abeb
SF Patch #1062014: AF_UNIX sockets under Linux have a special
Armin Rigo <arigo@tunes.org>
parents:
37732
diff
changeset
|
1011 /* regular NULL-terminated string */ |
|
47527
52294af4b663
This reverts r63675 based on the discussion in this thread:
Gregory P. Smith <greg@mad-scientist.com>
parents:
47294
diff
changeset
|
1012 return PyString_FromString(a->sun_path); |
|
37853
29257ef6abeb
SF Patch #1062014: AF_UNIX sockets under Linux have a special
Armin Rigo <arigo@tunes.org>
parents:
37732
diff
changeset
|
1013 } |
| 294 | 1014 } |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
1015 #endif /* AF_UNIX */ |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
1016 |
|
36286
ae4480935016
Patch #1103116: AF_NETLINK sockets basic support.
Martin v. Löwis <martin@v.loewis.de>
parents:
36090
diff
changeset
|
1017 #if defined(AF_NETLINK) |
|
ae4480935016
Patch #1103116: AF_NETLINK sockets basic support.
Martin v. Löwis <martin@v.loewis.de>
parents:
36090
diff
changeset
|
1018 case AF_NETLINK: |
|
ae4480935016
Patch #1103116: AF_NETLINK sockets basic support.
Martin v. Löwis <martin@v.loewis.de>
parents:
36090
diff
changeset
|
1019 { |
|
ae4480935016
Patch #1103116: AF_NETLINK sockets basic support.
Martin v. Löwis <martin@v.loewis.de>
parents:
36090
diff
changeset
|
1020 struct sockaddr_nl *a = (struct sockaddr_nl *) addr; |
|
36289
7ca51cb70c2e
Change build format of netlink addresses.
Martin v. Löwis <martin@v.loewis.de>
parents:
36286
diff
changeset
|
1021 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
|
1022 } |
|
ae4480935016
Patch #1103116: AF_NETLINK sockets basic support.
Martin v. Löwis <martin@v.loewis.de>
parents:
36090
diff
changeset
|
1023 #endif /* AF_NETLINK */ |
|
ae4480935016
Patch #1103116: AF_NETLINK sockets basic support.
Martin v. Löwis <martin@v.loewis.de>
parents:
36090
diff
changeset
|
1024 |
|
21128
15ff504632ed
Remove INET6 define. Use ENABLE_IPV6 instead.
Martin v. Löwis <martin@v.loewis.de>
parents:
21094
diff
changeset
|
1025 #ifdef ENABLE_IPV6 |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
1026 case AF_INET6: |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
1027 { |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
1028 struct sockaddr_in6 *a; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
1029 PyObject *addrobj = makeipaddr(addr, sizeof(*a)); |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
1030 PyObject *ret = NULL; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
1031 if (addrobj) { |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
1032 a = (struct sockaddr_in6 *)addr; |
|
23723
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
1033 ret = Py_BuildValue("Oiii", |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
1034 addrobj, |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
1035 ntohs(a->sin6_port), |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
1036 a->sin6_flowinfo, |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
1037 a->sin6_scope_id); |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
1038 Py_DECREF(addrobj); |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
1039 } |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
1040 return ret; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
1041 } |
|
16410
3d4a7cd0bf17
SF patch 101137 from Grant Edwards
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16400
diff
changeset
|
1042 #endif |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1043 |
|
32213
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1044 #ifdef USE_BLUETOOTH |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1045 case AF_BLUETOOTH: |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1046 switch (proto) { |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1047 |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1048 case BTPROTO_L2CAP: |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1049 { |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1050 struct sockaddr_l2 *a = (struct sockaddr_l2 *) addr; |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1051 PyObject *addrobj = makebdaddr(&_BT_L2_MEMB(a, bdaddr)); |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1052 PyObject *ret = NULL; |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1053 if (addrobj) { |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1054 ret = Py_BuildValue("Oi", |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1055 addrobj, |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1056 _BT_L2_MEMB(a, psm)); |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1057 Py_DECREF(addrobj); |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1058 } |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1059 return ret; |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1060 } |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1061 |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1062 case BTPROTO_RFCOMM: |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1063 { |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1064 struct sockaddr_rc *a = (struct sockaddr_rc *) addr; |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1065 PyObject *addrobj = makebdaddr(&_BT_RC_MEMB(a, bdaddr)); |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1066 PyObject *ret = NULL; |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1067 if (addrobj) { |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1068 ret = Py_BuildValue("Oi", |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1069 addrobj, |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1070 _BT_RC_MEMB(a, channel)); |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1071 Py_DECREF(addrobj); |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1072 } |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1073 return ret; |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1074 } |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1075 |
|
40842
90e22fea8363
Patch #1432399: Add HCI sockets.
Martin v. Löwis <martin@v.loewis.de>
parents:
40837
diff
changeset
|
1076 case BTPROTO_HCI: |
|
90e22fea8363
Patch #1432399: Add HCI sockets.
Martin v. Löwis <martin@v.loewis.de>
parents:
40837
diff
changeset
|
1077 { |
|
90e22fea8363
Patch #1432399: Add HCI sockets.
Martin v. Löwis <martin@v.loewis.de>
parents:
40837
diff
changeset
|
1078 struct sockaddr_hci *a = (struct sockaddr_hci *) addr; |
|
90e22fea8363
Patch #1432399: Add HCI sockets.
Martin v. Löwis <martin@v.loewis.de>
parents:
40837
diff
changeset
|
1079 PyObject *ret = NULL; |
|
90e22fea8363
Patch #1432399: Add HCI sockets.
Martin v. Löwis <martin@v.loewis.de>
parents:
40837
diff
changeset
|
1080 ret = Py_BuildValue("i", _BT_HCI_MEMB(a, dev)); |
|
90e22fea8363
Patch #1432399: Add HCI sockets.
Martin v. Löwis <martin@v.loewis.de>
parents:
40837
diff
changeset
|
1081 return ret; |
|
90e22fea8363
Patch #1432399: Add HCI sockets.
Martin v. Löwis <martin@v.loewis.de>
parents:
40837
diff
changeset
|
1082 } |
|
90e22fea8363
Patch #1432399: Add HCI sockets.
Martin v. Löwis <martin@v.loewis.de>
parents:
40837
diff
changeset
|
1083 |
|
32213
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1084 #if !defined(__FreeBSD__) |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1085 case BTPROTO_SCO: |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1086 { |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1087 struct sockaddr_sco *a = (struct sockaddr_sco *) addr; |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1088 return makebdaddr(&_BT_SCO_MEMB(a, bdaddr)); |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1089 } |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1090 #endif |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1091 |
|
58695
54e975582c65
Issue #4772: Raise a ValueError when an unknown Bluetooth protocol is
Antoine Pitrou <solipsis@pitrou.net>
parents:
56212
diff
changeset
|
1092 default: |
|
54e975582c65
Issue #4772: Raise a ValueError when an unknown Bluetooth protocol is
Antoine Pitrou <solipsis@pitrou.net>
parents:
56212
diff
changeset
|
1093 PyErr_SetString(PyExc_ValueError, |
|
54e975582c65
Issue #4772: Raise a ValueError when an unknown Bluetooth protocol is
Antoine Pitrou <solipsis@pitrou.net>
parents:
56212
diff
changeset
|
1094 "Unknown Bluetooth protocol"); |
|
54e975582c65
Issue #4772: Raise a ValueError when an unknown Bluetooth protocol is
Antoine Pitrou <solipsis@pitrou.net>
parents:
56212
diff
changeset
|
1095 return NULL; |
|
32213
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1096 } |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1097 #endif |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1098 |
|
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
|
1099 #ifdef HAVE_NETPACKET_PACKET_H |
|
16410
3d4a7cd0bf17
SF patch 101137 from Grant Edwards
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16400
diff
changeset
|
1100 case AF_PACKET: |
|
3d4a7cd0bf17
SF patch 101137 from Grant Edwards
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16400
diff
changeset
|
1101 { |
|
3d4a7cd0bf17
SF patch 101137 from Grant Edwards
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16400
diff
changeset
|
1102 struct sockaddr_ll *a = (struct sockaddr_ll *)addr; |
|
3d4a7cd0bf17
SF patch 101137 from Grant Edwards
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16400
diff
changeset
|
1103 char *ifname = ""; |
|
3d4a7cd0bf17
SF patch 101137 from Grant Edwards
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16400
diff
changeset
|
1104 struct ifreq ifr; |
|
16427
c8ef864ba861
fix a couple last-minute bugs in the raw socket support
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16410
diff
changeset
|
1105 /* need to look up interface name give index */ |
|
c8ef864ba861
fix a couple last-minute bugs in the raw socket support
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16410
diff
changeset
|
1106 if (a->sll_ifindex) { |
|
16410
3d4a7cd0bf17
SF patch 101137 from Grant Edwards
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16400
diff
changeset
|
1107 ifr.ifr_ifindex = a->sll_ifindex; |
|
16427
c8ef864ba861
fix a couple last-minute bugs in the raw socket support
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16410
diff
changeset
|
1108 if (ioctl(sockfd, SIOCGIFNAME, &ifr) == 0) |
|
16410
3d4a7cd0bf17
SF patch 101137 from Grant Edwards
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16400
diff
changeset
|
1109 ifname = ifr.ifr_name; |
|
3d4a7cd0bf17
SF patch 101137 from Grant Edwards
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16400
diff
changeset
|
1110 } |
|
23723
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
1111 return Py_BuildValue("shbhs#", |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
1112 ifname, |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
1113 ntohs(a->sll_protocol), |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
1114 a->sll_pkttype, |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
1115 a->sll_hatype, |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
1116 a->sll_addr, |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
1117 a->sll_halen); |
|
16410
3d4a7cd0bf17
SF patch 101137 from Grant Edwards
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16400
diff
changeset
|
1118 } |
|
3d4a7cd0bf17
SF patch 101137 from Grant Edwards
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16400
diff
changeset
|
1119 #endif |
|
16947
b25131bc6ec7
RISCOS changes by dschwertberger.
Guido van Rossum <guido@python.org>
parents:
16472
diff
changeset
|
1120 |
|
44561
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1121 #ifdef HAVE_LINUX_TIPC_H |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1122 case AF_TIPC: |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1123 { |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1124 struct sockaddr_tipc *a = (struct sockaddr_tipc *) addr; |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1125 if (a->addrtype == TIPC_ADDR_NAMESEQ) { |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1126 return Py_BuildValue("IIIII", |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1127 a->addrtype, |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1128 a->addr.nameseq.type, |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1129 a->addr.nameseq.lower, |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1130 a->addr.nameseq.upper, |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1131 a->scope); |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1132 } else if (a->addrtype == TIPC_ADDR_NAME) { |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1133 return Py_BuildValue("IIIII", |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1134 a->addrtype, |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1135 a->addr.name.name.type, |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1136 a->addr.name.name.instance, |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1137 a->addr.name.name.instance, |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1138 a->scope); |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1139 } else if (a->addrtype == TIPC_ADDR_ID) { |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1140 return Py_BuildValue("IIIII", |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1141 a->addrtype, |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1142 a->addr.id.node, |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1143 a->addr.id.ref, |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1144 0, |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1145 a->scope); |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1146 } else { |
|
58695
54e975582c65
Issue #4772: Raise a ValueError when an unknown Bluetooth protocol is
Antoine Pitrou <solipsis@pitrou.net>
parents:
56212
diff
changeset
|
1147 PyErr_SetString(PyExc_ValueError, |
|
44561
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1148 "Invalid address type"); |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1149 return NULL; |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1150 } |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1151 } |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1152 #endif |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1153 |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1154 /* More cases here... */ |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1155 |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1156 default: |
|
5436
cf818b70da3e
In makesockaddr(), if we don't know the address family, don't raise an
Guido van Rossum <guido@python.org>
parents:
5287
diff
changeset
|
1157 /* If we don't know the address family, don't raise an |
|
cf818b70da3e
In makesockaddr(), if we don't know the address family, don't raise an
Guido van Rossum <guido@python.org>
parents:
5287
diff
changeset
|
1158 exception -- return it as a tuple. */ |
|
cf818b70da3e
In makesockaddr(), if we don't know the address family, don't raise an
Guido van Rossum <guido@python.org>
parents:
5287
diff
changeset
|
1159 return Py_BuildValue("is#", |
|
cf818b70da3e
In makesockaddr(), if we don't know the address family, don't raise an
Guido van Rossum <guido@python.org>
parents:
5287
diff
changeset
|
1160 addr->sa_family, |
|
cf818b70da3e
In makesockaddr(), if we don't know the address family, don't raise an
Guido van Rossum <guido@python.org>
parents:
5287
diff
changeset
|
1161 addr->sa_data, |
|
cf818b70da3e
In makesockaddr(), if we don't know the address family, don't raise an
Guido van Rossum <guido@python.org>
parents:
5287
diff
changeset
|
1162 sizeof(addr->sa_data)); |
|
925
61143bf03b44
Sometimes, recvfrom() returns an empty address; this is not an error.
Guido van Rossum <guido@python.org>
parents:
902
diff
changeset
|
1163 |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1164 } |
| 294 | 1165 } |
| 1166 | |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1167 |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1168 /* 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
|
1169 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
|
1170 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
|
1171 through len_ret. */ |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1172 |
| 294 | 1173 static int |
|
16947
b25131bc6ec7
RISCOS changes by dschwertberger.
Guido van Rossum <guido@python.org>
parents:
16472
diff
changeset
|
1174 getsockaddrarg(PySocketSockObject *s, PyObject *args, |
|
40416
c43787e6d706
Patch #1544279: Improve thread-safety of the socket module by moving
Martin v. Löwis <martin@v.loewis.de>
parents:
39502
diff
changeset
|
1175 struct sockaddr *addr_ret, int *len_ret) |
| 294 | 1176 { |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1177 switch (s->sock_family) { |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1178 |
|
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
|
1179 #if defined(AF_UNIX) |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1180 case AF_UNIX: |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1181 { |
|
2055
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
1182 struct sockaddr_un* addr; |
| 926 | 1183 char *path; |
| 294 | 1184 int len; |
|
9307
928ea5a409e5
Use the t# format where appropriate. Greg Stein.
Guido van Rossum <guido@python.org>
parents:
9203
diff
changeset
|
1185 if (!PyArg_Parse(args, "t#", &path, &len)) |
| 294 | 1186 return 0; |
|
40416
c43787e6d706
Patch #1544279: Improve thread-safety of the socket module by moving
Martin v. Löwis <martin@v.loewis.de>
parents:
39502
diff
changeset
|
1187 |
|
c43787e6d706
Patch #1544279: Improve thread-safety of the socket module by moving
Martin v. Löwis <martin@v.loewis.de>
parents:
39502
diff
changeset
|
1188 addr = (struct sockaddr_un*)addr_ret; |
|
37853
29257ef6abeb
SF Patch #1062014: AF_UNIX sockets under Linux have a special
Armin Rigo <arigo@tunes.org>
parents:
37732
diff
changeset
|
1189 #ifdef linux |
|
29257ef6abeb
SF Patch #1062014: AF_UNIX sockets under Linux have a special
Armin Rigo <arigo@tunes.org>
parents:
37732
diff
changeset
|
1190 if (len > 0 && path[0] == 0) { |
|
29257ef6abeb
SF Patch #1062014: AF_UNIX sockets under Linux have a special
Armin Rigo <arigo@tunes.org>
parents:
37732
diff
changeset
|
1191 /* Linux abstract namespace extension */ |
|
29257ef6abeb
SF Patch #1062014: AF_UNIX sockets under Linux have a special
Armin Rigo <arigo@tunes.org>
parents:
37732
diff
changeset
|
1192 if (len > sizeof addr->sun_path) { |
|
29257ef6abeb
SF Patch #1062014: AF_UNIX sockets under Linux have a special
Armin Rigo <arigo@tunes.org>
parents:
37732
diff
changeset
|
1193 PyErr_SetString(socket_error, |
|
29257ef6abeb
SF Patch #1062014: AF_UNIX sockets under Linux have a special
Armin Rigo <arigo@tunes.org>
parents:
37732
diff
changeset
|
1194 "AF_UNIX path too long"); |
|
29257ef6abeb
SF Patch #1062014: AF_UNIX sockets under Linux have a special
Armin Rigo <arigo@tunes.org>
parents:
37732
diff
changeset
|
1195 return 0; |
|
29257ef6abeb
SF Patch #1062014: AF_UNIX sockets under Linux have a special
Armin Rigo <arigo@tunes.org>
parents:
37732
diff
changeset
|
1196 } |
|
29257ef6abeb
SF Patch #1062014: AF_UNIX sockets under Linux have a special
Armin Rigo <arigo@tunes.org>
parents:
37732
diff
changeset
|
1197 } |
|
29257ef6abeb
SF Patch #1062014: AF_UNIX sockets under Linux have a special
Armin Rigo <arigo@tunes.org>
parents:
37732
diff
changeset
|
1198 else |
|
29257ef6abeb
SF Patch #1062014: AF_UNIX sockets under Linux have a special
Armin Rigo <arigo@tunes.org>
parents:
37732
diff
changeset
|
1199 #endif /* linux */ |
|
29257ef6abeb
SF Patch #1062014: AF_UNIX sockets under Linux have a special
Armin Rigo <arigo@tunes.org>
parents:
37732
diff
changeset
|
1200 { |
|
29257ef6abeb
SF Patch #1062014: AF_UNIX sockets under Linux have a special
Armin Rigo <arigo@tunes.org>
parents:
37732
diff
changeset
|
1201 /* regular NULL-terminated string */ |
|
29257ef6abeb
SF Patch #1062014: AF_UNIX sockets under Linux have a special
Armin Rigo <arigo@tunes.org>
parents:
37732
diff
changeset
|
1202 if (len >= sizeof addr->sun_path) { |
|
29257ef6abeb
SF Patch #1062014: AF_UNIX sockets under Linux have a special
Armin Rigo <arigo@tunes.org>
parents:
37732
diff
changeset
|
1203 PyErr_SetString(socket_error, |
|
29257ef6abeb
SF Patch #1062014: AF_UNIX sockets under Linux have a special
Armin Rigo <arigo@tunes.org>
parents:
37732
diff
changeset
|
1204 "AF_UNIX path too long"); |
|
29257ef6abeb
SF Patch #1062014: AF_UNIX sockets under Linux have a special
Armin Rigo <arigo@tunes.org>
parents:
37732
diff
changeset
|
1205 return 0; |
|
29257ef6abeb
SF Patch #1062014: AF_UNIX sockets under Linux have a special
Armin Rigo <arigo@tunes.org>
parents:
37732
diff
changeset
|
1206 } |
|
29257ef6abeb
SF Patch #1062014: AF_UNIX sockets under Linux have a special
Armin Rigo <arigo@tunes.org>
parents:
37732
diff
changeset
|
1207 addr->sun_path[len] = 0; |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1208 } |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
1209 addr->sun_family = s->sock_family; |
|
2055
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
1210 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
|
1211 #if defined(PYOS_OS2) |
|
ca2fb5cf2fd5
Fixes for AF_UNIX support on OS/2:
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
31867
diff
changeset
|
1212 *len_ret = sizeof(*addr); |
|
ca2fb5cf2fd5
Fixes for AF_UNIX support on OS/2:
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
31867
diff
changeset
|
1213 #else |
| 44887 | 1214 *len_ret = len + offsetof(struct sockaddr_un, sun_path); |
|
31896
ca2fb5cf2fd5
Fixes for AF_UNIX support on OS/2:
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
31867
diff
changeset
|
1215 #endif |
| 294 | 1216 return 1; |
| 1217 } | |
|
1746
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1413
diff
changeset
|
1218 #endif /* AF_UNIX */ |
| 294 | 1219 |
|
36286
ae4480935016
Patch #1103116: AF_NETLINK sockets basic support.
Martin v. Löwis <martin@v.loewis.de>
parents:
36090
diff
changeset
|
1220 #if defined(AF_NETLINK) |
|
ae4480935016
Patch #1103116: AF_NETLINK sockets basic support.
Martin v. Löwis <martin@v.loewis.de>
parents:
36090
diff
changeset
|
1221 case AF_NETLINK: |
|
ae4480935016
Patch #1103116: AF_NETLINK sockets basic support.
Martin v. Löwis <martin@v.loewis.de>
parents:
36090
diff
changeset
|
1222 { |
|
ae4480935016
Patch #1103116: AF_NETLINK sockets basic support.
Martin v. Löwis <martin@v.loewis.de>
parents:
36090
diff
changeset
|
1223 struct sockaddr_nl* addr; |
|
ae4480935016
Patch #1103116: AF_NETLINK sockets basic support.
Martin v. Löwis <martin@v.loewis.de>
parents:
36090
diff
changeset
|
1224 int pid, groups; |
|
40416
c43787e6d706
Patch #1544279: Improve thread-safety of the socket module by moving
Martin v. Löwis <martin@v.loewis.de>
parents:
39502
diff
changeset
|
1225 addr = (struct sockaddr_nl *)addr_ret; |
|
36286
ae4480935016
Patch #1103116: AF_NETLINK sockets basic support.
Martin v. Löwis <martin@v.loewis.de>
parents:
36090
diff
changeset
|
1226 if (!PyTuple_Check(args)) { |
|
ae4480935016
Patch #1103116: AF_NETLINK sockets basic support.
Martin v. Löwis <martin@v.loewis.de>
parents:
36090
diff
changeset
|
1227 PyErr_Format( |
|
ae4480935016
Patch #1103116: AF_NETLINK sockets basic support.
Martin v. Löwis <martin@v.loewis.de>
parents:
36090
diff
changeset
|
1228 PyExc_TypeError, |
|
ae4480935016
Patch #1103116: AF_NETLINK sockets basic support.
Martin v. Löwis <martin@v.loewis.de>
parents:
36090
diff
changeset
|
1229 "getsockaddrarg: " |
|
ae4480935016
Patch #1103116: AF_NETLINK sockets basic support.
Martin v. Löwis <martin@v.loewis.de>
parents:
36090
diff
changeset
|
1230 "AF_NETLINK address must be tuple, not %.500s", |
|
44350
26384b8180c7
#1629: Renamed Py_Size, Py_Type and Py_Refcnt to Py_SIZE, Py_TYPE and Py_REFCNT. Macros for b/w compatibility are available.
Christian Heimes <christian@cheimes.de>
parents:
44337
diff
changeset
|
1231 Py_TYPE(args)->tp_name); |
|
36286
ae4480935016
Patch #1103116: AF_NETLINK sockets basic support.
Martin v. Löwis <martin@v.loewis.de>
parents:
36090
diff
changeset
|
1232 return 0; |
|
ae4480935016
Patch #1103116: AF_NETLINK sockets basic support.
Martin v. Löwis <martin@v.loewis.de>
parents:
36090
diff
changeset
|
1233 } |
|
ae4480935016
Patch #1103116: AF_NETLINK sockets basic support.
Martin v. Löwis <martin@v.loewis.de>
parents:
36090
diff
changeset
|
1234 if (!PyArg_ParseTuple(args, "II:getsockaddrarg", &pid, &groups)) |
|
ae4480935016
Patch #1103116: AF_NETLINK sockets basic support.
Martin v. Löwis <martin@v.loewis.de>
parents:
36090
diff
changeset
|
1235 return 0; |
|
ae4480935016
Patch #1103116: AF_NETLINK sockets basic support.
Martin v. Löwis <martin@v.loewis.de>
parents:
36090
diff
changeset
|
1236 addr->nl_family = AF_NETLINK; |
|
ae4480935016
Patch #1103116: AF_NETLINK sockets basic support.
Martin v. Löwis <martin@v.loewis.de>
parents:
36090
diff
changeset
|
1237 addr->nl_pid = pid; |
|
ae4480935016
Patch #1103116: AF_NETLINK sockets basic support.
Martin v. Löwis <martin@v.loewis.de>
parents:
36090
diff
changeset
|
1238 addr->nl_groups = groups; |
|
ae4480935016
Patch #1103116: AF_NETLINK sockets basic support.
Martin v. Löwis <martin@v.loewis.de>
parents:
36090
diff
changeset
|
1239 *len_ret = sizeof(*addr); |
|
ae4480935016
Patch #1103116: AF_NETLINK sockets basic support.
Martin v. Löwis <martin@v.loewis.de>
parents:
36090
diff
changeset
|
1240 return 1; |
|
ae4480935016
Patch #1103116: AF_NETLINK sockets basic support.
Martin v. Löwis <martin@v.loewis.de>
parents:
36090
diff
changeset
|
1241 } |
|
ae4480935016
Patch #1103116: AF_NETLINK sockets basic support.
Martin v. Löwis <martin@v.loewis.de>
parents:
36090
diff
changeset
|
1242 #endif |
|
ae4480935016
Patch #1103116: AF_NETLINK sockets basic support.
Martin v. Löwis <martin@v.loewis.de>
parents:
36090
diff
changeset
|
1243 |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1244 case AF_INET: |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1245 { |
|
2055
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
1246 struct sockaddr_in* addr; |
| 926 | 1247 char *host; |
|
30081
7f5489184d94
Release host name memory. Fixes #783312. Will backport to 2.3.
Martin v. Löwis <martin@v.loewis.de>
parents:
30061
diff
changeset
|
1248 int port, result; |
|
15466
9731bbb52fb4
Patch by Michael Hudson to clarify the error message from
Guido van Rossum <guido@python.org>
parents:
15046
diff
changeset
|
1249 if (!PyTuple_Check(args)) { |
|
23723
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
1250 PyErr_Format( |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
1251 PyExc_TypeError, |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
1252 "getsockaddrarg: " |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
1253 "AF_INET address must be tuple, not %.500s", |
|
44350
26384b8180c7
#1629: Renamed Py_Size, Py_Type and Py_Refcnt to Py_SIZE, Py_TYPE and Py_REFCNT. Macros for b/w compatibility are available.
Christian Heimes <christian@cheimes.de>
parents:
44337
diff
changeset
|
1254 Py_TYPE(args)->tp_name); |
|
15466
9731bbb52fb4
Patch by Michael Hudson to clarify the error message from
Guido van Rossum <guido@python.org>
parents:
15046
diff
changeset
|
1255 return 0; |
|
9731bbb52fb4
Patch by Michael Hudson to clarify the error message from
Guido van Rossum <guido@python.org>
parents:
15046
diff
changeset
|
1256 } |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
1257 if (!PyArg_ParseTuple(args, "eti:getsockaddrarg", |
|
28671
d41d8de9768f
Implement IDNA (Internationalized Domain Names in Applications).
Martin v. Löwis <martin@v.loewis.de>
parents:
28437
diff
changeset
|
1258 "idna", &host, &port)) |
| 294 | 1259 return 0; |
|
40416
c43787e6d706
Patch #1544279: Improve thread-safety of the socket module by moving
Martin v. Löwis <martin@v.loewis.de>
parents:
39502
diff
changeset
|
1260 addr=(struct sockaddr_in*)addr_ret; |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
1261 result = setipaddr(host, (struct sockaddr *)addr, |
|
30081
7f5489184d94
Release host name memory. Fixes #783312. Will backport to 2.3.
Martin v. Löwis <martin@v.loewis.de>
parents:
30061
diff
changeset
|
1262 sizeof(*addr), AF_INET); |
|
7f5489184d94
Release host name memory. Fixes #783312. Will backport to 2.3.
Martin v. Löwis <martin@v.loewis.de>
parents:
30061
diff
changeset
|
1263 PyMem_Free(host); |
|
7f5489184d94
Release host name memory. Fixes #783312. Will backport to 2.3.
Martin v. Löwis <martin@v.loewis.de>
parents:
30061
diff
changeset
|
1264 if (result < 0) |
| 294 | 1265 return 0; |
|
51220
eb2607a6516e
- Issue #5104: The socket module now raises OverflowError when 16-bit port and
Gregory P. Smith <greg@mad-scientist.com>
parents:
50786
diff
changeset
|
1266 if (port < 0 || port > 0xffff) { |
|
eb2607a6516e
- Issue #5104: The socket module now raises OverflowError when 16-bit port and
Gregory P. Smith <greg@mad-scientist.com>
parents:
50786
diff
changeset
|
1267 PyErr_SetString( |
|
eb2607a6516e
- Issue #5104: The socket module now raises OverflowError when 16-bit port and
Gregory P. Smith <greg@mad-scientist.com>
parents:
50786
diff
changeset
|
1268 PyExc_OverflowError, |
|
eb2607a6516e
- Issue #5104: The socket module now raises OverflowError when 16-bit port and
Gregory P. Smith <greg@mad-scientist.com>
parents:
50786
diff
changeset
|
1269 "getsockaddrarg: port must be 0-65535."); |
|
eb2607a6516e
- Issue #5104: The socket module now raises OverflowError when 16-bit port and
Gregory P. Smith <greg@mad-scientist.com>
parents:
50786
diff
changeset
|
1270 return 0; |
|
eb2607a6516e
- Issue #5104: The socket module now raises OverflowError when 16-bit port and
Gregory P. Smith <greg@mad-scientist.com>
parents:
50786
diff
changeset
|
1271 } |
|
2055
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
1272 addr->sin_family = AF_INET; |
|
5287
5af766a1b531
Tweaks to keep the Microsoft compiler quier.
Guido van Rossum <guido@python.org>
parents:
4871
diff
changeset
|
1273 addr->sin_port = htons((short)port); |
|
2055
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
1274 *len_ret = sizeof *addr; |
| 294 | 1275 return 1; |
| 1276 } | |
| 1277 | |
|
21128
15ff504632ed
Remove INET6 define. Use ENABLE_IPV6 instead.
Martin v. Löwis <martin@v.loewis.de>
parents:
21094
diff
changeset
|
1278 #ifdef ENABLE_IPV6 |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
1279 case AF_INET6: |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
1280 { |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
1281 struct sockaddr_in6* addr; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
1282 char *host; |
|
30081
7f5489184d94
Release host name memory. Fixes #783312. Will backport to 2.3.
Martin v. Löwis <martin@v.loewis.de>
parents:
30061
diff
changeset
|
1283 int port, flowinfo, scope_id, result; |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
1284 flowinfo = scope_id = 0; |
|
37979
704b80529664
Fix SF bug #1476111: SystemError in socket sendto. The AF_INET6 and
Thomas Wouters <thomas@python.org>
parents:
37934
diff
changeset
|
1285 if (!PyTuple_Check(args)) { |
|
704b80529664
Fix SF bug #1476111: SystemError in socket sendto. The AF_INET6 and
Thomas Wouters <thomas@python.org>
parents:
37934
diff
changeset
|
1286 PyErr_Format( |
|
704b80529664
Fix SF bug #1476111: SystemError in socket sendto. The AF_INET6 and
Thomas Wouters <thomas@python.org>
parents:
37934
diff
changeset
|
1287 PyExc_TypeError, |
|
704b80529664
Fix SF bug #1476111: SystemError in socket sendto. The AF_INET6 and
Thomas Wouters <thomas@python.org>
parents:
37934
diff
changeset
|
1288 "getsockaddrarg: " |
|
704b80529664
Fix SF bug #1476111: SystemError in socket sendto. The AF_INET6 and
Thomas Wouters <thomas@python.org>
parents:
37934
diff
changeset
|
1289 "AF_INET6 address must be tuple, not %.500s", |
|
44350
26384b8180c7
#1629: Renamed Py_Size, Py_Type and Py_Refcnt to Py_SIZE, Py_TYPE and Py_REFCNT. Macros for b/w compatibility are available.
Christian Heimes <christian@cheimes.de>
parents:
44337
diff
changeset
|
1290 Py_TYPE(args)->tp_name); |
|
37979
704b80529664
Fix SF bug #1476111: SystemError in socket sendto. The AF_INET6 and
Thomas Wouters <thomas@python.org>
parents:
37934
diff
changeset
|
1291 return 0; |
|
704b80529664
Fix SF bug #1476111: SystemError in socket sendto. The AF_INET6 and
Thomas Wouters <thomas@python.org>
parents:
37934
diff
changeset
|
1292 } |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
1293 if (!PyArg_ParseTuple(args, "eti|ii", |
|
28671
d41d8de9768f
Implement IDNA (Internationalized Domain Names in Applications).
Martin v. Löwis <martin@v.loewis.de>
parents:
28437
diff
changeset
|
1294 "idna", &host, &port, &flowinfo, |
|
23723
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
1295 &scope_id)) { |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
1296 return 0; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
1297 } |
|
40416
c43787e6d706
Patch #1544279: Improve thread-safety of the socket module by moving
Martin v. Löwis <martin@v.loewis.de>
parents:
39502
diff
changeset
|
1298 addr = (struct sockaddr_in6*)addr_ret; |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
1299 result = setipaddr(host, (struct sockaddr *)addr, |
|
30081
7f5489184d94
Release host name memory. Fixes #783312. Will backport to 2.3.
Martin v. Löwis <martin@v.loewis.de>
parents:
30061
diff
changeset
|
1300 sizeof(*addr), AF_INET6); |
|
7f5489184d94
Release host name memory. Fixes #783312. Will backport to 2.3.
Martin v. Löwis <martin@v.loewis.de>
parents:
30061
diff
changeset
|
1301 PyMem_Free(host); |
|
7f5489184d94
Release host name memory. Fixes #783312. Will backport to 2.3.
Martin v. Löwis <martin@v.loewis.de>
parents:
30061
diff
changeset
|
1302 if (result < 0) |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
1303 return 0; |
|
51220
eb2607a6516e
- Issue #5104: The socket module now raises OverflowError when 16-bit port and
Gregory P. Smith <greg@mad-scientist.com>
parents:
50786
diff
changeset
|
1304 if (port < 0 || port > 0xffff) { |
|
eb2607a6516e
- Issue #5104: The socket module now raises OverflowError when 16-bit port and
Gregory P. Smith <greg@mad-scientist.com>
parents:
50786
diff
changeset
|
1305 PyErr_SetString( |
|
eb2607a6516e
- Issue #5104: The socket module now raises OverflowError when 16-bit port and
Gregory P. Smith <greg@mad-scientist.com>
parents:
50786
diff
changeset
|
1306 PyExc_OverflowError, |
|
eb2607a6516e
- Issue #5104: The socket module now raises OverflowError when 16-bit port and
Gregory P. Smith <greg@mad-scientist.com>
parents:
50786
diff
changeset
|
1307 "getsockaddrarg: port must be 0-65535."); |
|
eb2607a6516e
- Issue #5104: The socket module now raises OverflowError when 16-bit port and
Gregory P. Smith <greg@mad-scientist.com>
parents:
50786
diff
changeset
|
1308 return 0; |
|
eb2607a6516e
- Issue #5104: The socket module now raises OverflowError when 16-bit port and
Gregory P. Smith <greg@mad-scientist.com>
parents:
50786
diff
changeset
|
1309 } |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
1310 addr->sin6_family = s->sock_family; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
1311 addr->sin6_port = htons((short)port); |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
1312 addr->sin6_flowinfo = flowinfo; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
1313 addr->sin6_scope_id = scope_id; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
1314 *len_ret = sizeof *addr; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
1315 return 1; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
1316 } |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
1317 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
1318 |
|
31443
afb4c9726d1a
Add FreeBSD support for bluetooth sockets.
Hye-Shik Chang <hyeshik@gmail.com>
parents:
31441
diff
changeset
|
1319 #ifdef USE_BLUETOOTH |
|
31441
493707692671
Patch #874083: Bluetooth support for socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
31274
diff
changeset
|
1320 case AF_BLUETOOTH: |
|
493707692671
Patch #874083: Bluetooth support for socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
31274
diff
changeset
|
1321 { |
|
32213
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1322 switch (s->sock_proto) { |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1323 case BTPROTO_L2CAP: |
|
31441
493707692671
Patch #874083: Bluetooth support for socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
31274
diff
changeset
|
1324 { |
|
40416
c43787e6d706
Patch #1544279: Improve thread-safety of the socket module by moving
Martin v. Löwis <martin@v.loewis.de>
parents:
39502
diff
changeset
|
1325 struct sockaddr_l2 *addr; |
|
32213
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1326 char *straddr; |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1327 |
|
40416
c43787e6d706
Patch #1544279: Improve thread-safety of the socket module by moving
Martin v. Löwis <martin@v.loewis.de>
parents:
39502
diff
changeset
|
1328 addr = (struct sockaddr_l2 *)addr_ret; |
|
32213
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1329 _BT_L2_MEMB(addr, family) = AF_BLUETOOTH; |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1330 if (!PyArg_ParseTuple(args, "si", &straddr, |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1331 &_BT_L2_MEMB(addr, psm))) { |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1332 PyErr_SetString(socket_error, "getsockaddrarg: " |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1333 "wrong format"); |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1334 return 0; |
|
31441
493707692671
Patch #874083: Bluetooth support for socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
31274
diff
changeset
|
1335 } |
|
32213
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1336 if (setbdaddr(straddr, &_BT_L2_MEMB(addr, bdaddr)) < 0) |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1337 return 0; |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1338 |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1339 *len_ret = sizeof *addr; |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1340 return 1; |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1341 } |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1342 case BTPROTO_RFCOMM: |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1343 { |
|
40416
c43787e6d706
Patch #1544279: Improve thread-safety of the socket module by moving
Martin v. Löwis <martin@v.loewis.de>
parents:
39502
diff
changeset
|
1344 struct sockaddr_rc *addr; |
|
32213
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1345 char *straddr; |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1346 |
|
40416
c43787e6d706
Patch #1544279: Improve thread-safety of the socket module by moving
Martin v. Löwis <martin@v.loewis.de>
parents:
39502
diff
changeset
|
1347 addr = (struct sockaddr_rc *)addr_ret; |
|
32213
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1348 _BT_RC_MEMB(addr, family) = AF_BLUETOOTH; |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1349 if (!PyArg_ParseTuple(args, "si", &straddr, |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1350 &_BT_RC_MEMB(addr, channel))) { |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1351 PyErr_SetString(socket_error, "getsockaddrarg: " |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1352 "wrong format"); |
|
31441
493707692671
Patch #874083: Bluetooth support for socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
31274
diff
changeset
|
1353 return 0; |
|
493707692671
Patch #874083: Bluetooth support for socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
31274
diff
changeset
|
1354 } |
|
32213
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1355 if (setbdaddr(straddr, &_BT_RC_MEMB(addr, bdaddr)) < 0) |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1356 return 0; |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1357 |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1358 *len_ret = sizeof *addr; |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1359 return 1; |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1360 } |
|
40842
90e22fea8363
Patch #1432399: Add HCI sockets.
Martin v. Löwis <martin@v.loewis.de>
parents:
40837
diff
changeset
|
1361 case BTPROTO_HCI: |
|
90e22fea8363
Patch #1432399: Add HCI sockets.
Martin v. Löwis <martin@v.loewis.de>
parents:
40837
diff
changeset
|
1362 { |
|
40843
dc56789b29e9
Update 1432399 to removal of _BT_SOCKADDR_MEMB.
Martin v. Löwis <martin@v.loewis.de>
parents:
40842
diff
changeset
|
1363 struct sockaddr_hci *addr = (struct sockaddr_hci *)addr_ret; |
|
40842
90e22fea8363
Patch #1432399: Add HCI sockets.
Martin v. Löwis <martin@v.loewis.de>
parents:
40837
diff
changeset
|
1364 _BT_HCI_MEMB(addr, family) = AF_BLUETOOTH; |
|
90e22fea8363
Patch #1432399: Add HCI sockets.
Martin v. Löwis <martin@v.loewis.de>
parents:
40837
diff
changeset
|
1365 if (!PyArg_ParseTuple(args, "i", &_BT_HCI_MEMB(addr, dev))) { |
|
90e22fea8363
Patch #1432399: Add HCI sockets.
Martin v. Löwis <martin@v.loewis.de>
parents:
40837
diff
changeset
|
1366 PyErr_SetString(socket_error, "getsockaddrarg: " |
|
90e22fea8363
Patch #1432399: Add HCI sockets.
Martin v. Löwis <martin@v.loewis.de>
parents:
40837
diff
changeset
|
1367 "wrong format"); |
|
90e22fea8363
Patch #1432399: Add HCI sockets.
Martin v. Löwis <martin@v.loewis.de>
parents:
40837
diff
changeset
|
1368 return 0; |
|
90e22fea8363
Patch #1432399: Add HCI sockets.
Martin v. Löwis <martin@v.loewis.de>
parents:
40837
diff
changeset
|
1369 } |
|
90e22fea8363
Patch #1432399: Add HCI sockets.
Martin v. Löwis <martin@v.loewis.de>
parents:
40837
diff
changeset
|
1370 *len_ret = sizeof *addr; |
|
90e22fea8363
Patch #1432399: Add HCI sockets.
Martin v. Löwis <martin@v.loewis.de>
parents:
40837
diff
changeset
|
1371 return 1; |
|
90e22fea8363
Patch #1432399: Add HCI sockets.
Martin v. Löwis <martin@v.loewis.de>
parents:
40837
diff
changeset
|
1372 } |
|
32213
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1373 #if !defined(__FreeBSD__) |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1374 case BTPROTO_SCO: |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1375 { |
|
40416
c43787e6d706
Patch #1544279: Improve thread-safety of the socket module by moving
Martin v. Löwis <martin@v.loewis.de>
parents:
39502
diff
changeset
|
1376 struct sockaddr_sco *addr; |
|
32213
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1377 char *straddr; |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1378 |
|
40416
c43787e6d706
Patch #1544279: Improve thread-safety of the socket module by moving
Martin v. Löwis <martin@v.loewis.de>
parents:
39502
diff
changeset
|
1379 addr = (struct sockaddr_sco *)addr_ret; |
|
32213
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1380 _BT_SCO_MEMB(addr, family) = AF_BLUETOOTH; |
|
47527
52294af4b663
This reverts r63675 based on the discussion in this thread:
Gregory P. Smith <greg@mad-scientist.com>
parents:
47294
diff
changeset
|
1381 straddr = PyString_AsString(args); |
|
32213
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1382 if (straddr == NULL) { |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1383 PyErr_SetString(socket_error, "getsockaddrarg: " |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1384 "wrong format"); |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1385 return 0; |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1386 } |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1387 if (setbdaddr(straddr, &_BT_SCO_MEMB(addr, bdaddr)) < 0) |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1388 return 0; |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1389 |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1390 *len_ret = sizeof *addr; |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1391 return 1; |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1392 } |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1393 #endif |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1394 default: |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1395 PyErr_SetString(socket_error, "getsockaddrarg: unknown Bluetooth protocol"); |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1396 return 0; |
|
31441
493707692671
Patch #874083: Bluetooth support for socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
31274
diff
changeset
|
1397 } |
|
493707692671
Patch #874083: Bluetooth support for socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
31274
diff
changeset
|
1398 } |
|
493707692671
Patch #874083: Bluetooth support for socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
31274
diff
changeset
|
1399 #endif |
|
493707692671
Patch #874083: Bluetooth support for socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
31274
diff
changeset
|
1400 |
|
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
|
1401 #ifdef HAVE_NETPACKET_PACKET_H |
|
16410
3d4a7cd0bf17
SF patch 101137 from Grant Edwards
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16400
diff
changeset
|
1402 case AF_PACKET: |
|
3d4a7cd0bf17
SF patch 101137 from Grant Edwards
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16400
diff
changeset
|
1403 { |
|
3d4a7cd0bf17
SF patch 101137 from Grant Edwards
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16400
diff
changeset
|
1404 struct sockaddr_ll* addr; |
|
3d4a7cd0bf17
SF patch 101137 from Grant Edwards
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16400
diff
changeset
|
1405 struct ifreq ifr; |
|
3d4a7cd0bf17
SF patch 101137 from Grant Edwards
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16400
diff
changeset
|
1406 char *interfaceName; |
|
3d4a7cd0bf17
SF patch 101137 from Grant Edwards
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16400
diff
changeset
|
1407 int protoNumber; |
|
3d4a7cd0bf17
SF patch 101137 from Grant Edwards
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16400
diff
changeset
|
1408 int hatype = 0; |
|
3d4a7cd0bf17
SF patch 101137 from Grant Edwards
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16400
diff
changeset
|
1409 int pkttype = 0; |
|
32611
8b3288f607e1
[Patch #947352 from Jason Andryuk] Add support for AF_PACKET hardware addresses
Andrew M. Kuchling <amk@amk.ca>
parents:
32578
diff
changeset
|
1410 char *haddr = NULL; |
|
8b3288f607e1
[Patch #947352 from Jason Andryuk] Add support for AF_PACKET hardware addresses
Andrew M. Kuchling <amk@amk.ca>
parents:
32578
diff
changeset
|
1411 unsigned int halen = 0; |
|
8b3288f607e1
[Patch #947352 from Jason Andryuk] Add support for AF_PACKET hardware addresses
Andrew M. Kuchling <amk@amk.ca>
parents:
32578
diff
changeset
|
1412 |
|
37979
704b80529664
Fix SF bug #1476111: SystemError in socket sendto. The AF_INET6 and
Thomas Wouters <thomas@python.org>
parents:
37934
diff
changeset
|
1413 if (!PyTuple_Check(args)) { |
|
704b80529664
Fix SF bug #1476111: SystemError in socket sendto. The AF_INET6 and
Thomas Wouters <thomas@python.org>
parents:
37934
diff
changeset
|
1414 PyErr_Format( |
|
704b80529664
Fix SF bug #1476111: SystemError in socket sendto. The AF_INET6 and
Thomas Wouters <thomas@python.org>
parents:
37934
diff
changeset
|
1415 PyExc_TypeError, |
|
704b80529664
Fix SF bug #1476111: SystemError in socket sendto. The AF_INET6 and
Thomas Wouters <thomas@python.org>
parents:
37934
diff
changeset
|
1416 "getsockaddrarg: " |
|
704b80529664
Fix SF bug #1476111: SystemError in socket sendto. The AF_INET6 and
Thomas Wouters <thomas@python.org>
parents:
37934
diff
changeset
|
1417 "AF_PACKET address must be tuple, not %.500s", |
|
44350
26384b8180c7
#1629: Renamed Py_Size, Py_Type and Py_Refcnt to Py_SIZE, Py_TYPE and Py_REFCNT. Macros for b/w compatibility are available.
Christian Heimes <christian@cheimes.de>
parents:
44337
diff
changeset
|
1418 Py_TYPE(args)->tp_name); |
|
37979
704b80529664
Fix SF bug #1476111: SystemError in socket sendto. The AF_INET6 and
Thomas Wouters <thomas@python.org>
parents:
37934
diff
changeset
|
1419 return 0; |
|
704b80529664
Fix SF bug #1476111: SystemError in socket sendto. The AF_INET6 and
Thomas Wouters <thomas@python.org>
parents:
37934
diff
changeset
|
1420 } |
|
32611
8b3288f607e1
[Patch #947352 from Jason Andryuk] Add support for AF_PACKET hardware addresses
Andrew M. Kuchling <amk@amk.ca>
parents:
32578
diff
changeset
|
1421 if (!PyArg_ParseTuple(args, "si|iis#", &interfaceName, |
|
8b3288f607e1
[Patch #947352 from Jason Andryuk] Add support for AF_PACKET hardware addresses
Andrew M. Kuchling <amk@amk.ca>
parents:
32578
diff
changeset
|
1422 &protoNumber, &pkttype, &hatype, |
|
8b3288f607e1
[Patch #947352 from Jason Andryuk] Add support for AF_PACKET hardware addresses
Andrew M. Kuchling <amk@amk.ca>
parents:
32578
diff
changeset
|
1423 &haddr, &halen)) |
|
16410
3d4a7cd0bf17
SF patch 101137 from Grant Edwards
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16400
diff
changeset
|
1424 return 0; |
|
3d4a7cd0bf17
SF patch 101137 from Grant Edwards
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16400
diff
changeset
|
1425 strncpy(ifr.ifr_name, interfaceName, sizeof(ifr.ifr_name)); |
|
3d4a7cd0bf17
SF patch 101137 from Grant Edwards
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16400
diff
changeset
|
1426 ifr.ifr_name[(sizeof(ifr.ifr_name))-1] = '\0'; |
|
16427
c8ef864ba861
fix a couple last-minute bugs in the raw socket support
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16410
diff
changeset
|
1427 if (ioctl(s->sock_fd, SIOCGIFINDEX, &ifr) < 0) { |
|
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
|
1428 s->errorhandler(); |
|
16410
3d4a7cd0bf17
SF patch 101137 from Grant Edwards
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16400
diff
changeset
|
1429 return 0; |
|
16427
c8ef864ba861
fix a couple last-minute bugs in the raw socket support
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16410
diff
changeset
|
1430 } |
|
40416
c43787e6d706
Patch #1544279: Improve thread-safety of the socket module by moving
Martin v. Löwis <martin@v.loewis.de>
parents:
39502
diff
changeset
|
1431 if (halen > 8) { |
|
c43787e6d706
Patch #1544279: Improve thread-safety of the socket module by moving
Martin v. Löwis <martin@v.loewis.de>
parents:
39502
diff
changeset
|
1432 PyErr_SetString(PyExc_ValueError, |
|
c43787e6d706
Patch #1544279: Improve thread-safety of the socket module by moving
Martin v. Löwis <martin@v.loewis.de>
parents:
39502
diff
changeset
|
1433 "Hardware address must be 8 bytes or less"); |
|
c43787e6d706
Patch #1544279: Improve thread-safety of the socket module by moving
Martin v. Löwis <martin@v.loewis.de>
parents:
39502
diff
changeset
|
1434 return 0; |
|
c43787e6d706
Patch #1544279: Improve thread-safety of the socket module by moving
Martin v. Löwis <martin@v.loewis.de>
parents:
39502
diff
changeset
|
1435 } |
|
51220
eb2607a6516e
- Issue #5104: The socket module now raises OverflowError when 16-bit port and
Gregory P. Smith <greg@mad-scientist.com>
parents:
50786
diff
changeset
|
1436 if (protoNumber < 0 || protoNumber > 0xffff) { |
|
eb2607a6516e
- Issue #5104: The socket module now raises OverflowError when 16-bit port and
Gregory P. Smith <greg@mad-scientist.com>
parents:
50786
diff
changeset
|
1437 PyErr_SetString( |
|
eb2607a6516e
- Issue #5104: The socket module now raises OverflowError when 16-bit port and
Gregory P. Smith <greg@mad-scientist.com>
parents:
50786
diff
changeset
|
1438 PyExc_OverflowError, |
|
eb2607a6516e
- Issue #5104: The socket module now raises OverflowError when 16-bit port and
Gregory P. Smith <greg@mad-scientist.com>
parents:
50786
diff
changeset
|
1439 "getsockaddrarg: protoNumber must be 0-65535."); |
|
eb2607a6516e
- Issue #5104: The socket module now raises OverflowError when 16-bit port and
Gregory P. Smith <greg@mad-scientist.com>
parents:
50786
diff
changeset
|
1440 return 0; |
|
eb2607a6516e
- Issue #5104: The socket module now raises OverflowError when 16-bit port and
Gregory P. Smith <greg@mad-scientist.com>
parents:
50786
diff
changeset
|
1441 } |
|
40416
c43787e6d706
Patch #1544279: Improve thread-safety of the socket module by moving
Martin v. Löwis <martin@v.loewis.de>
parents:
39502
diff
changeset
|
1442 addr = (struct sockaddr_ll*)addr_ret; |
|
16410
3d4a7cd0bf17
SF patch 101137 from Grant Edwards
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16400
diff
changeset
|
1443 addr->sll_family = AF_PACKET; |
|
3d4a7cd0bf17
SF patch 101137 from Grant Edwards
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16400
diff
changeset
|
1444 addr->sll_protocol = htons((short)protoNumber); |
|
3d4a7cd0bf17
SF patch 101137 from Grant Edwards
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16400
diff
changeset
|
1445 addr->sll_ifindex = ifr.ifr_ifindex; |
|
3d4a7cd0bf17
SF patch 101137 from Grant Edwards
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16400
diff
changeset
|
1446 addr->sll_pkttype = pkttype; |
|
3d4a7cd0bf17
SF patch 101137 from Grant Edwards
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16400
diff
changeset
|
1447 addr->sll_hatype = hatype; |
|
32611
8b3288f607e1
[Patch #947352 from Jason Andryuk] Add support for AF_PACKET hardware addresses
Andrew M. Kuchling <amk@amk.ca>
parents:
32578
diff
changeset
|
1448 if (halen != 0) { |
|
8b3288f607e1
[Patch #947352 from Jason Andryuk] Add support for AF_PACKET hardware addresses
Andrew M. Kuchling <amk@amk.ca>
parents:
32578
diff
changeset
|
1449 memcpy(&addr->sll_addr, haddr, halen); |
|
8b3288f607e1
[Patch #947352 from Jason Andryuk] Add support for AF_PACKET hardware addresses
Andrew M. Kuchling <amk@amk.ca>
parents:
32578
diff
changeset
|
1450 } |
|
8b3288f607e1
[Patch #947352 from Jason Andryuk] Add support for AF_PACKET hardware addresses
Andrew M. Kuchling <amk@amk.ca>
parents:
32578
diff
changeset
|
1451 addr->sll_halen = halen; |
|
16410
3d4a7cd0bf17
SF patch 101137 from Grant Edwards
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16400
diff
changeset
|
1452 *len_ret = sizeof *addr; |
|
3d4a7cd0bf17
SF patch 101137 from Grant Edwards
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16400
diff
changeset
|
1453 return 1; |
|
3d4a7cd0bf17
SF patch 101137 from Grant Edwards
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16400
diff
changeset
|
1454 } |
|
16947
b25131bc6ec7
RISCOS changes by dschwertberger.
Guido van Rossum <guido@python.org>
parents:
16472
diff
changeset
|
1455 #endif |
|
b25131bc6ec7
RISCOS changes by dschwertberger.
Guido van Rossum <guido@python.org>
parents:
16472
diff
changeset
|
1456 |
|
44561
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1457 #ifdef HAVE_LINUX_TIPC_H |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1458 case AF_TIPC: |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1459 { |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1460 unsigned int atype, v1, v2, v3; |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1461 unsigned int scope = TIPC_CLUSTER_SCOPE; |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1462 struct sockaddr_tipc *addr; |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1463 |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1464 if (!PyTuple_Check(args)) { |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1465 PyErr_Format( |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1466 PyExc_TypeError, |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1467 "getsockaddrarg: " |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1468 "AF_TIPC address must be tuple, not %.500s", |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1469 Py_TYPE(args)->tp_name); |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1470 return 0; |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1471 } |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1472 |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1473 if (!PyArg_ParseTuple(args, |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1474 "IIII|I;Invalid TIPC address format", |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1475 &atype, &v1, &v2, &v3, &scope)) |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1476 return 0; |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1477 |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1478 addr = (struct sockaddr_tipc *) addr_ret; |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1479 memset(addr, 0, sizeof(struct sockaddr_tipc)); |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1480 |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1481 addr->family = AF_TIPC; |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1482 addr->scope = scope; |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1483 addr->addrtype = atype; |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1484 |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1485 if (atype == TIPC_ADDR_NAMESEQ) { |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1486 addr->addr.nameseq.type = v1; |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1487 addr->addr.nameseq.lower = v2; |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1488 addr->addr.nameseq.upper = v3; |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1489 } else if (atype == TIPC_ADDR_NAME) { |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1490 addr->addr.name.name.type = v1; |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1491 addr->addr.name.name.instance = v2; |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1492 } else if (atype == TIPC_ADDR_ID) { |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1493 addr->addr.id.node = v1; |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1494 addr->addr.id.ref = v2; |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1495 } else { |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1496 /* Shouldn't happen */ |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1497 PyErr_SetString(PyExc_TypeError, "Invalid address type"); |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1498 return 0; |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1499 } |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1500 |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1501 *len_ret = sizeof(*addr); |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1502 |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1503 return 1; |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1504 } |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1505 #endif |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1506 |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1507 /* More cases here... */ |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1508 |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1509 default: |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
1510 PyErr_SetString(socket_error, "getsockaddrarg: bad family"); |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1511 return 0; |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1512 |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1513 } |
| 294 | 1514 } |
| 1515 | |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1516 |
|
16947
b25131bc6ec7
RISCOS changes by dschwertberger.
Guido van Rossum <guido@python.org>
parents:
16472
diff
changeset
|
1517 /* 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
|
1518 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
|
1519 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
|
1520 |
|
58a7438c2e7e
Some UNIX types want the exact size of the address structure
Guido van Rossum <guido@python.org>
parents:
896
diff
changeset
|
1521 static int |
|
13554
906efc1da247
Errare humanum est.
Peter Schneider-Kamp <nowonder@nowonder.de>
parents:
13538
diff
changeset
|
1522 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
|
1523 { |
|
58a7438c2e7e
Some UNIX types want the exact size of the address structure
Guido van Rossum <guido@python.org>
parents:
896
diff
changeset
|
1524 switch (s->sock_family) { |
|
58a7438c2e7e
Some UNIX types want the exact size of the address structure
Guido van Rossum <guido@python.org>
parents:
896
diff
changeset
|
1525 |
|
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
|
1526 #if defined(AF_UNIX) |
|
900
58a7438c2e7e
Some UNIX types want the exact size of the address structure
Guido van Rossum <guido@python.org>
parents:
896
diff
changeset
|
1527 case AF_UNIX: |
|
58a7438c2e7e
Some UNIX types want the exact size of the address structure
Guido van Rossum <guido@python.org>
parents:
896
diff
changeset
|
1528 { |
|
58a7438c2e7e
Some UNIX types want the exact size of the address structure
Guido van Rossum <guido@python.org>
parents:
896
diff
changeset
|
1529 *len_ret = sizeof (struct sockaddr_un); |
|
58a7438c2e7e
Some UNIX types want the exact size of the address structure
Guido van Rossum <guido@python.org>
parents:
896
diff
changeset
|
1530 return 1; |
|
58a7438c2e7e
Some UNIX types want the exact size of the address structure
Guido van Rossum <guido@python.org>
parents:
896
diff
changeset
|
1531 } |
|
1746
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1413
diff
changeset
|
1532 #endif /* AF_UNIX */ |
|
36286
ae4480935016
Patch #1103116: AF_NETLINK sockets basic support.
Martin v. Löwis <martin@v.loewis.de>
parents:
36090
diff
changeset
|
1533 #if defined(AF_NETLINK) |
|
ae4480935016
Patch #1103116: AF_NETLINK sockets basic support.
Martin v. Löwis <martin@v.loewis.de>
parents:
36090
diff
changeset
|
1534 case AF_NETLINK: |
|
ae4480935016
Patch #1103116: AF_NETLINK sockets basic support.
Martin v. Löwis <martin@v.loewis.de>
parents:
36090
diff
changeset
|
1535 { |
|
ae4480935016
Patch #1103116: AF_NETLINK sockets basic support.
Martin v. Löwis <martin@v.loewis.de>
parents:
36090
diff
changeset
|
1536 *len_ret = sizeof (struct sockaddr_nl); |
|
ae4480935016
Patch #1103116: AF_NETLINK sockets basic support.
Martin v. Löwis <martin@v.loewis.de>
parents:
36090
diff
changeset
|
1537 return 1; |
|
ae4480935016
Patch #1103116: AF_NETLINK sockets basic support.
Martin v. Löwis <martin@v.loewis.de>
parents:
36090
diff
changeset
|
1538 } |
|
ae4480935016
Patch #1103116: AF_NETLINK sockets basic support.
Martin v. Löwis <martin@v.loewis.de>
parents:
36090
diff
changeset
|
1539 #endif |
|
900
58a7438c2e7e
Some UNIX types want the exact size of the address structure
Guido van Rossum <guido@python.org>
parents:
896
diff
changeset
|
1540 |
|
58a7438c2e7e
Some UNIX types want the exact size of the address structure
Guido van Rossum <guido@python.org>
parents:
896
diff
changeset
|
1541 case AF_INET: |
|
58a7438c2e7e
Some UNIX types want the exact size of the address structure
Guido van Rossum <guido@python.org>
parents:
896
diff
changeset
|
1542 { |
|
58a7438c2e7e
Some UNIX types want the exact size of the address structure
Guido van Rossum <guido@python.org>
parents:
896
diff
changeset
|
1543 *len_ret = sizeof (struct sockaddr_in); |
|
58a7438c2e7e
Some UNIX types want the exact size of the address structure
Guido van Rossum <guido@python.org>
parents:
896
diff
changeset
|
1544 return 1; |
|
58a7438c2e7e
Some UNIX types want the exact size of the address structure
Guido van Rossum <guido@python.org>
parents:
896
diff
changeset
|
1545 } |
|
58a7438c2e7e
Some UNIX types want the exact size of the address structure
Guido van Rossum <guido@python.org>
parents:
896
diff
changeset
|
1546 |
|
21128
15ff504632ed
Remove INET6 define. Use ENABLE_IPV6 instead.
Martin v. Löwis <martin@v.loewis.de>
parents:
21094
diff
changeset
|
1547 #ifdef ENABLE_IPV6 |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
1548 case AF_INET6: |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
1549 { |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
1550 *len_ret = sizeof (struct sockaddr_in6); |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
1551 return 1; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
1552 } |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
1553 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
1554 |
|
31443
afb4c9726d1a
Add FreeBSD support for bluetooth sockets.
Hye-Shik Chang <hyeshik@gmail.com>
parents:
31441
diff
changeset
|
1555 #ifdef USE_BLUETOOTH |
|
31441
493707692671
Patch #874083: Bluetooth support for socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
31274
diff
changeset
|
1556 case AF_BLUETOOTH: |
|
493707692671
Patch #874083: Bluetooth support for socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
31274
diff
changeset
|
1557 { |
|
493707692671
Patch #874083: Bluetooth support for socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
31274
diff
changeset
|
1558 switch(s->sock_proto) |
|
493707692671
Patch #874083: Bluetooth support for socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
31274
diff
changeset
|
1559 { |
|
32213
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1560 |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1561 case BTPROTO_L2CAP: |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1562 *len_ret = sizeof (struct sockaddr_l2); |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1563 return 1; |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1564 case BTPROTO_RFCOMM: |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1565 *len_ret = sizeof (struct sockaddr_rc); |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1566 return 1; |
|
40842
90e22fea8363
Patch #1432399: Add HCI sockets.
Martin v. Löwis <martin@v.loewis.de>
parents:
40837
diff
changeset
|
1567 case BTPROTO_HCI: |
|
90e22fea8363
Patch #1432399: Add HCI sockets.
Martin v. Löwis <martin@v.loewis.de>
parents:
40837
diff
changeset
|
1568 *len_ret = sizeof (struct sockaddr_hci); |
|
90e22fea8363
Patch #1432399: Add HCI sockets.
Martin v. Löwis <martin@v.loewis.de>
parents:
40837
diff
changeset
|
1569 return 1; |
|
31443
afb4c9726d1a
Add FreeBSD support for bluetooth sockets.
Hye-Shik Chang <hyeshik@gmail.com>
parents:
31441
diff
changeset
|
1570 #if !defined(__FreeBSD__) |
|
32213
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1571 case BTPROTO_SCO: |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1572 *len_ret = sizeof (struct sockaddr_sco); |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1573 return 1; |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1574 #endif |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1575 default: |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1576 PyErr_SetString(socket_error, "getsockaddrlen: " |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1577 "unknown BT protocol"); |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1578 return 0; |
|
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1579 |
|
31441
493707692671
Patch #874083: Bluetooth support for socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
31274
diff
changeset
|
1580 } |
|
493707692671
Patch #874083: Bluetooth support for socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
31274
diff
changeset
|
1581 } |
|
493707692671
Patch #874083: Bluetooth support for socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
31274
diff
changeset
|
1582 #endif |
|
493707692671
Patch #874083: Bluetooth support for socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
31274
diff
changeset
|
1583 |
|
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
|
1584 #ifdef HAVE_NETPACKET_PACKET_H |
|
16410
3d4a7cd0bf17
SF patch 101137 from Grant Edwards
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16400
diff
changeset
|
1585 case AF_PACKET: |
|
3d4a7cd0bf17
SF patch 101137 from Grant Edwards
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16400
diff
changeset
|
1586 { |
|
3d4a7cd0bf17
SF patch 101137 from Grant Edwards
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16400
diff
changeset
|
1587 *len_ret = sizeof (struct sockaddr_ll); |
|
3d4a7cd0bf17
SF patch 101137 from Grant Edwards
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16400
diff
changeset
|
1588 return 1; |
|
3d4a7cd0bf17
SF patch 101137 from Grant Edwards
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16400
diff
changeset
|
1589 } |
|
3d4a7cd0bf17
SF patch 101137 from Grant Edwards
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16400
diff
changeset
|
1590 #endif |
|
16947
b25131bc6ec7
RISCOS changes by dschwertberger.
Guido van Rossum <guido@python.org>
parents:
16472
diff
changeset
|
1591 |
|
44561
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1592 #ifdef HAVE_LINUX_TIPC_H |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1593 case AF_TIPC: |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1594 { |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1595 *len_ret = sizeof (struct sockaddr_tipc); |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1596 return 1; |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1597 } |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1598 #endif |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
1599 |
|
900
58a7438c2e7e
Some UNIX types want the exact size of the address structure
Guido van Rossum <guido@python.org>
parents:
896
diff
changeset
|
1600 /* More cases here... */ |
|
58a7438c2e7e
Some UNIX types want the exact size of the address structure
Guido van Rossum <guido@python.org>
parents:
896
diff
changeset
|
1601 |
|
58a7438c2e7e
Some UNIX types want the exact size of the address structure
Guido van Rossum <guido@python.org>
parents:
896
diff
changeset
|
1602 default: |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
1603 PyErr_SetString(socket_error, "getsockaddrlen: bad family"); |
|
900
58a7438c2e7e
Some UNIX types want the exact size of the address structure
Guido van Rossum <guido@python.org>
parents:
896
diff
changeset
|
1604 return 0; |
|
58a7438c2e7e
Some UNIX types want the exact size of the address structure
Guido van Rossum <guido@python.org>
parents:
896
diff
changeset
|
1605 |
|
58a7438c2e7e
Some UNIX types want the exact size of the address structure
Guido van Rossum <guido@python.org>
parents:
896
diff
changeset
|
1606 } |
|
58a7438c2e7e
Some UNIX types want the exact size of the address structure
Guido van Rossum <guido@python.org>
parents:
896
diff
changeset
|
1607 } |
|
58a7438c2e7e
Some UNIX types want the exact size of the address structure
Guido van Rossum <guido@python.org>
parents:
896
diff
changeset
|
1608 |
|
58a7438c2e7e
Some UNIX types want the exact size of the address structure
Guido van Rossum <guido@python.org>
parents:
896
diff
changeset
|
1609 |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1610 /* s.accept() method */ |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1611 |
| 1970 | 1612 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
|
1613 sock_accept(PySocketSockObject *s) |
| 294 | 1614 { |
|
35551
57f630a9de26
- Changes donated by Elemental Security to make it work on AIX 5.3
Guido van Rossum <guido@python.org>
parents:
35452
diff
changeset
|
1615 sock_addr_t addrbuf; |
|
13171
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
1616 SOCKET_T newfd; |
|
12479
a3e1fecb43c6
Jack Jansen: The GUSI 2.0 I/O library used on the Mac uses the
Guido van Rossum <guido@python.org>
parents:
12436
diff
changeset
|
1617 socklen_t addrlen; |
|
4871
a7159ba0e45d
Check of return values and proper error handling.
Barry Warsaw <barry@python.org>
parents:
4783
diff
changeset
|
1618 PyObject *sock = NULL; |
|
a7159ba0e45d
Check of return values and proper error handling.
Barry Warsaw <barry@python.org>
parents:
4783
diff
changeset
|
1619 PyObject *addr = NULL; |
|
a7159ba0e45d
Check of return values and proper error handling.
Barry Warsaw <barry@python.org>
parents:
4783
diff
changeset
|
1620 PyObject *res = NULL; |
|
29651
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
1621 int timeout; |
|
4871
a7159ba0e45d
Check of return values and proper error handling.
Barry Warsaw <barry@python.org>
parents:
4783
diff
changeset
|
1622 |
|
900
58a7438c2e7e
Some UNIX types want the exact size of the address structure
Guido van Rossum <guido@python.org>
parents:
896
diff
changeset
|
1623 if (!getsockaddrlen(s, &addrlen)) |
|
58a7438c2e7e
Some UNIX types want the exact size of the address structure
Guido van Rossum <guido@python.org>
parents:
896
diff
changeset
|
1624 return NULL; |
|
35551
57f630a9de26
- Changes donated by Elemental Security to make it work on AIX 5.3
Guido van Rossum <guido@python.org>
parents:
35452
diff
changeset
|
1625 memset(&addrbuf, 0, addrlen); |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
1626 |
|
29651
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
1627 #ifdef MS_WINDOWS |
|
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
1628 newfd = INVALID_SOCKET; |
|
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
1629 #else |
|
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
1630 newfd = -1; |
|
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
1631 #endif |
|
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
1632 |
|
36452
7789cc557e1e
Bug #876637, prevent stack corruption when socket descriptor
Neal Norwitz <nnorwitz@gmail.com>
parents:
36324
diff
changeset
|
1633 if (!IS_SELECTABLE(s)) |
|
7789cc557e1e
Bug #876637, prevent stack corruption when socket descriptor
Neal Norwitz <nnorwitz@gmail.com>
parents:
36324
diff
changeset
|
1634 return select_error(); |
|
7789cc557e1e
Bug #876637, prevent stack corruption when socket descriptor
Neal Norwitz <nnorwitz@gmail.com>
parents:
36324
diff
changeset
|
1635 |
| 1970 | 1636 Py_BEGIN_ALLOW_THREADS |
|
29651
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
1637 timeout = internal_select(s, 0); |
|
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
1638 if (!timeout) |
|
40416
c43787e6d706
Patch #1544279: Improve thread-safety of the socket module by moving
Martin v. Löwis <martin@v.loewis.de>
parents:
39502
diff
changeset
|
1639 newfd = accept(s->sock_fd, SAS2SA(&addrbuf), &addrlen); |
| 1970 | 1640 Py_END_ALLOW_THREADS |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
1641 |
|
39354
85fdcdfca85c
Patch #1519025 and bug #926423: If a KeyboardInterrupt occurs during
Neal Norwitz <nnorwitz@gmail.com>
parents:
39251
diff
changeset
|
1642 if (timeout == 1) { |
|
29651
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
1643 PyErr_SetString(socket_timeout, "timed out"); |
|
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
1644 return NULL; |
|
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
1645 } |
|
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
1646 |
|
13171
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
1647 #ifdef MS_WINDOWS |
|
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
1648 if (newfd == INVALID_SOCKET) |
|
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
1649 #else |
| 294 | 1650 if (newfd < 0) |
|
13171
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
1651 #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
|
1652 return s->errorhandler(); |
|
4871
a7159ba0e45d
Check of return values and proper error handling.
Barry Warsaw <barry@python.org>
parents:
4783
diff
changeset
|
1653 |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1654 /* Create the new object with unspecified family, |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1655 to avoid calls to bind() etc. on it. */ |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
1656 sock = (PyObject *) new_sockobject(newfd, |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
1657 s->sock_family, |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
1658 s->sock_type, |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
1659 s->sock_proto); |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
1660 |
|
4871
a7159ba0e45d
Check of return values and proper error handling.
Barry Warsaw <barry@python.org>
parents:
4783
diff
changeset
|
1661 if (sock == NULL) { |
|
12436
dff7b26116de
Use an explicit macro SOCKETCLOSE which expands to closesocket (on
Guido van Rossum <guido@python.org>
parents:
12319
diff
changeset
|
1662 SOCKETCLOSE(newfd); |
|
4871
a7159ba0e45d
Check of return values and proper error handling.
Barry Warsaw <barry@python.org>
parents:
4783
diff
changeset
|
1663 goto finally; |
|
a7159ba0e45d
Check of return values and proper error handling.
Barry Warsaw <barry@python.org>
parents:
4783
diff
changeset
|
1664 } |
|
40416
c43787e6d706
Patch #1544279: Improve thread-safety of the socket module by moving
Martin v. Löwis <martin@v.loewis.de>
parents:
39502
diff
changeset
|
1665 addr = makesockaddr(s->sock_fd, SAS2SA(&addrbuf), |
|
32213
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
1666 addrlen, s->sock_proto); |
|
16427
c8ef864ba861
fix a couple last-minute bugs in the raw socket support
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16410
diff
changeset
|
1667 if (addr == NULL) |
|
4871
a7159ba0e45d
Check of return values and proper error handling.
Barry Warsaw <barry@python.org>
parents:
4783
diff
changeset
|
1668 goto finally; |
|
a7159ba0e45d
Check of return values and proper error handling.
Barry Warsaw <barry@python.org>
parents:
4783
diff
changeset
|
1669 |
|
30683
3b59fa5d25b1
Simplify and speedup uses of Py_BuildValue():
Raymond Hettinger <python@rcn.com>
parents:
30646
diff
changeset
|
1670 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
|
1671 |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
1672 finally: |
| 1970 | 1673 Py_XDECREF(sock); |
| 1674 Py_XDECREF(addr); | |
| 294 | 1675 return res; |
| 1676 } | |
| 1677 | |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
1678 PyDoc_STRVAR(accept_doc, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1679 "accept() -> (socket object, address info)\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1680 \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1681 Wait for an incoming connection. Return a new socket representing the\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1682 connection, and the address of the client. 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
|
1683 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
|
1684 |
|
23815
203d1412a7e8
Major overhaul of timeout sockets:
Guido van Rossum <guido@python.org>
parents:
23807
diff
changeset
|
1685 /* s.setblocking(flag) method. Argument: |
|
203d1412a7e8
Major overhaul of timeout sockets:
Guido van Rossum <guido@python.org>
parents:
23807
diff
changeset
|
1686 False -- non-blocking mode; same as settimeout(0) |
|
203d1412a7e8
Major overhaul of timeout sockets:
Guido van Rossum <guido@python.org>
parents:
23807
diff
changeset
|
1687 True -- blocking mode; same as settimeout(None) |
|
203d1412a7e8
Major overhaul of timeout sockets:
Guido van Rossum <guido@python.org>
parents:
23807
diff
changeset
|
1688 */ |
|
1867
758c1374f303
Setup.in: added tkinter; rearranged the definition of PYTHONPATH so
Guido van Rossum <guido@python.org>
parents:
1792
diff
changeset
|
1689 |
| 1970 | 1690 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
|
1691 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
|
1692 { |
|
758c1374f303
Setup.in: added tkinter; rearranged the definition of PYTHONPATH so
Guido van Rossum <guido@python.org>
parents:
1792
diff
changeset
|
1693 int block; |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
1694 |
|
20376
061da22f4203
Convert socket methods to use METH_O and METH_NOARGS where possible.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
20369
diff
changeset
|
1695 block = PyInt_AsLong(arg); |
|
061da22f4203
Convert socket methods to use METH_O and METH_NOARGS where possible.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
20369
diff
changeset
|
1696 if (block == -1 && PyErr_Occurred()) |
|
1867
758c1374f303
Setup.in: added tkinter; rearranged the definition of PYTHONPATH so
Guido van Rossum <guido@python.org>
parents:
1792
diff
changeset
|
1697 return NULL; |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
1698 |
|
23815
203d1412a7e8
Major overhaul of timeout sockets:
Guido van Rossum <guido@python.org>
parents:
23807
diff
changeset
|
1699 s->sock_timeout = block ? -1.0 : 0.0; |
|
23727
9d11f51860dd
I decided to change the interaction between setblocking() and
Guido van Rossum <guido@python.org>
parents:
23725
diff
changeset
|
1700 internal_setblocking(s, block); |
|
1867
758c1374f303
Setup.in: added tkinter; rearranged the definition of PYTHONPATH so
Guido van Rossum <guido@python.org>
parents:
1792
diff
changeset
|
1701 |
| 1970 | 1702 Py_INCREF(Py_None); |
| 1703 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
|
1704 } |
|
758c1374f303
Setup.in: added tkinter; rearranged the definition of PYTHONPATH so
Guido van Rossum <guido@python.org>
parents:
1792
diff
changeset
|
1705 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
1706 PyDoc_STRVAR(setblocking_doc, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1707 "setblocking(flag)\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1708 \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1709 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
|
1710 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
|
1711 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
|
1712 |
|
203d1412a7e8
Major overhaul of timeout sockets:
Guido van Rossum <guido@python.org>
parents:
23807
diff
changeset
|
1713 /* s.settimeout(timeout) method. Argument: |
|
203d1412a7e8
Major overhaul of timeout sockets:
Guido van Rossum <guido@python.org>
parents:
23807
diff
changeset
|
1714 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
|
1715 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
|
1716 > 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
|
1717 < 0 -- illegal; raises an exception |
|
203d1412a7e8
Major overhaul of timeout sockets:
Guido van Rossum <guido@python.org>
parents:
23807
diff
changeset
|
1718 */ |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
1719 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
|
1720 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
|
1721 { |
|
23815
203d1412a7e8
Major overhaul of timeout sockets:
Guido van Rossum <guido@python.org>
parents:
23807
diff
changeset
|
1722 double timeout; |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
1723 |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
1724 if (arg == Py_None) |
|
23815
203d1412a7e8
Major overhaul of timeout sockets:
Guido van Rossum <guido@python.org>
parents:
23807
diff
changeset
|
1725 timeout = -1.0; |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
1726 else { |
|
23815
203d1412a7e8
Major overhaul of timeout sockets:
Guido van Rossum <guido@python.org>
parents:
23807
diff
changeset
|
1727 timeout = PyFloat_AsDouble(arg); |
|
203d1412a7e8
Major overhaul of timeout sockets:
Guido van Rossum <guido@python.org>
parents:
23807
diff
changeset
|
1728 if (timeout < 0.0) { |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
1729 if (!PyErr_Occurred()) |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
1730 PyErr_SetString(PyExc_ValueError, |
|
23815
203d1412a7e8
Major overhaul of timeout sockets:
Guido van Rossum <guido@python.org>
parents:
23807
diff
changeset
|
1731 "Timeout value out of range"); |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
1732 return NULL; |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
1733 } |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
1734 } |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
1735 |
|
23815
203d1412a7e8
Major overhaul of timeout sockets:
Guido van Rossum <guido@python.org>
parents:
23807
diff
changeset
|
1736 s->sock_timeout = timeout; |
|
203d1412a7e8
Major overhaul of timeout sockets:
Guido van Rossum <guido@python.org>
parents:
23807
diff
changeset
|
1737 internal_setblocking(s, timeout < 0.0); |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
1738 |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
1739 Py_INCREF(Py_None); |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
1740 return Py_None; |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
1741 } |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
1742 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
1743 PyDoc_STRVAR(settimeout_doc, |
|
23723
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
1744 "settimeout(timeout)\n\ |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
1745 \n\ |
|
23815
203d1412a7e8
Major overhaul of timeout sockets:
Guido van Rossum <guido@python.org>
parents:
23807
diff
changeset
|
1746 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
|
1747 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
|
1748 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
|
1749 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
|
1750 |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
1751 /* s.gettimeout() method. |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
1752 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
|
1753 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
|
1754 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
|
1755 { |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
1756 if (s->sock_timeout < 0.0) { |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
1757 Py_INCREF(Py_None); |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
1758 return Py_None; |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
1759 } |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
1760 else |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
1761 return PyFloat_FromDouble(s->sock_timeout); |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
1762 } |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
1763 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
1764 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
|
1765 "gettimeout() -> timeout\n\ |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
1766 \n\ |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
1767 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
|
1768 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
|
1769 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
|
1770 |
|
16947
b25131bc6ec7
RISCOS changes by dschwertberger.
Guido van Rossum <guido@python.org>
parents:
16472
diff
changeset
|
1771 #ifdef RISCOS |
|
b25131bc6ec7
RISCOS changes by dschwertberger.
Guido van Rossum <guido@python.org>
parents:
16472
diff
changeset
|
1772 /* s.sleeptaskw(1 | 0) method */ |
|
b25131bc6ec7
RISCOS changes by dschwertberger.
Guido van Rossum <guido@python.org>
parents:
16472
diff
changeset
|
1773 |
|
b25131bc6ec7
RISCOS changes by dschwertberger.
Guido van Rossum <guido@python.org>
parents:
16472
diff
changeset
|
1774 static PyObject * |
|
29066
90342f395721
Patch #734231: Update RiscOS support. In particular, correct
Martin v. Löwis <martin@v.loewis.de>
parents:
29037
diff
changeset
|
1775 sock_sleeptaskw(PySocketSockObject *s,PyObject *arg) |
|
16947
b25131bc6ec7
RISCOS changes by dschwertberger.
Guido van Rossum <guido@python.org>
parents:
16472
diff
changeset
|
1776 { |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
1777 int block; |
|
29066
90342f395721
Patch #734231: Update RiscOS support. In particular, correct
Martin v. Löwis <martin@v.loewis.de>
parents:
29037
diff
changeset
|
1778 block = PyInt_AsLong(arg); |
|
90342f395721
Patch #734231: Update RiscOS support. In particular, correct
Martin v. Löwis <martin@v.loewis.de>
parents:
29037
diff
changeset
|
1779 if (block == -1 && PyErr_Occurred()) |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
1780 return NULL; |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
1781 Py_BEGIN_ALLOW_THREADS |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
1782 socketioctl(s->sock_fd, 0x80046679, (u_long*)&block); |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
1783 Py_END_ALLOW_THREADS |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
1784 |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
1785 Py_INCREF(Py_None); |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
1786 return Py_None; |
|
16947
b25131bc6ec7
RISCOS changes by dschwertberger.
Guido van Rossum <guido@python.org>
parents:
16472
diff
changeset
|
1787 } |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
1788 PyDoc_STRVAR(sleeptaskw_doc, |
|
16947
b25131bc6ec7
RISCOS changes by dschwertberger.
Guido van Rossum <guido@python.org>
parents:
16472
diff
changeset
|
1789 "sleeptaskw(flag)\n\ |
|
b25131bc6ec7
RISCOS changes by dschwertberger.
Guido van Rossum <guido@python.org>
parents:
16472
diff
changeset
|
1790 \n\ |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
1791 Allow sleeps in taskwindows."); |
|
16947
b25131bc6ec7
RISCOS changes by dschwertberger.
Guido van Rossum <guido@python.org>
parents:
16472
diff
changeset
|
1792 #endif |
|
b25131bc6ec7
RISCOS changes by dschwertberger.
Guido van Rossum <guido@python.org>
parents:
16472
diff
changeset
|
1793 |
|
b25131bc6ec7
RISCOS changes by dschwertberger.
Guido van Rossum <guido@python.org>
parents:
16472
diff
changeset
|
1794 |
|
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
|
1795 /* 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
|
1796 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
|
1797 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
|
1798 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
|
1799 |
| 1970 | 1800 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
|
1801 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
|
1802 { |
|
6459e2f21bf6
Added {get,set}sockopt(). allowbroadcast is now obsolete.
Guido van Rossum <guido@python.org>
parents:
795
diff
changeset
|
1803 int level; |
|
6459e2f21bf6
Added {get,set}sockopt(). allowbroadcast is now obsolete.
Guido van Rossum <guido@python.org>
parents:
795
diff
changeset
|
1804 int optname; |
|
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
|
1805 int res; |
|
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
|
1806 char *buf; |
|
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
|
1807 int buflen; |
|
896
6459e2f21bf6
Added {get,set}sockopt(). allowbroadcast is now obsolete.
Guido van Rossum <guido@python.org>
parents:
795
diff
changeset
|
1808 int flag; |
|
6459e2f21bf6
Added {get,set}sockopt(). allowbroadcast is now obsolete.
Guido van Rossum <guido@python.org>
parents:
795
diff
changeset
|
1809 |
|
12050
b90880c0e5eb
Fix all routines to use PyArg_ParseTuple(), and add ":name" to the
Guido van Rossum <guido@python.org>
parents:
11937
diff
changeset
|
1810 if (PyArg_ParseTuple(args, "iii:setsockopt", |
|
b90880c0e5eb
Fix all routines to use PyArg_ParseTuple(), and add ":name" to the
Guido van Rossum <guido@python.org>
parents:
11937
diff
changeset
|
1811 &level, &optname, &flag)) { |
|
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
|
1812 buf = (char *) &flag; |
|
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
|
1813 buflen = sizeof flag; |
|
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
|
1814 } |
|
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
|
1815 else { |
| 1970 | 1816 PyErr_Clear(); |
|
12050
b90880c0e5eb
Fix all routines to use PyArg_ParseTuple(), and add ":name" to the
Guido van Rossum <guido@python.org>
parents:
11937
diff
changeset
|
1817 if (!PyArg_ParseTuple(args, "iis#:setsockopt", |
|
b90880c0e5eb
Fix all routines to use PyArg_ParseTuple(), and add ":name" to the
Guido van Rossum <guido@python.org>
parents:
11937
diff
changeset
|
1818 &level, &optname, &buf, &buflen)) |
|
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
|
1819 return NULL; |
|
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
|
1820 } |
|
13709
4e2aaf1e722a
Use 'void' directly instead of the ANY #define, now that all code is ANSI C.
Thomas Wouters <thomas@python.org>
parents:
13695
diff
changeset
|
1821 res = setsockopt(s->sock_fd, level, optname, (void *)buf, buflen); |
|
896
6459e2f21bf6
Added {get,set}sockopt(). allowbroadcast is now obsolete.
Guido van Rossum <guido@python.org>
parents:
795
diff
changeset
|
1822 if (res < 0) |
|
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
|
1823 return s->errorhandler(); |
| 1970 | 1824 Py_INCREF(Py_None); |
| 1825 return Py_None; | |
|
896
6459e2f21bf6
Added {get,set}sockopt(). allowbroadcast is now obsolete.
Guido van Rossum <guido@python.org>
parents:
795
diff
changeset
|
1826 } |
|
6459e2f21bf6
Added {get,set}sockopt(). allowbroadcast is now obsolete.
Guido van Rossum <guido@python.org>
parents:
795
diff
changeset
|
1827 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
1828 PyDoc_STRVAR(setsockopt_doc, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1829 "setsockopt(level, option, value)\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1830 \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1831 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
|
1832 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
|
1833 |
|
896
6459e2f21bf6
Added {get,set}sockopt(). allowbroadcast is now obsolete.
Guido van Rossum <guido@python.org>
parents:
795
diff
changeset
|
1834 |
|
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
|
1835 /* 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
|
1836 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
|
1837 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
|
1838 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
|
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_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
|
1842 { |
|
6459e2f21bf6
Added {get,set}sockopt(). allowbroadcast is now obsolete.
Guido van Rossum <guido@python.org>
parents:
795
diff
changeset
|
1843 int level; |
|
6459e2f21bf6
Added {get,set}sockopt(). allowbroadcast is now obsolete.
Guido van Rossum <guido@python.org>
parents:
795
diff
changeset
|
1844 int optname; |
|
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
|
1845 int res; |
| 1970 | 1846 PyObject *buf; |
|
12479
a3e1fecb43c6
Jack Jansen: The GUSI 2.0 I/O library used on the Mac uses the
Guido van Rossum <guido@python.org>
parents:
12436
diff
changeset
|
1847 socklen_t buflen = 0; |
|
896
6459e2f21bf6
Added {get,set}sockopt(). allowbroadcast is now obsolete.
Guido van Rossum <guido@python.org>
parents:
795
diff
changeset
|
1848 |
|
8823
f2a4a2b60860
Changes for BeOS, QNX and long long, by Chris Herborth.
Guido van Rossum <guido@python.org>
parents:
8821
diff
changeset
|
1849 #ifdef __BEOS__ |
|
17806
3380279612a3
Fix a minor style consistency issue.
Fred Drake <fdrake@acm.org>
parents:
17737
diff
changeset
|
1850 /* We have incomplete socket support. */ |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
1851 PyErr_SetString(socket_error, "getsockopt not supported"); |
|
8823
f2a4a2b60860
Changes for BeOS, QNX and long long, by Chris Herborth.
Guido van Rossum <guido@python.org>
parents:
8821
diff
changeset
|
1852 return NULL; |
|
f2a4a2b60860
Changes for BeOS, QNX and long long, by Chris Herborth.
Guido van Rossum <guido@python.org>
parents:
8821
diff
changeset
|
1853 #else |
|
f2a4a2b60860
Changes for BeOS, QNX and long long, by Chris Herborth.
Guido van Rossum <guido@python.org>
parents:
8821
diff
changeset
|
1854 |
|
12050
b90880c0e5eb
Fix all routines to use PyArg_ParseTuple(), and add ":name" to the
Guido van Rossum <guido@python.org>
parents:
11937
diff
changeset
|
1855 if (!PyArg_ParseTuple(args, "ii|i:getsockopt", |
|
b90880c0e5eb
Fix all routines to use PyArg_ParseTuple(), and add ":name" to the
Guido van Rossum <guido@python.org>
parents:
11937
diff
changeset
|
1856 &level, &optname, &buflen)) |
|
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
|
1857 return NULL; |
|
16947
b25131bc6ec7
RISCOS changes by dschwertberger.
Guido van Rossum <guido@python.org>
parents:
16472
diff
changeset
|
1858 |
|
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
|
1859 if (buflen == 0) { |
|
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
|
1860 int flag = 0; |
|
12479
a3e1fecb43c6
Jack Jansen: The GUSI 2.0 I/O library used on the Mac uses the
Guido van Rossum <guido@python.org>
parents:
12436
diff
changeset
|
1861 socklen_t flagsize = sizeof flag; |
|
1413
c914b10bf2ed
* timemodule.c: Add hack for Solaris 2.
Guido van Rossum <guido@python.org>
parents:
1313
diff
changeset
|
1862 res = getsockopt(s->sock_fd, level, optname, |
|
13709
4e2aaf1e722a
Use 'void' directly instead of the ANY #define, now that all code is ANSI C.
Thomas Wouters <thomas@python.org>
parents:
13695
diff
changeset
|
1863 (void *)&flag, &flagsize); |
|
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
|
1864 if (res < 0) |
|
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
|
1865 return s->errorhandler(); |
| 1970 | 1866 return PyInt_FromLong(flag); |
|
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
|
1867 } |
|
26550
b9c912e2c3c0
Patch #614055: Support OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
25994
diff
changeset
|
1868 #ifdef __VMS |
|
39043
c67b23397f30
Patch #1516912: improve Modules support for OpenVMS.
Neal Norwitz <nnorwitz@gmail.com>
parents:
38716
diff
changeset
|
1869 /* socklen_t is unsigned so no negative test is needed, |
|
c67b23397f30
Patch #1516912: improve Modules support for OpenVMS.
Neal Norwitz <nnorwitz@gmail.com>
parents:
38716
diff
changeset
|
1870 test buflen == 0 is previously done */ |
|
26550
b9c912e2c3c0
Patch #614055: Support OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
25994
diff
changeset
|
1871 if (buflen > 1024) { |
|
b9c912e2c3c0
Patch #614055: Support OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
25994
diff
changeset
|
1872 #else |
|
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
|
1873 if (buflen <= 0 || buflen > 1024) { |
|
26550
b9c912e2c3c0
Patch #614055: Support OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
25994
diff
changeset
|
1874 #endif |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
1875 PyErr_SetString(socket_error, |
|
4871
a7159ba0e45d
Check of return values and proper error handling.
Barry Warsaw <barry@python.org>
parents:
4783
diff
changeset
|
1876 "getsockopt buflen out of range"); |
|
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
|
1877 return NULL; |
|
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
|
1878 } |
|
47527
52294af4b663
This reverts r63675 based on the discussion in this thread:
Gregory P. Smith <greg@mad-scientist.com>
parents:
47294
diff
changeset
|
1879 buf = PyString_FromStringAndSize((char *)NULL, buflen); |
|
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
|
1880 if (buf == NULL) |
|
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
|
1881 return NULL; |
|
1413
c914b10bf2ed
* timemodule.c: Add hack for Solaris 2.
Guido van Rossum <guido@python.org>
parents:
1313
diff
changeset
|
1882 res = getsockopt(s->sock_fd, level, optname, |
|
47527
52294af4b663
This reverts r63675 based on the discussion in this thread:
Gregory P. Smith <greg@mad-scientist.com>
parents:
47294
diff
changeset
|
1883 (void *)PyString_AS_STRING(buf), &buflen); |
|
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
|
1884 if (res < 0) { |
| 1970 | 1885 Py_DECREF(buf); |
|
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
|
1886 return s->errorhandler(); |
|
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
|
1887 } |
|
47527
52294af4b663
This reverts r63675 based on the discussion in this thread:
Gregory P. Smith <greg@mad-scientist.com>
parents:
47294
diff
changeset
|
1888 _PyString_Resize(&buf, buflen); |
|
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
|
1889 return buf; |
|
8823
f2a4a2b60860
Changes for BeOS, QNX and long long, by Chris Herborth.
Guido van Rossum <guido@python.org>
parents:
8821
diff
changeset
|
1890 #endif /* __BEOS__ */ |
|
896
6459e2f21bf6
Added {get,set}sockopt(). allowbroadcast is now obsolete.
Guido van Rossum <guido@python.org>
parents:
795
diff
changeset
|
1891 } |
|
6459e2f21bf6
Added {get,set}sockopt(). allowbroadcast is now obsolete.
Guido van Rossum <guido@python.org>
parents:
795
diff
changeset
|
1892 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
1893 PyDoc_STRVAR(getsockopt_doc, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1894 "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
|
1895 \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1896 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
|
1897 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
|
1898 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
|
1899 |
|
896
6459e2f21bf6
Added {get,set}sockopt(). allowbroadcast is now obsolete.
Guido van Rossum <guido@python.org>
parents:
795
diff
changeset
|
1900 |
|
13278
3370edad08ce
Restore strict checking of socket address values; addresses passed to
Fred Drake <fdrake@acm.org>
parents:
13256
diff
changeset
|
1901 /* s.bind(sockaddr) method */ |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1902 |
| 1970 | 1903 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
|
1904 sock_bind(PySocketSockObject *s, PyObject *addro) |
| 294 | 1905 { |
|
40416
c43787e6d706
Patch #1544279: Improve thread-safety of the socket module by moving
Martin v. Löwis <martin@v.loewis.de>
parents:
39502
diff
changeset
|
1906 sock_addr_t addrbuf; |
| 294 | 1907 int addrlen; |
| 926 | 1908 int res; |
|
20376
061da22f4203
Convert socket methods to use METH_O and METH_NOARGS where possible.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
20369
diff
changeset
|
1909 |
|
40416
c43787e6d706
Patch #1544279: Improve thread-safety of the socket module by moving
Martin v. Löwis <martin@v.loewis.de>
parents:
39502
diff
changeset
|
1910 if (!getsockaddrarg(s, addro, SAS2SA(&addrbuf), &addrlen)) |
| 294 | 1911 return NULL; |
| 1970 | 1912 Py_BEGIN_ALLOW_THREADS |
|
40416
c43787e6d706
Patch #1544279: Improve thread-safety of the socket module by moving
Martin v. Löwis <martin@v.loewis.de>
parents:
39502
diff
changeset
|
1913 res = bind(s->sock_fd, SAS2SA(&addrbuf), addrlen); |
| 1970 | 1914 Py_END_ALLOW_THREADS |
| 926 | 1915 if (res < 0) |
|
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
|
1916 return s->errorhandler(); |
| 1970 | 1917 Py_INCREF(Py_None); |
| 1918 return Py_None; | |
| 294 | 1919 } |
| 1920 | |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
1921 PyDoc_STRVAR(bind_doc, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1922 "bind(address)\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1923 \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1924 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
|
1925 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
|
1926 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
|
1927 |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1928 |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1929 /* s.close() method. |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1930 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
|
1931 will surely fail. */ |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1932 |
| 1970 | 1933 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
|
1934 sock_close(PySocketSockObject *s) |
| 294 | 1935 { |
|
15604
15e1eb1019b8
Adapted from a patch by Barry Scott, SF patch #102875 and SF bug
Guido van Rossum <guido@python.org>
parents:
15466
diff
changeset
|
1936 SOCKET_T fd; |
|
20376
061da22f4203
Convert socket methods to use METH_O and METH_NOARGS where possible.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
20369
diff
changeset
|
1937 |
|
15604
15e1eb1019b8
Adapted from a patch by Barry Scott, SF patch #102875 and SF bug
Guido van Rossum <guido@python.org>
parents:
15466
diff
changeset
|
1938 if ((fd = s->sock_fd) != -1) { |
|
15e1eb1019b8
Adapted from a patch by Barry Scott, SF patch #102875 and SF bug
Guido van Rossum <guido@python.org>
parents:
15466
diff
changeset
|
1939 s->sock_fd = -1; |
|
4407
7ddd8b3f6802
Don't close an already closed socket.
Guido van Rossum <guido@python.org>
parents:
3738
diff
changeset
|
1940 Py_BEGIN_ALLOW_THREADS |
|
15604
15e1eb1019b8
Adapted from a patch by Barry Scott, SF patch #102875 and SF bug
Guido van Rossum <guido@python.org>
parents:
15466
diff
changeset
|
1941 (void) SOCKETCLOSE(fd); |
|
4407
7ddd8b3f6802
Don't close an already closed socket.
Guido van Rossum <guido@python.org>
parents:
3738
diff
changeset
|
1942 Py_END_ALLOW_THREADS |
|
7ddd8b3f6802
Don't close an already closed socket.
Guido van Rossum <guido@python.org>
parents:
3738
diff
changeset
|
1943 } |
| 1970 | 1944 Py_INCREF(Py_None); |
| 1945 return Py_None; | |
| 294 | 1946 } |
| 1947 | |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
1948 PyDoc_STRVAR(close_doc, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1949 "close()\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1950 \n\ |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
1951 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
|
1952 |
|
23818
8a0a14e3725e
Fix non-blocking connect() for Windows. Refactored the code
Guido van Rossum <guido@python.org>
parents:
23815
diff
changeset
|
1953 static int |
|
29651
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
1954 internal_connect(PySocketSockObject *s, struct sockaddr *addr, int addrlen, |
|
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
1955 int *timeoutp) |
|
23818
8a0a14e3725e
Fix non-blocking connect() for Windows. Refactored the code
Guido van Rossum <guido@python.org>
parents:
23815
diff
changeset
|
1956 { |
|
29651
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
1957 int res, timeout; |
|
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
1958 |
|
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
1959 timeout = 0; |
|
23818
8a0a14e3725e
Fix non-blocking connect() for Windows. Refactored the code
Guido van Rossum <guido@python.org>
parents:
23815
diff
changeset
|
1960 res = connect(s->sock_fd, addr, addrlen); |
|
8a0a14e3725e
Fix non-blocking connect() for Windows. Refactored the code
Guido van Rossum <guido@python.org>
parents:
23815
diff
changeset
|
1961 |
|
8a0a14e3725e
Fix non-blocking connect() for Windows. Refactored the code
Guido van Rossum <guido@python.org>
parents:
23815
diff
changeset
|
1962 #ifdef MS_WINDOWS |
|
8a0a14e3725e
Fix non-blocking connect() for Windows. Refactored the code
Guido van Rossum <guido@python.org>
parents:
23815
diff
changeset
|
1963 |
|
8a0a14e3725e
Fix non-blocking connect() for Windows. Refactored the code
Guido van Rossum <guido@python.org>
parents:
23815
diff
changeset
|
1964 if (s->sock_timeout > 0.0) { |
|
36452
7789cc557e1e
Bug #876637, prevent stack corruption when socket descriptor
Neal Norwitz <nnorwitz@gmail.com>
parents:
36324
diff
changeset
|
1965 if (res < 0 && WSAGetLastError() == WSAEWOULDBLOCK && |
|
7789cc557e1e
Bug #876637, prevent stack corruption when socket descriptor
Neal Norwitz <nnorwitz@gmail.com>
parents:
36324
diff
changeset
|
1966 IS_SELECTABLE(s)) { |
|
27981
eb2a984d3747
The connect timeout code wasn't working on Windows.
Guido van Rossum <guido@python.org>
parents:
27861
diff
changeset
|
1967 /* This is a mess. Best solution: trust select */ |
|
eb2a984d3747
The connect timeout code wasn't working on Windows.
Guido van Rossum <guido@python.org>
parents:
27861
diff
changeset
|
1968 fd_set fds; |
|
32909
65319607bed8
Fix [ 1001018 ]: Windows: setdefaulttimeout causes unnecessary timeouts on
Mark Hammond <mhammond@skippinet.com.au>
parents:
32764
diff
changeset
|
1969 fd_set fds_exc; |
|
27981
eb2a984d3747
The connect timeout code wasn't working on Windows.
Guido van Rossum <guido@python.org>
parents:
27861
diff
changeset
|
1970 struct timeval tv; |
|
eb2a984d3747
The connect timeout code wasn't working on Windows.
Guido van Rossum <guido@python.org>
parents:
27861
diff
changeset
|
1971 tv.tv_sec = (int)s->sock_timeout; |
|
eb2a984d3747
The connect timeout code wasn't working on Windows.
Guido van Rossum <guido@python.org>
parents:
27861
diff
changeset
|
1972 tv.tv_usec = (int)((s->sock_timeout - tv.tv_sec) * 1e6); |
|
eb2a984d3747
The connect timeout code wasn't working on Windows.
Guido van Rossum <guido@python.org>
parents:
27861
diff
changeset
|
1973 FD_ZERO(&fds); |
|
eb2a984d3747
The connect timeout code wasn't working on Windows.
Guido van Rossum <guido@python.org>
parents:
27861
diff
changeset
|
1974 FD_SET(s->sock_fd, &fds); |
|
32909
65319607bed8
Fix [ 1001018 ]: Windows: setdefaulttimeout causes unnecessary timeouts on
Mark Hammond <mhammond@skippinet.com.au>
parents:
32764
diff
changeset
|
1975 FD_ZERO(&fds_exc); |
|
65319607bed8
Fix [ 1001018 ]: Windows: setdefaulttimeout causes unnecessary timeouts on
Mark Hammond <mhammond@skippinet.com.au>
parents:
32764
diff
changeset
|
1976 FD_SET(s->sock_fd, &fds_exc); |
|
65319607bed8
Fix [ 1001018 ]: Windows: setdefaulttimeout causes unnecessary timeouts on
Mark Hammond <mhammond@skippinet.com.au>
parents:
32764
diff
changeset
|
1977 res = select(s->sock_fd+1, NULL, &fds, &fds_exc, &tv); |
|
29651
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
1978 if (res == 0) { |
|
27981
eb2a984d3747
The connect timeout code wasn't working on Windows.
Guido van Rossum <guido@python.org>
parents:
27861
diff
changeset
|
1979 res = WSAEWOULDBLOCK; |
|
29651
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
1980 timeout = 1; |
|
32909
65319607bed8
Fix [ 1001018 ]: Windows: setdefaulttimeout causes unnecessary timeouts on
Mark Hammond <mhammond@skippinet.com.au>
parents:
32764
diff
changeset
|
1981 } else if (res > 0) { |
|
65319607bed8
Fix [ 1001018 ]: Windows: setdefaulttimeout causes unnecessary timeouts on
Mark Hammond <mhammond@skippinet.com.au>
parents:
32764
diff
changeset
|
1982 if (FD_ISSET(s->sock_fd, &fds)) |
|
65319607bed8
Fix [ 1001018 ]: Windows: setdefaulttimeout causes unnecessary timeouts on
Mark Hammond <mhammond@skippinet.com.au>
parents:
32764
diff
changeset
|
1983 /* The socket is in the writeable set - this |
|
65319607bed8
Fix [ 1001018 ]: Windows: setdefaulttimeout causes unnecessary timeouts on
Mark Hammond <mhammond@skippinet.com.au>
parents:
32764
diff
changeset
|
1984 means connected */ |
|
65319607bed8
Fix [ 1001018 ]: Windows: setdefaulttimeout causes unnecessary timeouts on
Mark Hammond <mhammond@skippinet.com.au>
parents:
32764
diff
changeset
|
1985 res = 0; |
|
65319607bed8
Fix [ 1001018 ]: Windows: setdefaulttimeout causes unnecessary timeouts on
Mark Hammond <mhammond@skippinet.com.au>
parents:
32764
diff
changeset
|
1986 else { |
|
65319607bed8
Fix [ 1001018 ]: Windows: setdefaulttimeout causes unnecessary timeouts on
Mark Hammond <mhammond@skippinet.com.au>
parents:
32764
diff
changeset
|
1987 /* As per MS docs, we need to call getsockopt() |
|
65319607bed8
Fix [ 1001018 ]: Windows: setdefaulttimeout causes unnecessary timeouts on
Mark Hammond <mhammond@skippinet.com.au>
parents:
32764
diff
changeset
|
1988 to get the underlying error */ |
|
65319607bed8
Fix [ 1001018 ]: Windows: setdefaulttimeout causes unnecessary timeouts on
Mark Hammond <mhammond@skippinet.com.au>
parents:
32764
diff
changeset
|
1989 int res_size = sizeof res; |
|
65319607bed8
Fix [ 1001018 ]: Windows: setdefaulttimeout causes unnecessary timeouts on
Mark Hammond <mhammond@skippinet.com.au>
parents:
32764
diff
changeset
|
1990 /* It must be in the exception set */ |
|
65319607bed8
Fix [ 1001018 ]: Windows: setdefaulttimeout causes unnecessary timeouts on
Mark Hammond <mhammond@skippinet.com.au>
parents:
32764
diff
changeset
|
1991 assert(FD_ISSET(s->sock_fd, &fds_exc)); |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
1992 if (0 == getsockopt(s->sock_fd, SOL_SOCKET, SO_ERROR, |
|
32909
65319607bed8
Fix [ 1001018 ]: Windows: setdefaulttimeout causes unnecessary timeouts on
Mark Hammond <mhammond@skippinet.com.au>
parents:
32764
diff
changeset
|
1993 (char *)&res, &res_size)) |
|
65319607bed8
Fix [ 1001018 ]: Windows: setdefaulttimeout causes unnecessary timeouts on
Mark Hammond <mhammond@skippinet.com.au>
parents:
32764
diff
changeset
|
1994 /* getsockopt also clears WSAGetLastError, |
|
65319607bed8
Fix [ 1001018 ]: Windows: setdefaulttimeout causes unnecessary timeouts on
Mark Hammond <mhammond@skippinet.com.au>
parents:
32764
diff
changeset
|
1995 so reset it back. */ |
|
65319607bed8
Fix [ 1001018 ]: Windows: setdefaulttimeout causes unnecessary timeouts on
Mark Hammond <mhammond@skippinet.com.au>
parents:
32764
diff
changeset
|
1996 WSASetLastError(res); |
|
65319607bed8
Fix [ 1001018 ]: Windows: setdefaulttimeout causes unnecessary timeouts on
Mark Hammond <mhammond@skippinet.com.au>
parents:
32764
diff
changeset
|
1997 else |
|
65319607bed8
Fix [ 1001018 ]: Windows: setdefaulttimeout causes unnecessary timeouts on
Mark Hammond <mhammond@skippinet.com.au>
parents:
32764
diff
changeset
|
1998 res = WSAGetLastError(); |
|
65319607bed8
Fix [ 1001018 ]: Windows: setdefaulttimeout causes unnecessary timeouts on
Mark Hammond <mhammond@skippinet.com.au>
parents:
32764
diff
changeset
|
1999 } |
|
65319607bed8
Fix [ 1001018 ]: Windows: setdefaulttimeout causes unnecessary timeouts on
Mark Hammond <mhammond@skippinet.com.au>
parents:
32764
diff
changeset
|
2000 } |
|
27981
eb2a984d3747
The connect timeout code wasn't working on Windows.
Guido van Rossum <guido@python.org>
parents:
27861
diff
changeset
|
2001 /* else if (res < 0) an error occurred */ |
|
23818
8a0a14e3725e
Fix non-blocking connect() for Windows. Refactored the code
Guido van Rossum <guido@python.org>
parents:
23815
diff
changeset
|
2002 } |
|
8a0a14e3725e
Fix non-blocking connect() for Windows. Refactored the code
Guido van Rossum <guido@python.org>
parents:
23815
diff
changeset
|
2003 } |
|
8a0a14e3725e
Fix non-blocking connect() for Windows. Refactored the code
Guido van Rossum <guido@python.org>
parents:
23815
diff
changeset
|
2004 |
|
8a0a14e3725e
Fix non-blocking connect() for Windows. Refactored the code
Guido van Rossum <guido@python.org>
parents:
23815
diff
changeset
|
2005 if (res < 0) |
|
8a0a14e3725e
Fix non-blocking connect() for Windows. Refactored the code
Guido van Rossum <guido@python.org>
parents:
23815
diff
changeset
|
2006 res = WSAGetLastError(); |
|
8a0a14e3725e
Fix non-blocking connect() for Windows. Refactored the code
Guido van Rossum <guido@python.org>
parents:
23815
diff
changeset
|
2007 |
|
8a0a14e3725e
Fix non-blocking connect() for Windows. Refactored the code
Guido van Rossum <guido@python.org>
parents:
23815
diff
changeset
|
2008 #else |
|
8a0a14e3725e
Fix non-blocking connect() for Windows. Refactored the code
Guido van Rossum <guido@python.org>
parents:
23815
diff
changeset
|
2009 |
|
8a0a14e3725e
Fix non-blocking connect() for Windows. Refactored the code
Guido van Rossum <guido@python.org>
parents:
23815
diff
changeset
|
2010 if (s->sock_timeout > 0.0) { |
|
44789
3c9ccc32da9a
Patch #1019808 from Federico Schwindt: Return correct socket error when
Andrew M. Kuchling <amk@amk.ca>
parents:
44659
diff
changeset
|
2011 if (res < 0 && errno == EINPROGRESS && IS_SELECTABLE(s)) { |
|
3c9ccc32da9a
Patch #1019808 from Federico Schwindt: Return correct socket error when
Andrew M. Kuchling <amk@amk.ca>
parents:
44659
diff
changeset
|
2012 timeout = internal_select(s, 1); |
|
3c9ccc32da9a
Patch #1019808 from Federico Schwindt: Return correct socket error when
Andrew M. Kuchling <amk@amk.ca>
parents:
44659
diff
changeset
|
2013 if (timeout == 0) { |
|
3c9ccc32da9a
Patch #1019808 from Federico Schwindt: Return correct socket error when
Andrew M. Kuchling <amk@amk.ca>
parents:
44659
diff
changeset
|
2014 /* Bug #1019808: in case of an EINPROGRESS, |
|
3c9ccc32da9a
Patch #1019808 from Federico Schwindt: Return correct socket error when
Andrew M. Kuchling <amk@amk.ca>
parents:
44659
diff
changeset
|
2015 use getsockopt(SO_ERROR) to get the real |
|
3c9ccc32da9a
Patch #1019808 from Federico Schwindt: Return correct socket error when
Andrew M. Kuchling <amk@amk.ca>
parents:
44659
diff
changeset
|
2016 error. */ |
|
3c9ccc32da9a
Patch #1019808 from Federico Schwindt: Return correct socket error when
Andrew M. Kuchling <amk@amk.ca>
parents:
44659
diff
changeset
|
2017 socklen_t res_size = sizeof res; |
|
3c9ccc32da9a
Patch #1019808 from Federico Schwindt: Return correct socket error when
Andrew M. Kuchling <amk@amk.ca>
parents:
44659
diff
changeset
|
2018 (void)getsockopt(s->sock_fd, SOL_SOCKET, |
|
3c9ccc32da9a
Patch #1019808 from Federico Schwindt: Return correct socket error when
Andrew M. Kuchling <amk@amk.ca>
parents:
44659
diff
changeset
|
2019 SO_ERROR, &res, &res_size); |
|
3c9ccc32da9a
Patch #1019808 from Federico Schwindt: Return correct socket error when
Andrew M. Kuchling <amk@amk.ca>
parents:
44659
diff
changeset
|
2020 if (res == EISCONN) |
|
3c9ccc32da9a
Patch #1019808 from Federico Schwindt: Return correct socket error when
Andrew M. Kuchling <amk@amk.ca>
parents:
44659
diff
changeset
|
2021 res = 0; |
|
3c9ccc32da9a
Patch #1019808 from Federico Schwindt: Return correct socket error when
Andrew M. Kuchling <amk@amk.ca>
parents:
44659
diff
changeset
|
2022 errno = res; |
|
3c9ccc32da9a
Patch #1019808 from Federico Schwindt: Return correct socket error when
Andrew M. Kuchling <amk@amk.ca>
parents:
44659
diff
changeset
|
2023 } |
|
3c9ccc32da9a
Patch #1019808 from Federico Schwindt: Return correct socket error when
Andrew M. Kuchling <amk@amk.ca>
parents:
44659
diff
changeset
|
2024 else if (timeout == -1) { |
|
3c9ccc32da9a
Patch #1019808 from Federico Schwindt: Return correct socket error when
Andrew M. Kuchling <amk@amk.ca>
parents:
44659
diff
changeset
|
2025 res = errno; /* had error */ |
|
3c9ccc32da9a
Patch #1019808 from Federico Schwindt: Return correct socket error when
Andrew M. Kuchling <amk@amk.ca>
parents:
44659
diff
changeset
|
2026 } |
|
39354
85fdcdfca85c
Patch #1519025 and bug #926423: If a KeyboardInterrupt occurs during
Neal Norwitz <nnorwitz@gmail.com>
parents:
39251
diff
changeset
|
2027 else |
|
85fdcdfca85c
Patch #1519025 and bug #926423: If a KeyboardInterrupt occurs during
Neal Norwitz <nnorwitz@gmail.com>
parents:
39251
diff
changeset
|
2028 res = EWOULDBLOCK; /* timed out */ |
|
23818
8a0a14e3725e
Fix non-blocking connect() for Windows. Refactored the code
Guido van Rossum <guido@python.org>
parents:
23815
diff
changeset
|
2029 } |
|
8a0a14e3725e
Fix non-blocking connect() for Windows. Refactored the code
Guido van Rossum <guido@python.org>
parents:
23815
diff
changeset
|
2030 } |
|
8a0a14e3725e
Fix non-blocking connect() for Windows. Refactored the code
Guido van Rossum <guido@python.org>
parents:
23815
diff
changeset
|
2031 |
|
8a0a14e3725e
Fix non-blocking connect() for Windows. Refactored the code
Guido van Rossum <guido@python.org>
parents:
23815
diff
changeset
|
2032 if (res < 0) |
|
8a0a14e3725e
Fix non-blocking connect() for Windows. Refactored the code
Guido van Rossum <guido@python.org>
parents:
23815
diff
changeset
|
2033 res = errno; |
|
8a0a14e3725e
Fix non-blocking connect() for Windows. Refactored the code
Guido van Rossum <guido@python.org>
parents:
23815
diff
changeset
|
2034 |
|
8a0a14e3725e
Fix non-blocking connect() for Windows. Refactored the code
Guido van Rossum <guido@python.org>
parents:
23815
diff
changeset
|
2035 #endif |
|
29651
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
2036 *timeoutp = timeout; |
|
23818
8a0a14e3725e
Fix non-blocking connect() for Windows. Refactored the code
Guido van Rossum <guido@python.org>
parents:
23815
diff
changeset
|
2037 |
|
8a0a14e3725e
Fix non-blocking connect() for Windows. Refactored the code
Guido van Rossum <guido@python.org>
parents:
23815
diff
changeset
|
2038 return res; |
|
8a0a14e3725e
Fix non-blocking connect() for Windows. Refactored the code
Guido van Rossum <guido@python.org>
parents:
23815
diff
changeset
|
2039 } |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2040 |
|
13278
3370edad08ce
Restore strict checking of socket address values; addresses passed to
Fred Drake <fdrake@acm.org>
parents:
13256
diff
changeset
|
2041 /* s.connect(sockaddr) method */ |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2042 |
| 1970 | 2043 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
|
2044 sock_connect(PySocketSockObject *s, PyObject *addro) |
| 294 | 2045 { |
|
40416
c43787e6d706
Patch #1544279: Improve thread-safety of the socket module by moving
Martin v. Löwis <martin@v.loewis.de>
parents:
39502
diff
changeset
|
2046 sock_addr_t addrbuf; |
| 294 | 2047 int addrlen; |
| 926 | 2048 int res; |
|
29651
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
2049 int timeout; |
|
20376
061da22f4203
Convert socket methods to use METH_O and METH_NOARGS where possible.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
20369
diff
changeset
|
2050 |
|
40416
c43787e6d706
Patch #1544279: Improve thread-safety of the socket module by moving
Martin v. Löwis <martin@v.loewis.de>
parents:
39502
diff
changeset
|
2051 if (!getsockaddrarg(s, addro, SAS2SA(&addrbuf), &addrlen)) |
| 294 | 2052 return NULL; |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
2053 |
| 1970 | 2054 Py_BEGIN_ALLOW_THREADS |
|
40416
c43787e6d706
Patch #1544279: Improve thread-safety of the socket module by moving
Martin v. Löwis <martin@v.loewis.de>
parents:
39502
diff
changeset
|
2055 res = internal_connect(s, SAS2SA(&addrbuf), addrlen, &timeout); |
| 1970 | 2056 Py_END_ALLOW_THREADS |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
2057 |
|
39354
85fdcdfca85c
Patch #1519025 and bug #926423: If a KeyboardInterrupt occurs during
Neal Norwitz <nnorwitz@gmail.com>
parents:
39251
diff
changeset
|
2058 if (timeout == 1) { |
|
29651
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
2059 PyErr_SetString(socket_timeout, "timed out"); |
|
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
2060 return NULL; |
|
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
2061 } |
|
23818
8a0a14e3725e
Fix non-blocking connect() for Windows. Refactored the code
Guido van Rossum <guido@python.org>
parents:
23815
diff
changeset
|
2062 if (res != 0) |
|
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
|
2063 return s->errorhandler(); |
| 1970 | 2064 Py_INCREF(Py_None); |
| 2065 return Py_None; | |
| 294 | 2066 } |
| 2067 | |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
2068 PyDoc_STRVAR(connect_doc, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2069 "connect(address)\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2070 \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2071 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
|
2072 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
|
2073 |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2074 |
|
13278
3370edad08ce
Restore strict checking of socket address values; addresses passed to
Fred Drake <fdrake@acm.org>
parents:
13256
diff
changeset
|
2075 /* 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
|
2076 |
|
f67a6339ede7
Add s.connect_ex() which returns errno instead of raising an exception.
Guido van Rossum <guido@python.org>
parents:
6367
diff
changeset
|
2077 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
|
2078 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
|
2079 { |
|
40416
c43787e6d706
Patch #1544279: Improve thread-safety of the socket module by moving
Martin v. Löwis <martin@v.loewis.de>
parents:
39502
diff
changeset
|
2080 sock_addr_t addrbuf; |
|
6604
f67a6339ede7
Add s.connect_ex() which returns errno instead of raising an exception.
Guido van Rossum <guido@python.org>
parents:
6367
diff
changeset
|
2081 int addrlen; |
|
f67a6339ede7
Add s.connect_ex() which returns errno instead of raising an exception.
Guido van Rossum <guido@python.org>
parents:
6367
diff
changeset
|
2082 int res; |
|
29651
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
2083 int timeout; |
|
20376
061da22f4203
Convert socket methods to use METH_O and METH_NOARGS where possible.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
20369
diff
changeset
|
2084 |
|
40416
c43787e6d706
Patch #1544279: Improve thread-safety of the socket module by moving
Martin v. Löwis <martin@v.loewis.de>
parents:
39502
diff
changeset
|
2085 if (!getsockaddrarg(s, addro, SAS2SA(&addrbuf), &addrlen)) |
|
6604
f67a6339ede7
Add s.connect_ex() which returns errno instead of raising an exception.
Guido van Rossum <guido@python.org>
parents:
6367
diff
changeset
|
2086 return NULL; |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
2087 |
|
6604
f67a6339ede7
Add s.connect_ex() which returns errno instead of raising an exception.
Guido van Rossum <guido@python.org>
parents:
6367
diff
changeset
|
2088 Py_BEGIN_ALLOW_THREADS |
|
40416
c43787e6d706
Patch #1544279: Improve thread-safety of the socket module by moving
Martin v. Löwis <martin@v.loewis.de>
parents:
39502
diff
changeset
|
2089 res = internal_connect(s, SAS2SA(&addrbuf), addrlen, &timeout); |
|
6604
f67a6339ede7
Add s.connect_ex() which returns errno instead of raising an exception.
Guido van Rossum <guido@python.org>
parents:
6367
diff
changeset
|
2090 Py_END_ALLOW_THREADS |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
2091 |
|
39354
85fdcdfca85c
Patch #1519025 and bug #926423: If a KeyboardInterrupt occurs during
Neal Norwitz <nnorwitz@gmail.com>
parents:
39251
diff
changeset
|
2092 /* Signals are not errors (though they may raise exceptions). Adapted |
|
85fdcdfca85c
Patch #1519025 and bug #926423: If a KeyboardInterrupt occurs during
Neal Norwitz <nnorwitz@gmail.com>
parents:
39251
diff
changeset
|
2093 from PyErr_SetFromErrnoWithFilenameObject(). */ |
|
85fdcdfca85c
Patch #1519025 and bug #926423: If a KeyboardInterrupt occurs during
Neal Norwitz <nnorwitz@gmail.com>
parents:
39251
diff
changeset
|
2094 #ifdef EINTR |
|
85fdcdfca85c
Patch #1519025 and bug #926423: If a KeyboardInterrupt occurs during
Neal Norwitz <nnorwitz@gmail.com>
parents:
39251
diff
changeset
|
2095 if (res == EINTR && PyErr_CheckSignals()) |
|
85fdcdfca85c
Patch #1519025 and bug #926423: If a KeyboardInterrupt occurs during
Neal Norwitz <nnorwitz@gmail.com>
parents:
39251
diff
changeset
|
2096 return NULL; |
|
85fdcdfca85c
Patch #1519025 and bug #926423: If a KeyboardInterrupt occurs during
Neal Norwitz <nnorwitz@gmail.com>
parents:
39251
diff
changeset
|
2097 #endif |
|
85fdcdfca85c
Patch #1519025 and bug #926423: If a KeyboardInterrupt occurs during
Neal Norwitz <nnorwitz@gmail.com>
parents:
39251
diff
changeset
|
2098 |
|
6604
f67a6339ede7
Add s.connect_ex() which returns errno instead of raising an exception.
Guido van Rossum <guido@python.org>
parents:
6367
diff
changeset
|
2099 return PyInt_FromLong((long) res); |
|
f67a6339ede7
Add s.connect_ex() which returns errno instead of raising an exception.
Guido van Rossum <guido@python.org>
parents:
6367
diff
changeset
|
2100 } |
|
f67a6339ede7
Add s.connect_ex() which returns errno instead of raising an exception.
Guido van Rossum <guido@python.org>
parents:
6367
diff
changeset
|
2101 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
2102 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
|
2103 "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
|
2104 \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2105 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
|
2106 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
|
2107 |
|
6604
f67a6339ede7
Add s.connect_ex() which returns errno instead of raising an exception.
Guido van Rossum <guido@python.org>
parents:
6367
diff
changeset
|
2108 |
|
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
|
2109 /* 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
|
2110 |
| 1970 | 2111 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
|
2112 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
|
2113 { |
|
13171
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
2114 #if SIZEOF_SOCKET_T <= SIZEOF_LONG |
| 1970 | 2115 return PyInt_FromLong((long) s->sock_fd); |
|
13171
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
2116 #else |
|
28437
871da703e4c0
Rename LONG_LONG to PY_LONG_LONG. Fixes #710285.
Martin v. Löwis <martin@v.loewis.de>
parents:
27981
diff
changeset
|
2117 return PyLong_FromLongLong((PY_LONG_LONG)s->sock_fd); |
|
13171
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
2118 #endif |
|
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
|
2119 } |
|
a4793ae26682
Changes for new UNIX-specific built-in module 'select' and new header for
Guido van Rossum <guido@python.org>
parents:
900
diff
changeset
|
2120 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
2121 PyDoc_STRVAR(fileno_doc, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2122 "fileno() -> integer\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2123 \n\ |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
2124 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
|
2125 |
|
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
|
2126 |
|
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
|
2127 #ifndef NO_DUP |
|
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
|
2128 /* s.dup() method */ |
|
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
|
2129 |
|
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
|
2130 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
|
2131 sock_dup(PySocketSockObject *s) |
|
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
|
2132 { |
|
13171
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
2133 SOCKET_T newfd; |
|
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
|
2134 PyObject *sock; |
|
20376
061da22f4203
Convert socket methods to use METH_O and METH_NOARGS where possible.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
20369
diff
changeset
|
2135 |
|
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
|
2136 newfd = dup(s->sock_fd); |
|
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
|
2137 if (newfd < 0) |
|
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
|
2138 return s->errorhandler(); |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
2139 sock = (PyObject *) new_sockobject(newfd, |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
2140 s->sock_family, |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
2141 s->sock_type, |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
2142 s->sock_proto); |
|
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
|
2143 if (sock == NULL) |
|
12436
dff7b26116de
Use an explicit macro SOCKETCLOSE which expands to closesocket (on
Guido van Rossum <guido@python.org>
parents:
12319
diff
changeset
|
2144 SOCKETCLOSE(newfd); |
|
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
|
2145 return sock; |
|
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
|
2146 } |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2147 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
2148 PyDoc_STRVAR(dup_doc, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2149 "dup() -> socket object\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2150 \n\ |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
2151 Return a new socket object connected to the same system resource."); |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2152 |
|
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
|
2153 #endif |
|
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
|
2154 |
|
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
|
2155 |
|
1094
d2af6bdcb6d0
* config.c: Added audioop to lists.
Guido van Rossum <guido@python.org>
parents:
1039
diff
changeset
|
2156 /* s.getsockname() method */ |
|
d2af6bdcb6d0
* config.c: Added audioop to lists.
Guido van Rossum <guido@python.org>
parents:
1039
diff
changeset
|
2157 |
| 1970 | 2158 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
|
2159 sock_getsockname(PySocketSockObject *s) |
|
1094
d2af6bdcb6d0
* config.c: Added audioop to lists.
Guido van Rossum <guido@python.org>
parents:
1039
diff
changeset
|
2160 { |
|
35551
57f630a9de26
- Changes donated by Elemental Security to make it work on AIX 5.3
Guido van Rossum <guido@python.org>
parents:
35452
diff
changeset
|
2161 sock_addr_t addrbuf; |
|
12479
a3e1fecb43c6
Jack Jansen: The GUSI 2.0 I/O library used on the Mac uses the
Guido van Rossum <guido@python.org>
parents:
12436
diff
changeset
|
2162 int res; |
|
a3e1fecb43c6
Jack Jansen: The GUSI 2.0 I/O library used on the Mac uses the
Guido van Rossum <guido@python.org>
parents:
12436
diff
changeset
|
2163 socklen_t addrlen; |
|
a3e1fecb43c6
Jack Jansen: The GUSI 2.0 I/O library used on the Mac uses the
Guido van Rossum <guido@python.org>
parents:
12436
diff
changeset
|
2164 |
|
1094
d2af6bdcb6d0
* config.c: Added audioop to lists.
Guido van Rossum <guido@python.org>
parents:
1039
diff
changeset
|
2165 if (!getsockaddrlen(s, &addrlen)) |
|
d2af6bdcb6d0
* config.c: Added audioop to lists.
Guido van Rossum <guido@python.org>
parents:
1039
diff
changeset
|
2166 return NULL; |
|
35551
57f630a9de26
- Changes donated by Elemental Security to make it work on AIX 5.3
Guido van Rossum <guido@python.org>
parents:
35452
diff
changeset
|
2167 memset(&addrbuf, 0, addrlen); |
| 1970 | 2168 Py_BEGIN_ALLOW_THREADS |
|
40416
c43787e6d706
Patch #1544279: Improve thread-safety of the socket module by moving
Martin v. Löwis <martin@v.loewis.de>
parents:
39502
diff
changeset
|
2169 res = getsockname(s->sock_fd, SAS2SA(&addrbuf), &addrlen); |
| 1970 | 2170 Py_END_ALLOW_THREADS |
|
1094
d2af6bdcb6d0
* config.c: Added audioop to lists.
Guido van Rossum <guido@python.org>
parents:
1039
diff
changeset
|
2171 if (res < 0) |
|
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
|
2172 return s->errorhandler(); |
|
40416
c43787e6d706
Patch #1544279: Improve thread-safety of the socket module by moving
Martin v. Löwis <martin@v.loewis.de>
parents:
39502
diff
changeset
|
2173 return makesockaddr(s->sock_fd, SAS2SA(&addrbuf), addrlen, |
|
32213
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
2174 s->sock_proto); |
|
1094
d2af6bdcb6d0
* config.c: Added audioop to lists.
Guido van Rossum <guido@python.org>
parents:
1039
diff
changeset
|
2175 } |
|
d2af6bdcb6d0
* config.c: Added audioop to lists.
Guido van Rossum <guido@python.org>
parents:
1039
diff
changeset
|
2176 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
2177 PyDoc_STRVAR(getsockname_doc, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2178 "getsockname() -> address info\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2179 \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2180 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
|
2181 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
|
2182 |
|
1094
d2af6bdcb6d0
* config.c: Added audioop to lists.
Guido van Rossum <guido@python.org>
parents:
1039
diff
changeset
|
2183 |
|
1746
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1413
diff
changeset
|
2184 #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
|
2185 /* s.getpeername() method */ |
|
d2af6bdcb6d0
* config.c: Added audioop to lists.
Guido van Rossum <guido@python.org>
parents:
1039
diff
changeset
|
2186 |
| 1970 | 2187 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
|
2188 sock_getpeername(PySocketSockObject *s) |
|
1094
d2af6bdcb6d0
* config.c: Added audioop to lists.
Guido van Rossum <guido@python.org>
parents:
1039
diff
changeset
|
2189 { |
|
35551
57f630a9de26
- Changes donated by Elemental Security to make it work on AIX 5.3
Guido van Rossum <guido@python.org>
parents:
35452
diff
changeset
|
2190 sock_addr_t addrbuf; |
|
12479
a3e1fecb43c6
Jack Jansen: The GUSI 2.0 I/O library used on the Mac uses the
Guido van Rossum <guido@python.org>
parents:
12436
diff
changeset
|
2191 int res; |
|
a3e1fecb43c6
Jack Jansen: The GUSI 2.0 I/O library used on the Mac uses the
Guido van Rossum <guido@python.org>
parents:
12436
diff
changeset
|
2192 socklen_t addrlen; |
|
a3e1fecb43c6
Jack Jansen: The GUSI 2.0 I/O library used on the Mac uses the
Guido van Rossum <guido@python.org>
parents:
12436
diff
changeset
|
2193 |
|
1094
d2af6bdcb6d0
* config.c: Added audioop to lists.
Guido van Rossum <guido@python.org>
parents:
1039
diff
changeset
|
2194 if (!getsockaddrlen(s, &addrlen)) |
|
d2af6bdcb6d0
* config.c: Added audioop to lists.
Guido van Rossum <guido@python.org>
parents:
1039
diff
changeset
|
2195 return NULL; |
|
35551
57f630a9de26
- Changes donated by Elemental Security to make it work on AIX 5.3
Guido van Rossum <guido@python.org>
parents:
35452
diff
changeset
|
2196 memset(&addrbuf, 0, addrlen); |
| 1970 | 2197 Py_BEGIN_ALLOW_THREADS |
|
40416
c43787e6d706
Patch #1544279: Improve thread-safety of the socket module by moving
Martin v. Löwis <martin@v.loewis.de>
parents:
39502
diff
changeset
|
2198 res = getpeername(s->sock_fd, SAS2SA(&addrbuf), &addrlen); |
| 1970 | 2199 Py_END_ALLOW_THREADS |
|
1094
d2af6bdcb6d0
* config.c: Added audioop to lists.
Guido van Rossum <guido@python.org>
parents:
1039
diff
changeset
|
2200 if (res < 0) |
|
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
|
2201 return s->errorhandler(); |
|
40416
c43787e6d706
Patch #1544279: Improve thread-safety of the socket module by moving
Martin v. Löwis <martin@v.loewis.de>
parents:
39502
diff
changeset
|
2202 return makesockaddr(s->sock_fd, SAS2SA(&addrbuf), addrlen, |
|
32213
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
2203 s->sock_proto); |
|
1094
d2af6bdcb6d0
* config.c: Added audioop to lists.
Guido van Rossum <guido@python.org>
parents:
1039
diff
changeset
|
2204 } |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2205 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
2206 PyDoc_STRVAR(getpeername_doc, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2207 "getpeername() -> address info\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2208 \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2209 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
|
2210 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
|
2211 |
|
1746
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1413
diff
changeset
|
2212 #endif /* HAVE_GETPEERNAME */ |
|
1094
d2af6bdcb6d0
* config.c: Added audioop to lists.
Guido van Rossum <guido@python.org>
parents:
1039
diff
changeset
|
2213 |
|
d2af6bdcb6d0
* config.c: Added audioop to lists.
Guido van Rossum <guido@python.org>
parents:
1039
diff
changeset
|
2214 |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2215 /* s.listen(n) method */ |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2216 |
| 1970 | 2217 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
|
2218 sock_listen(PySocketSockObject *s, PyObject *arg) |
| 294 | 2219 { |
| 2220 int backlog; | |
| 926 | 2221 int res; |
|
20376
061da22f4203
Convert socket methods to use METH_O and METH_NOARGS where possible.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
20369
diff
changeset
|
2222 |
|
061da22f4203
Convert socket methods to use METH_O and METH_NOARGS where possible.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
20369
diff
changeset
|
2223 backlog = PyInt_AsLong(arg); |
|
061da22f4203
Convert socket methods to use METH_O and METH_NOARGS where possible.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
20369
diff
changeset
|
2224 if (backlog == -1 && PyErr_Occurred()) |
| 294 | 2225 return NULL; |
| 1970 | 2226 Py_BEGIN_ALLOW_THREADS |
|
1746
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1413
diff
changeset
|
2227 if (backlog < 1) |
|
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1413
diff
changeset
|
2228 backlog = 1; |
| 926 | 2229 res = listen(s->sock_fd, backlog); |
| 1970 | 2230 Py_END_ALLOW_THREADS |
| 926 | 2231 if (res < 0) |
|
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
|
2232 return s->errorhandler(); |
| 1970 | 2233 Py_INCREF(Py_None); |
| 2234 return Py_None; | |
| 294 | 2235 } |
| 2236 | |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
2237 PyDoc_STRVAR(listen_doc, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2238 "listen(backlog)\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2239 \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2240 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
|
2241 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
|
2242 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
|
2243 |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2244 |
|
1792
a584b4bbbc59
Changes to make it work and compile on NT, by Mark Hammond.
Guido van Rossum <guido@python.org>
parents:
1760
diff
changeset
|
2245 #ifndef NO_DUP |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2246 /* s.makefile(mode) method. |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2247 Create a new open file object referring to a dupped version of |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2248 the socket's file descriptor. (The dup() call is necessary so |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2249 that the open file and socket objects may be closed independent |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2250 of each other.) |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2251 The mode argument specifies 'r' or 'w' passed to fdopen(). */ |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2252 |
| 1970 | 2253 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
|
2254 sock_makefile(PySocketSockObject *s, PyObject *args) |
| 294 | 2255 { |
|
13447
a89f7f268de4
Nuke all remaining occurrences of Py_PROTO and Py_FPROTO.
Tim Peters <tim.peters@gmail.com>
parents:
13403
diff
changeset
|
2256 extern int fclose(FILE *); |
|
2532
9e5a09841781
mode and optional bufsize for makefile()
Guido van Rossum <guido@python.org>
parents:
2369
diff
changeset
|
2257 char *mode = "r"; |
|
9e5a09841781
mode and optional bufsize for makefile()
Guido van Rossum <guido@python.org>
parents:
2369
diff
changeset
|
2258 int bufsize = -1; |
|
13171
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
2259 #ifdef MS_WIN32 |
|
19568
b0f5278a2ab4
SF bug [#456252] Python should never stomp on [u]intptr_t.
Tim Peters <tim.peters@gmail.com>
parents:
19415
diff
changeset
|
2260 Py_intptr_t fd; |
|
13171
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
2261 #else |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2262 int fd; |
|
16947
b25131bc6ec7
RISCOS changes by dschwertberger.
Guido van Rossum <guido@python.org>
parents:
16472
diff
changeset
|
2263 #endif |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2264 FILE *fp; |
|
2532
9e5a09841781
mode and optional bufsize for makefile()
Guido van Rossum <guido@python.org>
parents:
2369
diff
changeset
|
2265 PyObject *f; |
|
26550
b9c912e2c3c0
Patch #614055: Support OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
25994
diff
changeset
|
2266 #ifdef __VMS |
|
b9c912e2c3c0
Patch #614055: Support OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
25994
diff
changeset
|
2267 char *mode_r = "r"; |
|
b9c912e2c3c0
Patch #614055: Support OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
25994
diff
changeset
|
2268 char *mode_w = "w"; |
|
b9c912e2c3c0
Patch #614055: Support OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
25994
diff
changeset
|
2269 #endif |
|
2532
9e5a09841781
mode and optional bufsize for makefile()
Guido van Rossum <guido@python.org>
parents:
2369
diff
changeset
|
2270 |
|
11882
dc65c5f6ad7c
Massive patch by Skip Montanaro to add ":name" to as many
Guido van Rossum <guido@python.org>
parents:
11527
diff
changeset
|
2271 if (!PyArg_ParseTuple(args, "|si:makefile", &mode, &bufsize)) |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2272 return NULL; |
|
26550
b9c912e2c3c0
Patch #614055: Support OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
25994
diff
changeset
|
2273 #ifdef __VMS |
|
b9c912e2c3c0
Patch #614055: Support OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
25994
diff
changeset
|
2274 if (strcmp(mode,"rb") == 0) { |
|
b9c912e2c3c0
Patch #614055: Support OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
25994
diff
changeset
|
2275 mode = mode_r; |
|
b9c912e2c3c0
Patch #614055: Support OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
25994
diff
changeset
|
2276 } |
|
b9c912e2c3c0
Patch #614055: Support OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
25994
diff
changeset
|
2277 else { |
|
b9c912e2c3c0
Patch #614055: Support OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
25994
diff
changeset
|
2278 if (strcmp(mode,"wb") == 0) { |
|
b9c912e2c3c0
Patch #614055: Support OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
25994
diff
changeset
|
2279 mode = mode_w; |
|
b9c912e2c3c0
Patch #614055: Support OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
25994
diff
changeset
|
2280 } |
|
b9c912e2c3c0
Patch #614055: Support OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
25994
diff
changeset
|
2281 } |
|
b9c912e2c3c0
Patch #614055: Support OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
25994
diff
changeset
|
2282 #endif |
|
3702
3408756ec601
changed windows test symbols; removed debug printf from sockets
Guido van Rossum <guido@python.org>
parents:
3700
diff
changeset
|
2283 #ifdef MS_WIN32 |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2284 if (((fd = _open_osfhandle(s->sock_fd, _O_BINARY)) < 0) || |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2285 ((fd = dup(fd)) < 0) || ((fp = fdopen(fd, mode)) == NULL)) |
|
2736
37c48fde61b8
add setblocking(); NT changes; null-terminate Unix path
Guido van Rossum <guido@python.org>
parents:
2565
diff
changeset
|
2286 #else |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2287 if ((fd = dup(s->sock_fd)) < 0 || (fp = fdopen(fd, mode)) == NULL) |
|
2736
37c48fde61b8
add setblocking(); NT changes; null-terminate Unix path
Guido van Rossum <guido@python.org>
parents:
2565
diff
changeset
|
2288 #endif |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2289 { |
|
2532
9e5a09841781
mode and optional bufsize for makefile()
Guido van Rossum <guido@python.org>
parents:
2369
diff
changeset
|
2290 if (fd >= 0) |
|
12436
dff7b26116de
Use an explicit macro SOCKETCLOSE which expands to closesocket (on
Guido van Rossum <guido@python.org>
parents:
12319
diff
changeset
|
2291 SOCKETCLOSE(fd); |
|
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
|
2292 return s->errorhandler(); |
|
2532
9e5a09841781
mode and optional bufsize for makefile()
Guido van Rossum <guido@python.org>
parents:
2369
diff
changeset
|
2293 } |
|
9e5a09841781
mode and optional bufsize for makefile()
Guido van Rossum <guido@python.org>
parents:
2369
diff
changeset
|
2294 f = PyFile_FromFile(fp, "<socket>", mode, fclose); |
|
9e5a09841781
mode and optional bufsize for makefile()
Guido van Rossum <guido@python.org>
parents:
2369
diff
changeset
|
2295 if (f != NULL) |
|
9e5a09841781
mode and optional bufsize for makefile()
Guido van Rossum <guido@python.org>
parents:
2369
diff
changeset
|
2296 PyFile_SetBufSize(f, bufsize); |
|
9e5a09841781
mode and optional bufsize for makefile()
Guido van Rossum <guido@python.org>
parents:
2369
diff
changeset
|
2297 return f; |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2298 } |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2299 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
2300 PyDoc_STRVAR(makefile_doc, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2301 "makefile([mode[, buffersize]]) -> file object\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2302 \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2303 Return a regular file object corresponding to the socket.\n\ |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
2304 The mode and buffersize arguments are as for the built-in open() function."); |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2305 |
|
1792
a584b4bbbc59
Changes to make it work and compile on NT, by Mark Hammond.
Guido van Rossum <guido@python.org>
parents:
1760
diff
changeset
|
2306 #endif /* NO_DUP */ |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2307 |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2308 /* |
|
38580
a114003aa3d3
Fixes in struct and socket from merge reviews.
Martin Blais <blais@furius.ca>
parents:
38498
diff
changeset
|
2309 * This is the guts of the recv() and recv_into() methods, which reads into a |
| 40475 | 2310 * char buffer. If you have any inc/dec ref to do to the objects that contain |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2311 * the buffer, do it in the caller. This function returns the number of bytes |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2312 * succesfully read. If there was an error, it returns -1. Note that it is |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2313 * also possible that we return a number of bytes smaller than the request |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2314 * bytes. |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2315 */ |
|
38580
a114003aa3d3
Fixes in struct and socket from merge reviews.
Martin Blais <blais@furius.ca>
parents:
38498
diff
changeset
|
2316 static ssize_t |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2317 sock_recv_guts(PySocketSockObject *s, char* cbuf, int len, int flags) |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2318 { |
|
39354
85fdcdfca85c
Patch #1519025 and bug #926423: If a KeyboardInterrupt occurs during
Neal Norwitz <nnorwitz@gmail.com>
parents:
39251
diff
changeset
|
2319 ssize_t outlen = -1; |
|
38580
a114003aa3d3
Fixes in struct and socket from merge reviews.
Martin Blais <blais@furius.ca>
parents:
38498
diff
changeset
|
2320 int timeout; |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2321 #ifdef __VMS |
|
39354
85fdcdfca85c
Patch #1519025 and bug #926423: If a KeyboardInterrupt occurs during
Neal Norwitz <nnorwitz@gmail.com>
parents:
39251
diff
changeset
|
2322 int remaining; |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2323 char *read_buf; |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2324 #endif |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2325 |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2326 if (!IS_SELECTABLE(s)) { |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2327 select_error(); |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2328 return -1; |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2329 } |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2330 |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2331 #ifndef __VMS |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2332 Py_BEGIN_ALLOW_THREADS |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2333 timeout = internal_select(s, 0); |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2334 if (!timeout) |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2335 outlen = recv(s->sock_fd, cbuf, len, flags); |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2336 Py_END_ALLOW_THREADS |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2337 |
|
39354
85fdcdfca85c
Patch #1519025 and bug #926423: If a KeyboardInterrupt occurs during
Neal Norwitz <nnorwitz@gmail.com>
parents:
39251
diff
changeset
|
2338 if (timeout == 1) { |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2339 PyErr_SetString(socket_timeout, "timed out"); |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2340 return -1; |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2341 } |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2342 if (outlen < 0) { |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2343 /* Note: the call to errorhandler() ALWAYS indirectly returned |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2344 NULL, so ignore its return value */ |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2345 s->errorhandler(); |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2346 return -1; |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2347 } |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2348 #else |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2349 read_buf = cbuf; |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2350 remaining = len; |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2351 while (remaining != 0) { |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2352 unsigned int segment; |
|
39354
85fdcdfca85c
Patch #1519025 and bug #926423: If a KeyboardInterrupt occurs during
Neal Norwitz <nnorwitz@gmail.com>
parents:
39251
diff
changeset
|
2353 int nread = -1; |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2354 |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2355 segment = remaining /SEGMENT_SIZE; |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2356 if (segment != 0) { |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2357 segment = SEGMENT_SIZE; |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2358 } |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2359 else { |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2360 segment = remaining; |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2361 } |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2362 |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2363 Py_BEGIN_ALLOW_THREADS |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2364 timeout = internal_select(s, 0); |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2365 if (!timeout) |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2366 nread = recv(s->sock_fd, read_buf, segment, flags); |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2367 Py_END_ALLOW_THREADS |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2368 |
|
39354
85fdcdfca85c
Patch #1519025 and bug #926423: If a KeyboardInterrupt occurs during
Neal Norwitz <nnorwitz@gmail.com>
parents:
39251
diff
changeset
|
2369 if (timeout == 1) { |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2370 PyErr_SetString(socket_timeout, "timed out"); |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2371 return -1; |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2372 } |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2373 if (nread < 0) { |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2374 s->errorhandler(); |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2375 return -1; |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2376 } |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2377 if (nread != remaining) { |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2378 read_buf += nread; |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2379 break; |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2380 } |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2381 |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2382 remaining -= segment; |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2383 read_buf += segment; |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2384 } |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2385 outlen = read_buf - cbuf; |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2386 #endif /* !__VMS */ |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2387 |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2388 return outlen; |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2389 } |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2390 |
|
16947
b25131bc6ec7
RISCOS changes by dschwertberger.
Guido van Rossum <guido@python.org>
parents:
16472
diff
changeset
|
2391 |
|
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
|
2392 /* 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
|
2393 |
| 1970 | 2394 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
|
2395 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
|
2396 { |
|
38580
a114003aa3d3
Fixes in struct and socket from merge reviews.
Martin Blais <blais@furius.ca>
parents:
38498
diff
changeset
|
2397 int recvlen, flags = 0; |
|
a114003aa3d3
Fixes in struct and socket from merge reviews.
Martin Blais <blais@furius.ca>
parents:
38498
diff
changeset
|
2398 ssize_t outlen; |
| 1970 | 2399 PyObject *buf; |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2400 |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2401 if (!PyArg_ParseTuple(args, "i|i:recv", &recvlen, &flags)) |
|
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
|
2402 return NULL; |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
2403 |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2404 if (recvlen < 0) { |
|
21022
9f66aaddf8d4
Test for negative buffer sizes. Fixes #482871.
Martin v. Löwis <martin@v.loewis.de>
parents:
20920
diff
changeset
|
2405 PyErr_SetString(PyExc_ValueError, |
|
23815
203d1412a7e8
Major overhaul of timeout sockets:
Guido van Rossum <guido@python.org>
parents:
23807
diff
changeset
|
2406 "negative buffersize in recv"); |
|
21022
9f66aaddf8d4
Test for negative buffer sizes. Fixes #482871.
Martin v. Löwis <martin@v.loewis.de>
parents:
20920
diff
changeset
|
2407 return NULL; |
|
9f66aaddf8d4
Test for negative buffer sizes. Fixes #482871.
Martin v. Löwis <martin@v.loewis.de>
parents:
20920
diff
changeset
|
2408 } |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
2409 |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2410 /* Allocate a new string. */ |
|
47527
52294af4b663
This reverts r63675 based on the discussion in this thread:
Gregory P. Smith <greg@mad-scientist.com>
parents:
47294
diff
changeset
|
2411 buf = PyString_FromStringAndSize((char *) 0, recvlen); |
| 294 | 2412 if (buf == NULL) |
| 2413 return NULL; | |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
2414 |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2415 /* Call the guts */ |
|
47527
52294af4b663
This reverts r63675 based on the discussion in this thread:
Gregory P. Smith <greg@mad-scientist.com>
parents:
47294
diff
changeset
|
2416 outlen = sock_recv_guts(s, PyString_AS_STRING(buf), recvlen, flags); |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2417 if (outlen < 0) { |
| 39251 | 2418 /* An error occurred, release the string and return an |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2419 error. */ |
|
29651
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
2420 Py_DECREF(buf); |
|
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
2421 return NULL; |
|
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
2422 } |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2423 if (outlen != recvlen) { |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2424 /* We did not read as many bytes as we anticipated, resize the |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2425 string if possible and be succesful. */ |
|
47527
52294af4b663
This reverts r63675 based on the discussion in this thread:
Gregory P. Smith <greg@mad-scientist.com>
parents:
47294
diff
changeset
|
2426 if (_PyString_Resize(&buf, outlen) < 0) |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2427 /* Oopsy, not so succesful after all. */ |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2428 return NULL; |
| 3091 | 2429 } |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2430 |
| 294 | 2431 return buf; |
| 2432 } | |
| 2433 | |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
2434 PyDoc_STRVAR(recv_doc, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2435 "recv(buffersize[, flags]) -> data\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2436 \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2437 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
|
2438 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
|
2439 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
|
2440 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
|
2441 |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2442 |
|
38580
a114003aa3d3
Fixes in struct and socket from merge reviews.
Martin Blais <blais@furius.ca>
parents:
38498
diff
changeset
|
2443 /* s.recv_into(buffer, [nbytes [,flags]]) method */ |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2444 |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2445 static PyObject* |
|
38580
a114003aa3d3
Fixes in struct and socket from merge reviews.
Martin Blais <blais@furius.ca>
parents:
38498
diff
changeset
|
2446 sock_recv_into(PySocketSockObject *s, PyObject *args, PyObject *kwds) |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2447 { |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2448 static char *kwlist[] = {"buffer", "nbytes", "flags", 0}; |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2449 |
|
38580
a114003aa3d3
Fixes in struct and socket from merge reviews.
Martin Blais <blais@furius.ca>
parents:
38498
diff
changeset
|
2450 int recvlen = 0, flags = 0; |
|
a114003aa3d3
Fixes in struct and socket from merge reviews.
Martin Blais <blais@furius.ca>
parents:
38498
diff
changeset
|
2451 ssize_t readlen; |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2452 char *buf; |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2453 int buflen; |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2454 |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2455 /* Get the buffer's memory */ |
|
41341
f86557e503f3
Fix method names. Will backport.
Neal Norwitz <nnorwitz@gmail.com>
parents:
41313
diff
changeset
|
2456 if (!PyArg_ParseTupleAndKeywords(args, kwds, "w#|ii:recv_into", kwlist, |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2457 &buf, &buflen, &recvlen, &flags)) |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2458 return NULL; |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2459 assert(buf != 0 && buflen > 0); |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2460 |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2461 if (recvlen < 0) { |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2462 PyErr_SetString(PyExc_ValueError, |
|
41313
d144f81574c0
Bug 1688393. Adds a control of negative values in
Facundo Batista <facundobatista@gmail.com>
parents:
40843
diff
changeset
|
2463 "negative buffersize in recv_into"); |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2464 return NULL; |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2465 } |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2466 if (recvlen == 0) { |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2467 /* If nbytes was not specified, use the buffer's length */ |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2468 recvlen = buflen; |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2469 } |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2470 |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2471 /* Check if the buffer is large enough */ |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2472 if (buflen < recvlen) { |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2473 PyErr_SetString(PyExc_ValueError, |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2474 "buffer too small for requested bytes"); |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2475 return NULL; |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2476 } |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2477 |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2478 /* Call the guts */ |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2479 readlen = sock_recv_guts(s, buf, recvlen, flags); |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2480 if (readlen < 0) { |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2481 /* Return an error. */ |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2482 return NULL; |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2483 } |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2484 |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2485 /* Return the number of bytes read. Note that we do not do anything |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2486 special here in the case that readlen < recvlen. */ |
|
38580
a114003aa3d3
Fixes in struct and socket from merge reviews.
Martin Blais <blais@furius.ca>
parents:
38498
diff
changeset
|
2487 return PyInt_FromSsize_t(readlen); |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2488 } |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2489 |
|
38580
a114003aa3d3
Fixes in struct and socket from merge reviews.
Martin Blais <blais@furius.ca>
parents:
38498
diff
changeset
|
2490 PyDoc_STRVAR(recv_into_doc, |
|
a114003aa3d3
Fixes in struct and socket from merge reviews.
Martin Blais <blais@furius.ca>
parents:
38498
diff
changeset
|
2491 "recv_into(buffer, [nbytes[, flags]]) -> nbytes_read\n\ |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2492 \n\ |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2493 A version of recv() that stores its data into a buffer rather than creating \n\ |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2494 a new string. Receive up to buffersize bytes from the socket. If buffersize \n\ |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2495 is not specified (or 0), receive up to the size available in the given buffer.\n\ |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2496 \n\ |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2497 See recv() for documentation about the flags."); |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2498 |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2499 |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2500 /* |
|
44337
b59c328bfa62
Issue #1645 by Alberto Bertogli. Fix a comment.
Guido van Rossum <guido@python.org>
parents:
43972
diff
changeset
|
2501 * This is the guts of the recvfrom() and recvfrom_into() methods, which reads |
|
b59c328bfa62
Issue #1645 by Alberto Bertogli. Fix a comment.
Guido van Rossum <guido@python.org>
parents:
43972
diff
changeset
|
2502 * into a char buffer. If you have any inc/def ref to do to the objects that |
|
b59c328bfa62
Issue #1645 by Alberto Bertogli. Fix a comment.
Guido van Rossum <guido@python.org>
parents:
43972
diff
changeset
|
2503 * contain the buffer, do it in the caller. This function returns the number |
|
b59c328bfa62
Issue #1645 by Alberto Bertogli. Fix a comment.
Guido van Rossum <guido@python.org>
parents:
43972
diff
changeset
|
2504 * of bytes succesfully read. If there was an error, it returns -1. Note |
|
b59c328bfa62
Issue #1645 by Alberto Bertogli. Fix a comment.
Guido van Rossum <guido@python.org>
parents:
43972
diff
changeset
|
2505 * that it is also possible that we return a number of bytes smaller than the |
|
b59c328bfa62
Issue #1645 by Alberto Bertogli. Fix a comment.
Guido van Rossum <guido@python.org>
parents:
43972
diff
changeset
|
2506 * request bytes. |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2507 * |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2508 * 'addr' is a return value for the address object. Note that you must decref |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2509 * it yourself. |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2510 */ |
|
38580
a114003aa3d3
Fixes in struct and socket from merge reviews.
Martin Blais <blais@furius.ca>
parents:
38498
diff
changeset
|
2511 static ssize_t |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2512 sock_recvfrom_guts(PySocketSockObject *s, char* cbuf, int len, int flags, |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2513 PyObject** addr) |
| 294 | 2514 { |
|
35551
57f630a9de26
- Changes donated by Elemental Security to make it work on AIX 5.3
Guido van Rossum <guido@python.org>
parents:
35452
diff
changeset
|
2515 sock_addr_t addrbuf; |
|
38580
a114003aa3d3
Fixes in struct and socket from merge reviews.
Martin Blais <blais@furius.ca>
parents:
38498
diff
changeset
|
2516 int timeout; |
|
39354
85fdcdfca85c
Patch #1519025 and bug #926423: If a KeyboardInterrupt occurs during
Neal Norwitz <nnorwitz@gmail.com>
parents:
39251
diff
changeset
|
2517 ssize_t n = -1; |
|
12479
a3e1fecb43c6
Jack Jansen: The GUSI 2.0 I/O library used on the Mac uses the
Guido van Rossum <guido@python.org>
parents:
12436
diff
changeset
|
2518 socklen_t addrlen; |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
2519 |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2520 *addr = NULL; |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
2521 |
|
1295
4773d5c3b5a4
* socketmodule.c: fix long-standing bug in recvfrom() -- addrlen
Guido van Rossum <guido@python.org>
parents:
1293
diff
changeset
|
2522 if (!getsockaddrlen(s, &addrlen)) |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2523 return -1; |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2524 |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2525 if (!IS_SELECTABLE(s)) { |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2526 select_error(); |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2527 return -1; |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2528 } |
|
36452
7789cc557e1e
Bug #876637, prevent stack corruption when socket descriptor
Neal Norwitz <nnorwitz@gmail.com>
parents:
36324
diff
changeset
|
2529 |
| 1970 | 2530 Py_BEGIN_ALLOW_THREADS |
|
35551
57f630a9de26
- Changes donated by Elemental Security to make it work on AIX 5.3
Guido van Rossum <guido@python.org>
parents:
35452
diff
changeset
|
2531 memset(&addrbuf, 0, addrlen); |
|
29651
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
2532 timeout = internal_select(s, 0); |
|
37732
bfc48ad81e80
Patch #1191065: Fix preprocessor problems on systems where recvfrom
Martin v. Löwis <martin@v.loewis.de>
parents:
37629
diff
changeset
|
2533 if (!timeout) { |
|
3702
3408756ec601
changed windows test symbols; removed debug printf from sockets
Guido van Rossum <guido@python.org>
parents:
3700
diff
changeset
|
2534 #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
|
2535 #if defined(PYOS_OS2) && !defined(PYCC_GCC) |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2536 n = recvfrom(s->sock_fd, cbuf, len, flags, |
|
40416
c43787e6d706
Patch #1544279: Improve thread-safety of the socket module by moving
Martin v. Löwis <martin@v.loewis.de>
parents:
39502
diff
changeset
|
2537 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
|
2538 #else |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2539 n = recvfrom(s->sock_fd, cbuf, len, flags, |
|
37732
bfc48ad81e80
Patch #1191065: Fix preprocessor problems on systems where recvfrom
Martin v. Löwis <martin@v.loewis.de>
parents:
37629
diff
changeset
|
2540 (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
|
2541 #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
|
2542 #else |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2543 n = recvfrom(s->sock_fd, cbuf, len, flags, |
|
40416
c43787e6d706
Patch #1544279: Improve thread-safety of the socket module by moving
Martin v. Löwis <martin@v.loewis.de>
parents:
39502
diff
changeset
|
2544 SAS2SA(&addrbuf), &addrlen); |
|
37732
bfc48ad81e80
Patch #1191065: Fix preprocessor problems on systems where recvfrom
Martin v. Löwis <martin@v.loewis.de>
parents:
37629
diff
changeset
|
2545 #endif |
|
bfc48ad81e80
Patch #1191065: Fix preprocessor problems on systems where recvfrom
Martin v. Löwis <martin@v.loewis.de>
parents:
37629
diff
changeset
|
2546 } |
| 1970 | 2547 Py_END_ALLOW_THREADS |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
2548 |
|
39354
85fdcdfca85c
Patch #1519025 and bug #926423: If a KeyboardInterrupt occurs during
Neal Norwitz <nnorwitz@gmail.com>
parents:
39251
diff
changeset
|
2549 if (timeout == 1) { |
|
29651
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
2550 PyErr_SetString(socket_timeout, "timed out"); |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2551 return -1; |
|
29651
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
2552 } |
| 3091 | 2553 if (n < 0) { |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2554 s->errorhandler(); |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2555 return -1; |
| 3091 | 2556 } |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
2557 |
|
40416
c43787e6d706
Patch #1544279: Improve thread-safety of the socket module by moving
Martin v. Löwis <martin@v.loewis.de>
parents:
39502
diff
changeset
|
2558 if (!(*addr = makesockaddr(s->sock_fd, SAS2SA(&addrbuf), |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2559 addrlen, s->sock_proto))) |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2560 return -1; |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2561 |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2562 return n; |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2563 } |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2564 |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2565 /* s.recvfrom(nbytes [,flags]) method */ |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2566 |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2567 static PyObject * |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2568 sock_recvfrom(PySocketSockObject *s, PyObject *args) |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2569 { |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2570 PyObject *buf = NULL; |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2571 PyObject *addr = NULL; |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2572 PyObject *ret = NULL; |
|
38580
a114003aa3d3
Fixes in struct and socket from merge reviews.
Martin Blais <blais@furius.ca>
parents:
38498
diff
changeset
|
2573 int recvlen, flags = 0; |
|
a114003aa3d3
Fixes in struct and socket from merge reviews.
Martin Blais <blais@furius.ca>
parents:
38498
diff
changeset
|
2574 ssize_t outlen; |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2575 |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2576 if (!PyArg_ParseTuple(args, "i|i:recvfrom", &recvlen, &flags)) |
| 294 | 2577 return NULL; |
|
16947
b25131bc6ec7
RISCOS changes by dschwertberger.
Guido van Rossum <guido@python.org>
parents:
16472
diff
changeset
|
2578 |
|
41313
d144f81574c0
Bug 1688393. Adds a control of negative values in
Facundo Batista <facundobatista@gmail.com>
parents:
40843
diff
changeset
|
2579 if (recvlen < 0) { |
|
d144f81574c0
Bug 1688393. Adds a control of negative values in
Facundo Batista <facundobatista@gmail.com>
parents:
40843
diff
changeset
|
2580 PyErr_SetString(PyExc_ValueError, |
|
d144f81574c0
Bug 1688393. Adds a control of negative values in
Facundo Batista <facundobatista@gmail.com>
parents:
40843
diff
changeset
|
2581 "negative buffersize in recvfrom"); |
|
d144f81574c0
Bug 1688393. Adds a control of negative values in
Facundo Batista <facundobatista@gmail.com>
parents:
40843
diff
changeset
|
2582 return NULL; |
|
d144f81574c0
Bug 1688393. Adds a control of negative values in
Facundo Batista <facundobatista@gmail.com>
parents:
40843
diff
changeset
|
2583 } |
|
d144f81574c0
Bug 1688393. Adds a control of negative values in
Facundo Batista <facundobatista@gmail.com>
parents:
40843
diff
changeset
|
2584 |
|
47527
52294af4b663
This reverts r63675 based on the discussion in this thread:
Gregory P. Smith <greg@mad-scientist.com>
parents:
47294
diff
changeset
|
2585 buf = PyString_FromStringAndSize((char *) 0, recvlen); |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2586 if (buf == NULL) |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2587 return NULL; |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2588 |
|
47527
52294af4b663
This reverts r63675 based on the discussion in this thread:
Gregory P. Smith <greg@mad-scientist.com>
parents:
47294
diff
changeset
|
2589 outlen = sock_recvfrom_guts(s, PyString_AS_STRING(buf), |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2590 recvlen, flags, &addr); |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2591 if (outlen < 0) { |
|
4871
a7159ba0e45d
Check of return values and proper error handling.
Barry Warsaw <barry@python.org>
parents:
4783
diff
changeset
|
2592 goto finally; |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2593 } |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2594 |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2595 if (outlen != recvlen) { |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2596 /* We did not read as many bytes as we anticipated, resize the |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2597 string if possible and be succesful. */ |
|
47527
52294af4b663
This reverts r63675 based on the discussion in this thread:
Gregory P. Smith <greg@mad-scientist.com>
parents:
47294
diff
changeset
|
2598 if (_PyString_Resize(&buf, outlen) < 0) |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2599 /* Oopsy, not so succesful after all. */ |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2600 goto finally; |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2601 } |
|
4871
a7159ba0e45d
Check of return values and proper error handling.
Barry Warsaw <barry@python.org>
parents:
4783
diff
changeset
|
2602 |
|
30683
3b59fa5d25b1
Simplify and speedup uses of Py_BuildValue():
Raymond Hettinger <python@rcn.com>
parents:
30646
diff
changeset
|
2603 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
|
2604 |
|
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
2605 finally: |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2606 Py_XDECREF(buf); |
| 1970 | 2607 Py_XDECREF(addr); |
|
1207
b564bd4e57e1
* ceval.c: ifdef out the last argument passing compat hack.
Guido van Rossum <guido@python.org>
parents:
1132
diff
changeset
|
2608 return ret; |
| 294 | 2609 } |
| 2610 | |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
2611 PyDoc_STRVAR(recvfrom_doc, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2612 "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
|
2613 \n\ |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
2614 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
|
2615 |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2616 |
|
38580
a114003aa3d3
Fixes in struct and socket from merge reviews.
Martin Blais <blais@furius.ca>
parents:
38498
diff
changeset
|
2617 /* s.recvfrom_into(buffer[, nbytes [,flags]]) method */ |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2618 |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2619 static PyObject * |
|
38580
a114003aa3d3
Fixes in struct and socket from merge reviews.
Martin Blais <blais@furius.ca>
parents:
38498
diff
changeset
|
2620 sock_recvfrom_into(PySocketSockObject *s, PyObject *args, PyObject* kwds) |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2621 { |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2622 static char *kwlist[] = {"buffer", "nbytes", "flags", 0}; |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2623 |
|
38580
a114003aa3d3
Fixes in struct and socket from merge reviews.
Martin Blais <blais@furius.ca>
parents:
38498
diff
changeset
|
2624 int recvlen = 0, flags = 0; |
|
a114003aa3d3
Fixes in struct and socket from merge reviews.
Martin Blais <blais@furius.ca>
parents:
38498
diff
changeset
|
2625 ssize_t readlen; |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2626 char *buf; |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2627 int buflen; |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2628 |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2629 PyObject *addr = NULL; |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2630 |
|
41341
f86557e503f3
Fix method names. Will backport.
Neal Norwitz <nnorwitz@gmail.com>
parents:
41313
diff
changeset
|
2631 if (!PyArg_ParseTupleAndKeywords(args, kwds, "w#|ii:recvfrom_into", |
|
f86557e503f3
Fix method names. Will backport.
Neal Norwitz <nnorwitz@gmail.com>
parents:
41313
diff
changeset
|
2632 kwlist, &buf, &buflen, |
|
f86557e503f3
Fix method names. Will backport.
Neal Norwitz <nnorwitz@gmail.com>
parents:
41313
diff
changeset
|
2633 &recvlen, &flags)) |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2634 return NULL; |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2635 assert(buf != 0 && buflen > 0); |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2636 |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2637 if (recvlen < 0) { |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2638 PyErr_SetString(PyExc_ValueError, |
|
41313
d144f81574c0
Bug 1688393. Adds a control of negative values in
Facundo Batista <facundobatista@gmail.com>
parents:
40843
diff
changeset
|
2639 "negative buffersize in recvfrom_into"); |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2640 return NULL; |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2641 } |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2642 if (recvlen == 0) { |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2643 /* If nbytes was not specified, use the buffer's length */ |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2644 recvlen = buflen; |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2645 } |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2646 |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2647 readlen = sock_recvfrom_guts(s, buf, recvlen, flags, &addr); |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2648 if (readlen < 0) { |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2649 /* Return an error */ |
|
38580
a114003aa3d3
Fixes in struct and socket from merge reviews.
Martin Blais <blais@furius.ca>
parents:
38498
diff
changeset
|
2650 Py_XDECREF(addr); |
|
a114003aa3d3
Fixes in struct and socket from merge reviews.
Martin Blais <blais@furius.ca>
parents:
38498
diff
changeset
|
2651 return NULL; |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2652 } |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2653 |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2654 /* Return the number of bytes read and the address. Note that we do |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2655 not do anything special here in the case that readlen < recvlen. */ |
|
38655
e3c08f066eb8
Fix a refleak in recvfrom_into
Neal Norwitz <nnorwitz@gmail.com>
parents:
38623
diff
changeset
|
2656 return Py_BuildValue("lN", readlen, addr); |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2657 } |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2658 |
|
38580
a114003aa3d3
Fixes in struct and socket from merge reviews.
Martin Blais <blais@furius.ca>
parents:
38498
diff
changeset
|
2659 PyDoc_STRVAR(recvfrom_into_doc, |
|
a114003aa3d3
Fixes in struct and socket from merge reviews.
Martin Blais <blais@furius.ca>
parents:
38498
diff
changeset
|
2660 "recvfrom_into(buffer[, nbytes[, flags]]) -> (nbytes, address info)\n\ |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2661 \n\ |
|
38580
a114003aa3d3
Fixes in struct and socket from merge reviews.
Martin Blais <blais@furius.ca>
parents:
38498
diff
changeset
|
2662 Like recv_into(buffer[, nbytes[, flags]]) but also return the sender's address info."); |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2663 |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2664 |
|
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
|
2665 /* 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
|
2666 |
| 1970 | 2667 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
|
2668 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
|
2669 { |
| 926 | 2670 char *buf; |
|
39354
85fdcdfca85c
Patch #1519025 and bug #926423: If a KeyboardInterrupt occurs during
Neal Norwitz <nnorwitz@gmail.com>
parents:
39251
diff
changeset
|
2671 int len, n = -1, flags = 0, timeout; |
|
48221
b8c4bf393794
Issue #3139: Make buffer-interface thread-safe wrt. PyArg_ParseTuple,
Martin v. Löwis <martin@v.loewis.de>
parents:
47666
diff
changeset
|
2672 Py_buffer pbuf; |
|
b8c4bf393794
Issue #3139: Make buffer-interface thread-safe wrt. PyArg_ParseTuple,
Martin v. Löwis <martin@v.loewis.de>
parents:
47666
diff
changeset
|
2673 |
|
b8c4bf393794
Issue #3139: Make buffer-interface thread-safe wrt. PyArg_ParseTuple,
Martin v. Löwis <martin@v.loewis.de>
parents:
47666
diff
changeset
|
2674 if (!PyArg_ParseTuple(args, "s*|i:send", &pbuf, &flags)) |
|
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
|
2675 return NULL; |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
2676 |
|
48221
b8c4bf393794
Issue #3139: Make buffer-interface thread-safe wrt. PyArg_ParseTuple,
Martin v. Löwis <martin@v.loewis.de>
parents:
47666
diff
changeset
|
2677 if (!IS_SELECTABLE(s)) { |
|
b8c4bf393794
Issue #3139: Make buffer-interface thread-safe wrt. PyArg_ParseTuple,
Martin v. Löwis <martin@v.loewis.de>
parents:
47666
diff
changeset
|
2678 PyBuffer_Release(&pbuf); |
|
36452
7789cc557e1e
Bug #876637, prevent stack corruption when socket descriptor
Neal Norwitz <nnorwitz@gmail.com>
parents:
36324
diff
changeset
|
2679 return select_error(); |
|
48221
b8c4bf393794
Issue #3139: Make buffer-interface thread-safe wrt. PyArg_ParseTuple,
Martin v. Löwis <martin@v.loewis.de>
parents:
47666
diff
changeset
|
2680 } |
|
b8c4bf393794
Issue #3139: Make buffer-interface thread-safe wrt. PyArg_ParseTuple,
Martin v. Löwis <martin@v.loewis.de>
parents:
47666
diff
changeset
|
2681 buf = pbuf.buf; |
|
b8c4bf393794
Issue #3139: Make buffer-interface thread-safe wrt. PyArg_ParseTuple,
Martin v. Löwis <martin@v.loewis.de>
parents:
47666
diff
changeset
|
2682 len = pbuf.len; |
|
36452
7789cc557e1e
Bug #876637, prevent stack corruption when socket descriptor
Neal Norwitz <nnorwitz@gmail.com>
parents:
36324
diff
changeset
|
2683 |
| 1970 | 2684 Py_BEGIN_ALLOW_THREADS |
|
29651
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
2685 timeout = internal_select(s, 1); |
|
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
2686 if (!timeout) |
|
39043
c67b23397f30
Patch #1516912: improve Modules support for OpenVMS.
Neal Norwitz <nnorwitz@gmail.com>
parents:
38716
diff
changeset
|
2687 #ifdef __VMS |
|
c67b23397f30
Patch #1516912: improve Modules support for OpenVMS.
Neal Norwitz <nnorwitz@gmail.com>
parents:
38716
diff
changeset
|
2688 n = sendsegmented(s->sock_fd, buf, len, flags); |
|
c67b23397f30
Patch #1516912: improve Modules support for OpenVMS.
Neal Norwitz <nnorwitz@gmail.com>
parents:
38716
diff
changeset
|
2689 #else |
|
29651
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
2690 n = send(s->sock_fd, buf, len, flags); |
|
39043
c67b23397f30
Patch #1516912: improve Modules support for OpenVMS.
Neal Norwitz <nnorwitz@gmail.com>
parents:
38716
diff
changeset
|
2691 #endif |
| 1970 | 2692 Py_END_ALLOW_THREADS |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
2693 |
|
48221
b8c4bf393794
Issue #3139: Make buffer-interface thread-safe wrt. PyArg_ParseTuple,
Martin v. Löwis <martin@v.loewis.de>
parents:
47666
diff
changeset
|
2694 PyBuffer_Release(&pbuf); |
|
b8c4bf393794
Issue #3139: Make buffer-interface thread-safe wrt. PyArg_ParseTuple,
Martin v. Löwis <martin@v.loewis.de>
parents:
47666
diff
changeset
|
2695 |
|
39354
85fdcdfca85c
Patch #1519025 and bug #926423: If a KeyboardInterrupt occurs during
Neal Norwitz <nnorwitz@gmail.com>
parents:
39251
diff
changeset
|
2696 if (timeout == 1) { |
|
29651
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
2697 PyErr_SetString(socket_timeout, "timed out"); |
|
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
2698 return NULL; |
|
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
2699 } |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2700 if (n < 0) |
|
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
|
2701 return s->errorhandler(); |
| 1970 | 2702 return PyInt_FromLong((long)n); |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2703 } |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2704 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
2705 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
|
2706 "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
|
2707 \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2708 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
|
2709 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
|
2710 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
|
2711 |
|
e89c25ca6b29
Add sendall() method, which loops until all data is written or an
Guido van Rossum <guido@python.org>
parents:
20661
diff
changeset
|
2712 |
|
e89c25ca6b29
Add sendall() method, which loops until all data is written or an
Guido van Rossum <guido@python.org>
parents:
20661
diff
changeset
|
2713 /* 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
|
2714 |
|
e89c25ca6b29
Add sendall() method, which loops until all data is written or an
Guido van Rossum <guido@python.org>
parents:
20661
diff
changeset
|
2715 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
|
2716 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
|
2717 { |
|
e89c25ca6b29
Add sendall() method, which loops until all data is written or an
Guido van Rossum <guido@python.org>
parents:
20661
diff
changeset
|
2718 char *buf; |
|
39354
85fdcdfca85c
Patch #1519025 and bug #926423: If a KeyboardInterrupt occurs during
Neal Norwitz <nnorwitz@gmail.com>
parents:
39251
diff
changeset
|
2719 int len, n = -1, flags = 0, timeout; |
|
48221
b8c4bf393794
Issue #3139: Make buffer-interface thread-safe wrt. PyArg_ParseTuple,
Martin v. Löwis <martin@v.loewis.de>
parents:
47666
diff
changeset
|
2720 Py_buffer pbuf; |
|
b8c4bf393794
Issue #3139: Make buffer-interface thread-safe wrt. PyArg_ParseTuple,
Martin v. Löwis <martin@v.loewis.de>
parents:
47666
diff
changeset
|
2721 |
|
b8c4bf393794
Issue #3139: Make buffer-interface thread-safe wrt. PyArg_ParseTuple,
Martin v. Löwis <martin@v.loewis.de>
parents:
47666
diff
changeset
|
2722 if (!PyArg_ParseTuple(args, "s*|i:sendall", &pbuf, &flags)) |
|
20679
e89c25ca6b29
Add sendall() method, which loops until all data is written or an
Guido van Rossum <guido@python.org>
parents:
20661
diff
changeset
|
2723 return NULL; |
|
48221
b8c4bf393794
Issue #3139: Make buffer-interface thread-safe wrt. PyArg_ParseTuple,
Martin v. Löwis <martin@v.loewis.de>
parents:
47666
diff
changeset
|
2724 buf = pbuf.buf; |
|
b8c4bf393794
Issue #3139: Make buffer-interface thread-safe wrt. PyArg_ParseTuple,
Martin v. Löwis <martin@v.loewis.de>
parents:
47666
diff
changeset
|
2725 len = pbuf.len; |
|
b8c4bf393794
Issue #3139: Make buffer-interface thread-safe wrt. PyArg_ParseTuple,
Martin v. Löwis <martin@v.loewis.de>
parents:
47666
diff
changeset
|
2726 |
|
b8c4bf393794
Issue #3139: Make buffer-interface thread-safe wrt. PyArg_ParseTuple,
Martin v. Löwis <martin@v.loewis.de>
parents:
47666
diff
changeset
|
2727 if (!IS_SELECTABLE(s)) { |
|
b8c4bf393794
Issue #3139: Make buffer-interface thread-safe wrt. PyArg_ParseTuple,
Martin v. Löwis <martin@v.loewis.de>
parents:
47666
diff
changeset
|
2728 PyBuffer_Release(&pbuf); |
|
36452
7789cc557e1e
Bug #876637, prevent stack corruption when socket descriptor
Neal Norwitz <nnorwitz@gmail.com>
parents:
36324
diff
changeset
|
2729 return select_error(); |
|
48221
b8c4bf393794
Issue #3139: Make buffer-interface thread-safe wrt. PyArg_ParseTuple,
Martin v. Löwis <martin@v.loewis.de>
parents:
47666
diff
changeset
|
2730 } |
|
36452
7789cc557e1e
Bug #876637, prevent stack corruption when socket descriptor
Neal Norwitz <nnorwitz@gmail.com>
parents:
36324
diff
changeset
|
2731 |
|
20679
e89c25ca6b29
Add sendall() method, which loops until all data is written or an
Guido van Rossum <guido@python.org>
parents:
20661
diff
changeset
|
2732 Py_BEGIN_ALLOW_THREADS |
|
e89c25ca6b29
Add sendall() method, which loops until all data is written or an
Guido van Rossum <guido@python.org>
parents:
20661
diff
changeset
|
2733 do { |
|
29651
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
2734 timeout = internal_select(s, 1); |
|
39354
85fdcdfca85c
Patch #1519025 and bug #926423: If a KeyboardInterrupt occurs during
Neal Norwitz <nnorwitz@gmail.com>
parents:
39251
diff
changeset
|
2735 n = -1; |
|
29651
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
2736 if (timeout) |
|
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
2737 break; |
|
39043
c67b23397f30
Patch #1516912: improve Modules support for OpenVMS.
Neal Norwitz <nnorwitz@gmail.com>
parents:
38716
diff
changeset
|
2738 #ifdef __VMS |
|
c67b23397f30
Patch #1516912: improve Modules support for OpenVMS.
Neal Norwitz <nnorwitz@gmail.com>
parents:
38716
diff
changeset
|
2739 n = sendsegmented(s->sock_fd, buf, len, flags); |
|
c67b23397f30
Patch #1516912: improve Modules support for OpenVMS.
Neal Norwitz <nnorwitz@gmail.com>
parents:
38716
diff
changeset
|
2740 #else |
|
20679
e89c25ca6b29
Add sendall() method, which loops until all data is written or an
Guido van Rossum <guido@python.org>
parents:
20661
diff
changeset
|
2741 n = send(s->sock_fd, buf, len, flags); |
|
39043
c67b23397f30
Patch #1516912: improve Modules support for OpenVMS.
Neal Norwitz <nnorwitz@gmail.com>
parents:
38716
diff
changeset
|
2742 #endif |
|
55627
fbf8b791ce81
Fix issue1628205: Socket file objects returned by socket.socket.makefile() now
Gregory P. Smith <greg@mad-scientist.com>
parents:
52549
diff
changeset
|
2743 if (n < 0) { |
|
fbf8b791ce81
Fix issue1628205: Socket file objects returned by socket.socket.makefile() now
Gregory P. Smith <greg@mad-scientist.com>
parents:
52549
diff
changeset
|
2744 #ifdef EINTR |
|
fbf8b791ce81
Fix issue1628205: Socket file objects returned by socket.socket.makefile() now
Gregory P. Smith <greg@mad-scientist.com>
parents:
52549
diff
changeset
|
2745 /* We must handle EINTR here as there is no way for |
|
fbf8b791ce81
Fix issue1628205: Socket file objects returned by socket.socket.makefile() now
Gregory P. Smith <greg@mad-scientist.com>
parents:
52549
diff
changeset
|
2746 * the caller to know how much was sent otherwise. */ |
|
fbf8b791ce81
Fix issue1628205: Socket file objects returned by socket.socket.makefile() now
Gregory P. Smith <greg@mad-scientist.com>
parents:
52549
diff
changeset
|
2747 if (errno == EINTR) { |
|
fbf8b791ce81
Fix issue1628205: Socket file objects returned by socket.socket.makefile() now
Gregory P. Smith <greg@mad-scientist.com>
parents:
52549
diff
changeset
|
2748 /* Run signal handlers. If an exception was |
|
fbf8b791ce81
Fix issue1628205: Socket file objects returned by socket.socket.makefile() now
Gregory P. Smith <greg@mad-scientist.com>
parents:
52549
diff
changeset
|
2749 * raised, abort and leave this socket in |
|
fbf8b791ce81
Fix issue1628205: Socket file objects returned by socket.socket.makefile() now
Gregory P. Smith <greg@mad-scientist.com>
parents:
52549
diff
changeset
|
2750 * an unknown state. */ |
|
fbf8b791ce81
Fix issue1628205: Socket file objects returned by socket.socket.makefile() now
Gregory P. Smith <greg@mad-scientist.com>
parents:
52549
diff
changeset
|
2751 if (PyErr_CheckSignals()) |
|
fbf8b791ce81
Fix issue1628205: Socket file objects returned by socket.socket.makefile() now
Gregory P. Smith <greg@mad-scientist.com>
parents:
52549
diff
changeset
|
2752 return NULL; |
|
fbf8b791ce81
Fix issue1628205: Socket file objects returned by socket.socket.makefile() now
Gregory P. Smith <greg@mad-scientist.com>
parents:
52549
diff
changeset
|
2753 continue; |
|
fbf8b791ce81
Fix issue1628205: Socket file objects returned by socket.socket.makefile() now
Gregory P. Smith <greg@mad-scientist.com>
parents:
52549
diff
changeset
|
2754 } |
|
fbf8b791ce81
Fix issue1628205: Socket file objects returned by socket.socket.makefile() now
Gregory P. Smith <greg@mad-scientist.com>
parents:
52549
diff
changeset
|
2755 #endif |
|
20679
e89c25ca6b29
Add sendall() method, which loops until all data is written or an
Guido van Rossum <guido@python.org>
parents:
20661
diff
changeset
|
2756 break; |
|
55627
fbf8b791ce81
Fix issue1628205: Socket file objects returned by socket.socket.makefile() now
Gregory P. Smith <greg@mad-scientist.com>
parents:
52549
diff
changeset
|
2757 } |
|
20679
e89c25ca6b29
Add sendall() method, which loops until all data is written or an
Guido van Rossum <guido@python.org>
parents:
20661
diff
changeset
|
2758 buf += n; |
|
e89c25ca6b29
Add sendall() method, which loops until all data is written or an
Guido van Rossum <guido@python.org>
parents:
20661
diff
changeset
|
2759 len -= n; |
|
e89c25ca6b29
Add sendall() method, which loops until all data is written or an
Guido van Rossum <guido@python.org>
parents:
20661
diff
changeset
|
2760 } while (len > 0); |
|
e89c25ca6b29
Add sendall() method, which loops until all data is written or an
Guido van Rossum <guido@python.org>
parents:
20661
diff
changeset
|
2761 Py_END_ALLOW_THREADS |
|
48221
b8c4bf393794
Issue #3139: Make buffer-interface thread-safe wrt. PyArg_ParseTuple,
Martin v. Löwis <martin@v.loewis.de>
parents:
47666
diff
changeset
|
2762 PyBuffer_Release(&pbuf); |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
2763 |
|
39354
85fdcdfca85c
Patch #1519025 and bug #926423: If a KeyboardInterrupt occurs during
Neal Norwitz <nnorwitz@gmail.com>
parents:
39251
diff
changeset
|
2764 if (timeout == 1) { |
|
29651
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
2765 PyErr_SetString(socket_timeout, "timed out"); |
|
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
2766 return NULL; |
|
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
2767 } |
|
20679
e89c25ca6b29
Add sendall() method, which loops until all data is written or an
Guido van Rossum <guido@python.org>
parents:
20661
diff
changeset
|
2768 if (n < 0) |
|
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
|
2769 return s->errorhandler(); |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
2770 |
|
20679
e89c25ca6b29
Add sendall() method, which loops until all data is written or an
Guido van Rossum <guido@python.org>
parents:
20661
diff
changeset
|
2771 Py_INCREF(Py_None); |
|
e89c25ca6b29
Add sendall() method, which loops until all data is written or an
Guido van Rossum <guido@python.org>
parents:
20661
diff
changeset
|
2772 return Py_None; |
|
e89c25ca6b29
Add sendall() method, which loops until all data is written or an
Guido van Rossum <guido@python.org>
parents:
20661
diff
changeset
|
2773 } |
|
e89c25ca6b29
Add sendall() method, which loops until all data is written or an
Guido van Rossum <guido@python.org>
parents:
20661
diff
changeset
|
2774 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
2775 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
|
2776 "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
|
2777 \n\ |
|
e89c25ca6b29
Add sendall() method, which loops until all data is written or an
Guido van Rossum <guido@python.org>
parents:
20661
diff
changeset
|
2778 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
|
2779 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
|
2780 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
|
2781 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
|
2782 |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2783 |
|
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
|
2784 /* 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
|
2785 |
| 1970 | 2786 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
|
2787 sock_sendto(PySocketSockObject *s, PyObject *args) |
| 294 | 2788 { |
|
48221
b8c4bf393794
Issue #3139: Make buffer-interface thread-safe wrt. PyArg_ParseTuple,
Martin v. Löwis <martin@v.loewis.de>
parents:
47666
diff
changeset
|
2789 Py_buffer pbuf; |
| 1970 | 2790 PyObject *addro; |
| 926 | 2791 char *buf; |
|
48221
b8c4bf393794
Issue #3139: Make buffer-interface thread-safe wrt. PyArg_ParseTuple,
Martin v. Löwis <martin@v.loewis.de>
parents:
47666
diff
changeset
|
2792 Py_ssize_t len; |
|
40416
c43787e6d706
Patch #1544279: Improve thread-safety of the socket module by moving
Martin v. Löwis <martin@v.loewis.de>
parents:
39502
diff
changeset
|
2793 sock_addr_t addrbuf; |
|
48221
b8c4bf393794
Issue #3139: Make buffer-interface thread-safe wrt. PyArg_ParseTuple,
Martin v. Löwis <martin@v.loewis.de>
parents:
47666
diff
changeset
|
2794 int addrlen, n = -1, flags, timeout; |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
2795 |
|
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
|
2796 flags = 0; |
|
48221
b8c4bf393794
Issue #3139: Make buffer-interface thread-safe wrt. PyArg_ParseTuple,
Martin v. Löwis <martin@v.loewis.de>
parents:
47666
diff
changeset
|
2797 if (!PyArg_ParseTuple(args, "s*O:sendto", &pbuf, &addro)) { |
| 1970 | 2798 PyErr_Clear(); |
|
48221
b8c4bf393794
Issue #3139: Make buffer-interface thread-safe wrt. PyArg_ParseTuple,
Martin v. Löwis <martin@v.loewis.de>
parents:
47666
diff
changeset
|
2799 if (!PyArg_ParseTuple(args, "s*iO:sendto", |
|
b8c4bf393794
Issue #3139: Make buffer-interface thread-safe wrt. PyArg_ParseTuple,
Martin v. Löwis <martin@v.loewis.de>
parents:
47666
diff
changeset
|
2800 &pbuf, &flags, &addro)) |
|
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
|
2801 return NULL; |
| 294 | 2802 } |
|
48221
b8c4bf393794
Issue #3139: Make buffer-interface thread-safe wrt. PyArg_ParseTuple,
Martin v. Löwis <martin@v.loewis.de>
parents:
47666
diff
changeset
|
2803 buf = pbuf.buf; |
|
b8c4bf393794
Issue #3139: Make buffer-interface thread-safe wrt. PyArg_ParseTuple,
Martin v. Löwis <martin@v.loewis.de>
parents:
47666
diff
changeset
|
2804 len = pbuf.len; |
|
b8c4bf393794
Issue #3139: Make buffer-interface thread-safe wrt. PyArg_ParseTuple,
Martin v. Löwis <martin@v.loewis.de>
parents:
47666
diff
changeset
|
2805 |
|
b8c4bf393794
Issue #3139: Make buffer-interface thread-safe wrt. PyArg_ParseTuple,
Martin v. Löwis <martin@v.loewis.de>
parents:
47666
diff
changeset
|
2806 if (!IS_SELECTABLE(s)) { |
|
b8c4bf393794
Issue #3139: Make buffer-interface thread-safe wrt. PyArg_ParseTuple,
Martin v. Löwis <martin@v.loewis.de>
parents:
47666
diff
changeset
|
2807 PyBuffer_Release(&pbuf); |
|
36452
7789cc557e1e
Bug #876637, prevent stack corruption when socket descriptor
Neal Norwitz <nnorwitz@gmail.com>
parents:
36324
diff
changeset
|
2808 return select_error(); |
|
48221
b8c4bf393794
Issue #3139: Make buffer-interface thread-safe wrt. PyArg_ParseTuple,
Martin v. Löwis <martin@v.loewis.de>
parents:
47666
diff
changeset
|
2809 } |
|
b8c4bf393794
Issue #3139: Make buffer-interface thread-safe wrt. PyArg_ParseTuple,
Martin v. Löwis <martin@v.loewis.de>
parents:
47666
diff
changeset
|
2810 |
|
b8c4bf393794
Issue #3139: Make buffer-interface thread-safe wrt. PyArg_ParseTuple,
Martin v. Löwis <martin@v.loewis.de>
parents:
47666
diff
changeset
|
2811 if (!getsockaddrarg(s, addro, SAS2SA(&addrbuf), &addrlen)) { |
|
b8c4bf393794
Issue #3139: Make buffer-interface thread-safe wrt. PyArg_ParseTuple,
Martin v. Löwis <martin@v.loewis.de>
parents:
47666
diff
changeset
|
2812 PyBuffer_Release(&pbuf); |
|
40416
c43787e6d706
Patch #1544279: Improve thread-safety of the socket module by moving
Martin v. Löwis <martin@v.loewis.de>
parents:
39502
diff
changeset
|
2813 return NULL; |
|
48221
b8c4bf393794
Issue #3139: Make buffer-interface thread-safe wrt. PyArg_ParseTuple,
Martin v. Löwis <martin@v.loewis.de>
parents:
47666
diff
changeset
|
2814 } |
|
40416
c43787e6d706
Patch #1544279: Improve thread-safety of the socket module by moving
Martin v. Löwis <martin@v.loewis.de>
parents:
39502
diff
changeset
|
2815 |
| 1970 | 2816 Py_BEGIN_ALLOW_THREADS |
|
29651
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
2817 timeout = internal_select(s, 1); |
|
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
2818 if (!timeout) |
|
40416
c43787e6d706
Patch #1544279: Improve thread-safety of the socket module by moving
Martin v. Löwis <martin@v.loewis.de>
parents:
39502
diff
changeset
|
2819 n = sendto(s->sock_fd, buf, len, flags, SAS2SA(&addrbuf), addrlen); |
| 1970 | 2820 Py_END_ALLOW_THREADS |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
2821 |
|
48221
b8c4bf393794
Issue #3139: Make buffer-interface thread-safe wrt. PyArg_ParseTuple,
Martin v. Löwis <martin@v.loewis.de>
parents:
47666
diff
changeset
|
2822 PyBuffer_Release(&pbuf); |
|
39354
85fdcdfca85c
Patch #1519025 and bug #926423: If a KeyboardInterrupt occurs during
Neal Norwitz <nnorwitz@gmail.com>
parents:
39251
diff
changeset
|
2823 if (timeout == 1) { |
|
29651
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
2824 PyErr_SetString(socket_timeout, "timed out"); |
|
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
2825 return NULL; |
|
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
2826 } |
| 294 | 2827 if (n < 0) |
|
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
|
2828 return s->errorhandler(); |
| 1970 | 2829 return PyInt_FromLong((long)n); |
| 294 | 2830 } |
| 2831 | |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
2832 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
|
2833 "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
|
2834 \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2835 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
|
2836 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
|
2837 |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2838 |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2839 /* s.shutdown(how) method */ |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2840 |
| 1970 | 2841 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
|
2842 sock_shutdown(PySocketSockObject *s, PyObject *arg) |
| 294 | 2843 { |
| 2844 int how; | |
| 926 | 2845 int res; |
|
20376
061da22f4203
Convert socket methods to use METH_O and METH_NOARGS where possible.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
20369
diff
changeset
|
2846 |
|
061da22f4203
Convert socket methods to use METH_O and METH_NOARGS where possible.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
20369
diff
changeset
|
2847 how = PyInt_AsLong(arg); |
|
061da22f4203
Convert socket methods to use METH_O and METH_NOARGS where possible.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
20369
diff
changeset
|
2848 if (how == -1 && PyErr_Occurred()) |
| 294 | 2849 return NULL; |
| 1970 | 2850 Py_BEGIN_ALLOW_THREADS |
| 926 | 2851 res = shutdown(s->sock_fd, how); |
| 1970 | 2852 Py_END_ALLOW_THREADS |
| 926 | 2853 if (res < 0) |
|
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
|
2854 return s->errorhandler(); |
| 1970 | 2855 Py_INCREF(Py_None); |
| 2856 return Py_None; | |
| 294 | 2857 } |
| 2858 | |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
2859 PyDoc_STRVAR(shutdown_doc, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2860 "shutdown(flag)\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2861 \n\ |
|
31027
bf038986cb8f
Patch #849595: Add socket.shutdown() constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
30978
diff
changeset
|
2862 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
|
2863 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
|
2864 |
|
47666
fcfe10f3dc14
Restore support for Microsoft VC6 compiler.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47527
diff
changeset
|
2865 #if defined(MS_WINDOWS) && defined(SIO_RCVALL) |
|
44474
bfed70277ab3
Added interface to Windows' WSAIoctl and a simple example for a network sniffer.
Christian Heimes <christian@cheimes.de>
parents:
44350
diff
changeset
|
2866 static PyObject* |
|
bfed70277ab3
Added interface to Windows' WSAIoctl and a simple example for a network sniffer.
Christian Heimes <christian@cheimes.de>
parents:
44350
diff
changeset
|
2867 sock_ioctl(PySocketSockObject *s, PyObject *arg) |
|
bfed70277ab3
Added interface to Windows' WSAIoctl and a simple example for a network sniffer.
Christian Heimes <christian@cheimes.de>
parents:
44350
diff
changeset
|
2868 { |
|
bfed70277ab3
Added interface to Windows' WSAIoctl and a simple example for a network sniffer.
Christian Heimes <christian@cheimes.de>
parents:
44350
diff
changeset
|
2869 unsigned long cmd = SIO_RCVALL; |
|
56212
3def952b515c
http://bugs.python.org/issue6971
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56107
diff
changeset
|
2870 PyObject *argO; |
|
3def952b515c
http://bugs.python.org/issue6971
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56107
diff
changeset
|
2871 DWORD recv; |
|
3def952b515c
http://bugs.python.org/issue6971
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56107
diff
changeset
|
2872 |
|
3def952b515c
http://bugs.python.org/issue6971
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56107
diff
changeset
|
2873 if (!PyArg_ParseTuple(arg, "kO:ioctl", &cmd, &argO)) |
|
44474
bfed70277ab3
Added interface to Windows' WSAIoctl and a simple example for a network sniffer.
Christian Heimes <christian@cheimes.de>
parents:
44350
diff
changeset
|
2874 return NULL; |
|
bfed70277ab3
Added interface to Windows' WSAIoctl and a simple example for a network sniffer.
Christian Heimes <christian@cheimes.de>
parents:
44350
diff
changeset
|
2875 |
|
56212
3def952b515c
http://bugs.python.org/issue6971
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56107
diff
changeset
|
2876 switch (cmd) { |
|
3def952b515c
http://bugs.python.org/issue6971
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56107
diff
changeset
|
2877 case SIO_RCVALL: { |
|
3def952b515c
http://bugs.python.org/issue6971
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56107
diff
changeset
|
2878 unsigned int option = RCVALL_ON; |
|
3def952b515c
http://bugs.python.org/issue6971
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56107
diff
changeset
|
2879 if (!PyArg_ParseTuple(arg, "kI:ioctl", &cmd, &option)) |
|
3def952b515c
http://bugs.python.org/issue6971
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56107
diff
changeset
|
2880 return NULL; |
|
3def952b515c
http://bugs.python.org/issue6971
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56107
diff
changeset
|
2881 if (WSAIoctl(s->sock_fd, cmd, &option, sizeof(option), |
|
3def952b515c
http://bugs.python.org/issue6971
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56107
diff
changeset
|
2882 NULL, 0, &recv, NULL, NULL) == SOCKET_ERROR) { |
|
3def952b515c
http://bugs.python.org/issue6971
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56107
diff
changeset
|
2883 return set_error(); |
|
3def952b515c
http://bugs.python.org/issue6971
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56107
diff
changeset
|
2884 } |
|
3def952b515c
http://bugs.python.org/issue6971
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56107
diff
changeset
|
2885 return PyLong_FromUnsignedLong(recv); } |
|
3def952b515c
http://bugs.python.org/issue6971
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56107
diff
changeset
|
2886 case SIO_KEEPALIVE_VALS: { |
|
3def952b515c
http://bugs.python.org/issue6971
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56107
diff
changeset
|
2887 struct tcp_keepalive ka; |
|
3def952b515c
http://bugs.python.org/issue6971
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56107
diff
changeset
|
2888 if (!PyArg_ParseTuple(arg, "k(kkk):ioctl", &cmd, |
|
3def952b515c
http://bugs.python.org/issue6971
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56107
diff
changeset
|
2889 &ka.onoff, &ka.keepalivetime, &ka.keepaliveinterval)) |
|
3def952b515c
http://bugs.python.org/issue6971
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56107
diff
changeset
|
2890 return NULL; |
|
3def952b515c
http://bugs.python.org/issue6971
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56107
diff
changeset
|
2891 if (WSAIoctl(s->sock_fd, cmd, &ka, sizeof(ka), |
|
3def952b515c
http://bugs.python.org/issue6971
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56107
diff
changeset
|
2892 NULL, 0, &recv, NULL, NULL) == SOCKET_ERROR) { |
|
3def952b515c
http://bugs.python.org/issue6971
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56107
diff
changeset
|
2893 return set_error(); |
|
3def952b515c
http://bugs.python.org/issue6971
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56107
diff
changeset
|
2894 } |
|
3def952b515c
http://bugs.python.org/issue6971
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56107
diff
changeset
|
2895 return PyLong_FromUnsignedLong(recv); } |
|
3def952b515c
http://bugs.python.org/issue6971
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56107
diff
changeset
|
2896 default: |
|
3def952b515c
http://bugs.python.org/issue6971
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56107
diff
changeset
|
2897 PyErr_Format(PyExc_ValueError, "invalid ioctl command %d", cmd); |
|
3def952b515c
http://bugs.python.org/issue6971
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56107
diff
changeset
|
2898 return NULL; |
|
44474
bfed70277ab3
Added interface to Windows' WSAIoctl and a simple example for a network sniffer.
Christian Heimes <christian@cheimes.de>
parents:
44350
diff
changeset
|
2899 } |
|
bfed70277ab3
Added interface to Windows' WSAIoctl and a simple example for a network sniffer.
Christian Heimes <christian@cheimes.de>
parents:
44350
diff
changeset
|
2900 } |
|
bfed70277ab3
Added interface to Windows' WSAIoctl and a simple example for a network sniffer.
Christian Heimes <christian@cheimes.de>
parents:
44350
diff
changeset
|
2901 PyDoc_STRVAR(sock_ioctl_doc, |
|
bfed70277ab3
Added interface to Windows' WSAIoctl and a simple example for a network sniffer.
Christian Heimes <christian@cheimes.de>
parents:
44350
diff
changeset
|
2902 "ioctl(cmd, option) -> long\n\ |
|
bfed70277ab3
Added interface to Windows' WSAIoctl and a simple example for a network sniffer.
Christian Heimes <christian@cheimes.de>
parents:
44350
diff
changeset
|
2903 \n\ |
|
56212
3def952b515c
http://bugs.python.org/issue6971
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56107
diff
changeset
|
2904 Control the socket with WSAIoctl syscall. Currently supported 'cmd' values are\n\ |
|
3def952b515c
http://bugs.python.org/issue6971
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56107
diff
changeset
|
2905 SIO_RCVALL: 'option' must be one of the socket.RCVALL_* constants.\n\ |
|
3def952b515c
http://bugs.python.org/issue6971
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56107
diff
changeset
|
2906 SIO_KEEPALIVE_VALS: 'option' is a tuple of (onoff, timeout, interval)."); |
|
44474
bfed70277ab3
Added interface to Windows' WSAIoctl and a simple example for a network sniffer.
Christian Heimes <christian@cheimes.de>
parents:
44350
diff
changeset
|
2907 |
|
bfed70277ab3
Added interface to Windows' WSAIoctl and a simple example for a network sniffer.
Christian Heimes <christian@cheimes.de>
parents:
44350
diff
changeset
|
2908 #endif |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2909 |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2910 /* List of methods for socket objects */ |
| 294 | 2911 |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
2912 static PyMethodDef sock_methods[] = { |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2913 {"accept", (PyCFunction)sock_accept, METH_NOARGS, |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2914 accept_doc}, |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2915 {"bind", (PyCFunction)sock_bind, METH_O, |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2916 bind_doc}, |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2917 {"close", (PyCFunction)sock_close, METH_NOARGS, |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2918 close_doc}, |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2919 {"connect", (PyCFunction)sock_connect, METH_O, |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2920 connect_doc}, |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2921 {"connect_ex", (PyCFunction)sock_connect_ex, METH_O, |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2922 connect_ex_doc}, |
|
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
|
2923 #ifndef NO_DUP |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2924 {"dup", (PyCFunction)sock_dup, METH_NOARGS, |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2925 dup_doc}, |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2926 #endif |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2927 {"fileno", (PyCFunction)sock_fileno, METH_NOARGS, |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2928 fileno_doc}, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2929 #ifdef HAVE_GETPEERNAME |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2930 {"getpeername", (PyCFunction)sock_getpeername, |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2931 METH_NOARGS, getpeername_doc}, |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2932 #endif |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2933 {"getsockname", (PyCFunction)sock_getsockname, |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2934 METH_NOARGS, getsockname_doc}, |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2935 {"getsockopt", (PyCFunction)sock_getsockopt, METH_VARARGS, |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2936 getsockopt_doc}, |
|
47666
fcfe10f3dc14
Restore support for Microsoft VC6 compiler.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
47527
diff
changeset
|
2937 #if defined(MS_WINDOWS) && defined(SIO_RCVALL) |
|
44474
bfed70277ab3
Added interface to Windows' WSAIoctl and a simple example for a network sniffer.
Christian Heimes <christian@cheimes.de>
parents:
44350
diff
changeset
|
2938 {"ioctl", (PyCFunction)sock_ioctl, METH_VARARGS, |
|
bfed70277ab3
Added interface to Windows' WSAIoctl and a simple example for a network sniffer.
Christian Heimes <christian@cheimes.de>
parents:
44350
diff
changeset
|
2939 sock_ioctl_doc}, |
|
bfed70277ab3
Added interface to Windows' WSAIoctl and a simple example for a network sniffer.
Christian Heimes <christian@cheimes.de>
parents:
44350
diff
changeset
|
2940 #endif |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2941 {"listen", (PyCFunction)sock_listen, METH_O, |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2942 listen_doc}, |
|
1792
a584b4bbbc59
Changes to make it work and compile on NT, by Mark Hammond.
Guido van Rossum <guido@python.org>
parents:
1760
diff
changeset
|
2943 #ifndef NO_DUP |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2944 {"makefile", (PyCFunction)sock_makefile, METH_VARARGS, |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2945 makefile_doc}, |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2946 #endif |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2947 {"recv", (PyCFunction)sock_recv, METH_VARARGS, |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2948 recv_doc}, |
|
38580
a114003aa3d3
Fixes in struct and socket from merge reviews.
Martin Blais <blais@furius.ca>
parents:
38498
diff
changeset
|
2949 {"recv_into", (PyCFunction)sock_recv_into, METH_VARARGS | METH_KEYWORDS, |
|
a114003aa3d3
Fixes in struct and socket from merge reviews.
Martin Blais <blais@furius.ca>
parents:
38498
diff
changeset
|
2950 recv_into_doc}, |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2951 {"recvfrom", (PyCFunction)sock_recvfrom, METH_VARARGS, |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2952 recvfrom_doc}, |
|
38580
a114003aa3d3
Fixes in struct and socket from merge reviews.
Martin Blais <blais@furius.ca>
parents:
38498
diff
changeset
|
2953 {"recvfrom_into", (PyCFunction)sock_recvfrom_into, METH_VARARGS | METH_KEYWORDS, |
|
a114003aa3d3
Fixes in struct and socket from merge reviews.
Martin Blais <blais@furius.ca>
parents:
38498
diff
changeset
|
2954 recvfrom_into_doc}, |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2955 {"send", (PyCFunction)sock_send, METH_VARARGS, |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2956 send_doc}, |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2957 {"sendall", (PyCFunction)sock_sendall, METH_VARARGS, |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2958 sendall_doc}, |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2959 {"sendto", (PyCFunction)sock_sendto, METH_VARARGS, |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2960 sendto_doc}, |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2961 {"setblocking", (PyCFunction)sock_setblocking, METH_O, |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2962 setblocking_doc}, |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2963 {"settimeout", (PyCFunction)sock_settimeout, METH_O, |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2964 settimeout_doc}, |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2965 {"gettimeout", (PyCFunction)sock_gettimeout, METH_NOARGS, |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2966 gettimeout_doc}, |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2967 {"setsockopt", (PyCFunction)sock_setsockopt, METH_VARARGS, |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2968 setsockopt_doc}, |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2969 {"shutdown", (PyCFunction)sock_shutdown, METH_O, |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2970 shutdown_doc}, |
|
16947
b25131bc6ec7
RISCOS changes by dschwertberger.
Guido van Rossum <guido@python.org>
parents:
16472
diff
changeset
|
2971 #ifdef RISCOS |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2972 {"sleeptaskw", (PyCFunction)sock_sleeptaskw, METH_O, |
|
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
2973 sleeptaskw_doc}, |
|
16947
b25131bc6ec7
RISCOS changes by dschwertberger.
Guido van Rossum <guido@python.org>
parents:
16472
diff
changeset
|
2974 #endif |
|
1746
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1413
diff
changeset
|
2975 {NULL, NULL} /* sentinel */ |
| 294 | 2976 }; |
| 2977 | |
|
37069
dd49847a60d3
RFE #567972: Socket objects' family, type and proto properties are
Georg Brandl <georg@python.org>
parents:
36684
diff
changeset
|
2978 /* SockObject members */ |
|
dd49847a60d3
RFE #567972: Socket objects' family, type and proto properties are
Georg Brandl <georg@python.org>
parents:
36684
diff
changeset
|
2979 static PyMemberDef sock_memberlist[] = { |
|
dd49847a60d3
RFE #567972: Socket objects' family, type and proto properties are
Georg Brandl <georg@python.org>
parents:
36684
diff
changeset
|
2980 {"family", T_INT, offsetof(PySocketSockObject, sock_family), READONLY, "the socket family"}, |
|
dd49847a60d3
RFE #567972: Socket objects' family, type and proto properties are
Georg Brandl <georg@python.org>
parents:
36684
diff
changeset
|
2981 {"type", T_INT, offsetof(PySocketSockObject, sock_type), READONLY, "the socket type"}, |
|
dd49847a60d3
RFE #567972: Socket objects' family, type and proto properties are
Georg Brandl <georg@python.org>
parents:
36684
diff
changeset
|
2982 {"proto", T_INT, offsetof(PySocketSockObject, sock_proto), READONLY, "the socket protocol"}, |
|
dd49847a60d3
RFE #567972: Socket objects' family, type and proto properties are
Georg Brandl <georg@python.org>
parents:
36684
diff
changeset
|
2983 {"timeout", T_DOUBLE, offsetof(PySocketSockObject, sock_timeout), READONLY, "the socket timeout"}, |
|
dd49847a60d3
RFE #567972: Socket objects' family, type and proto properties are
Georg Brandl <georg@python.org>
parents:
36684
diff
changeset
|
2984 {0}, |
|
dd49847a60d3
RFE #567972: Socket objects' family, type and proto properties are
Georg Brandl <georg@python.org>
parents:
36684
diff
changeset
|
2985 }; |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2986 |
| 1970 | 2987 /* 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
|
2988 First close the file description. */ |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2989 |
| 294 | 2990 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
|
2991 sock_dealloc(PySocketSockObject *s) |
| 294 | 2992 { |
|
12319
57f34e162e67
In dealloc(), only close the socket if fd != -1.
Guido van Rossum <guido@python.org>
parents:
12229
diff
changeset
|
2993 if (s->sock_fd != -1) |
|
12436
dff7b26116de
Use an explicit macro SOCKETCLOSE which expands to closesocket (on
Guido van Rossum <guido@python.org>
parents:
12319
diff
changeset
|
2994 (void) SOCKETCLOSE(s->sock_fd); |
|
44350
26384b8180c7
#1629: Renamed Py_Size, Py_Type and Py_Refcnt to Py_SIZE, Py_TYPE and Py_REFCNT. Macros for b/w compatibility are available.
Christian Heimes <christian@cheimes.de>
parents:
44337
diff
changeset
|
2995 Py_TYPE(s)->tp_free((PyObject *)s); |
| 294 | 2996 } |
| 2997 | |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2998 |
|
2055
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
2999 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
|
3000 sock_repr(PySocketSockObject *s) |
|
2055
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
3001 { |
|
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
3002 char buf[512]; |
|
13171
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
3003 #if SIZEOF_SOCKET_T > SIZEOF_LONG |
|
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
3004 if (s->sock_fd > LONG_MAX) { |
|
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
3005 /* this can occur on Win64, and actually there is a special |
|
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
3006 ugly printf formatter for decimal pointer length integer |
|
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
3007 printing, only bother if necessary*/ |
|
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
3008 PyErr_SetString(PyExc_OverflowError, |
|
23723
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
3009 "no printf formatter to display " |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
3010 "the socket descriptor in decimal"); |
|
13171
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
3011 return NULL; |
|
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
3012 } |
|
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
3013 #endif |
|
23723
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
3014 PyOS_snprintf( |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
3015 buf, sizeof(buf), |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
3016 "<socket object, fd=%ld, family=%d, type=%d, protocol=%d>", |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
3017 (long)s->sock_fd, s->sock_family, |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
3018 s->sock_type, |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
3019 s->sock_proto); |
|
47527
52294af4b663
This reverts r63675 based on the discussion in this thread:
Gregory P. Smith <greg@mad-scientist.com>
parents:
47294
diff
changeset
|
3020 return PyString_FromString(buf); |
|
2055
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
3021 } |
|
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
3022 |
|
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
3023 |
|
20727
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3024 /* 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
|
3025 |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3026 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
|
3027 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
|
3028 { |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3029 PyObject *new; |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3030 |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3031 new = type->tp_alloc(type, 0); |
|
23711
565032b48f50
The tp_new implementation should initialize the errorhandler field,
Guido van Rossum <guido@python.org>
parents:
23295
diff
changeset
|
3032 if (new != NULL) { |
|
20727
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3033 ((PySocketSockObject *)new)->sock_fd = -1; |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
3034 ((PySocketSockObject *)new)->sock_timeout = -1.0; |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
3035 ((PySocketSockObject *)new)->errorhandler = &set_error; |
|
23711
565032b48f50
The tp_new implementation should initialize the errorhandler field,
Guido van Rossum <guido@python.org>
parents:
23295
diff
changeset
|
3036 } |
|
20727
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3037 return new; |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3038 } |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3039 |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3040 |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3041 /* 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
|
3042 |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3043 /*ARGSUSED*/ |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3044 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
|
3045 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
|
3046 { |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3047 PySocketSockObject *s = (PySocketSockObject *)self; |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3048 SOCKET_T fd; |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3049 int family = AF_INET, type = SOCK_STREAM, proto = 0; |
| 36684 | 3050 static char *keywords[] = {"family", "type", "proto", 0}; |
|
20727
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3051 |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3052 if (!PyArg_ParseTupleAndKeywords(args, kwds, |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3053 "|iii:socket", keywords, |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3054 &family, &type, &proto)) |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3055 return -1; |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
3056 |
|
20727
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3057 Py_BEGIN_ALLOW_THREADS |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3058 fd = socket(family, type, proto); |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3059 Py_END_ALLOW_THREADS |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
3060 |
|
20727
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3061 #ifdef MS_WINDOWS |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3062 if (fd == INVALID_SOCKET) |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3063 #else |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3064 if (fd < 0) |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3065 #endif |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3066 { |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
3067 set_error(); |
|
20727
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3068 return -1; |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3069 } |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3070 init_sockobject(s, fd, family, type, proto); |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
3071 |
|
20727
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3072 return 0; |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
3073 |
|
20727
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3074 } |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3075 |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3076 |
|
1746
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1413
diff
changeset
|
3077 /* 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
|
3078 |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
3079 static PyTypeObject sock_type = { |
|
42333
6620a510e9a9
PEP 3123: Provide forward compatibility with Python 3.0, while keeping
Martin v. Löwis <martin@v.loewis.de>
parents:
41946
diff
changeset
|
3080 PyVarObject_HEAD_INIT(0, 0) /* Must fill in type value later */ |
|
20730
73cabe664c11
Oops. In the tp_name field, the name should be "_socket.socket", not
Guido van Rossum <guido@python.org>
parents:
20727
diff
changeset
|
3081 "_socket.socket", /* tp_name */ |
|
20727
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3082 sizeof(PySocketSockObject), /* tp_basicsize */ |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3083 0, /* tp_itemsize */ |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
3084 (destructor)sock_dealloc, /* tp_dealloc */ |
|
20727
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3085 0, /* tp_print */ |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3086 0, /* tp_getattr */ |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3087 0, /* tp_setattr */ |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3088 0, /* tp_compare */ |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
3089 (reprfunc)sock_repr, /* tp_repr */ |
|
20727
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3090 0, /* tp_as_number */ |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3091 0, /* tp_as_sequence */ |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3092 0, /* tp_as_mapping */ |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3093 0, /* tp_hash */ |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3094 0, /* tp_call */ |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3095 0, /* tp_str */ |
|
27104
2443c557cbc3
Patch #661760: Cygwin auto-import module patch
Jason Tishler <jason@tishler.net>
parents:
27019
diff
changeset
|
3096 PyObject_GenericGetAttr, /* tp_getattro */ |
|
20727
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3097 0, /* tp_setattro */ |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3098 0, /* tp_as_buffer */ |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3099 Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /* tp_flags */ |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
3100 sock_doc, /* tp_doc */ |
|
20727
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3101 0, /* tp_traverse */ |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3102 0, /* tp_clear */ |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3103 0, /* tp_richcompare */ |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3104 0, /* tp_weaklistoffset */ |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3105 0, /* tp_iter */ |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3106 0, /* tp_iternext */ |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
3107 sock_methods, /* tp_methods */ |
|
37069
dd49847a60d3
RFE #567972: Socket objects' family, type and proto properties are
Georg Brandl <georg@python.org>
parents:
36684
diff
changeset
|
3108 sock_memberlist, /* tp_members */ |
|
20727
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3109 0, /* tp_getset */ |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3110 0, /* tp_base */ |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3111 0, /* tp_dict */ |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3112 0, /* tp_descr_get */ |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3113 0, /* tp_descr_set */ |
|
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
3114 0, /* tp_dictoffset */ |
|
23807
cc65b5bcfc38
work around name clash with OS/2 TCPIP routine sock_init()
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents:
23736
diff
changeset
|
3115 sock_initobj, /* tp_init */ |
|
27104
2443c557cbc3
Patch #661760: Cygwin auto-import module patch
Jason Tishler <jason@tishler.net>
parents:
27019
diff
changeset
|
3116 PyType_GenericAlloc, /* tp_alloc */ |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
3117 sock_new, /* tp_new */ |
|
27104
2443c557cbc3
Patch #661760: Cygwin auto-import module patch
Jason Tishler <jason@tishler.net>
parents:
27019
diff
changeset
|
3118 PyObject_Del, /* tp_free */ |
| 294 | 3119 }; |
| 3120 | |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
3121 |
|
324
a81020d505bf
Add gethostname() and s.avail().
Guido van Rossum <guido@python.org>
parents:
309
diff
changeset
|
3122 /* Python interface to gethostname(). */ |
|
a81020d505bf
Add gethostname() and s.avail().
Guido van Rossum <guido@python.org>
parents:
309
diff
changeset
|
3123 |
|
a81020d505bf
Add gethostname() and s.avail().
Guido van Rossum <guido@python.org>
parents:
309
diff
changeset
|
3124 /*ARGSUSED*/ |
| 1970 | 3125 static PyObject * |
|
38489
3fe3ccdf0155
Make use of METH_O and METH_NOARGS where possible.
Georg Brandl <georg@python.org>
parents:
38476
diff
changeset
|
3126 socket_gethostname(PyObject *self, PyObject *unused) |
|
324
a81020d505bf
Add gethostname() and s.avail().
Guido van Rossum <guido@python.org>
parents:
309
diff
changeset
|
3127 { |
|
a81020d505bf
Add gethostname() and s.avail().
Guido van Rossum <guido@python.org>
parents:
309
diff
changeset
|
3128 char buf[1024]; |
| 926 | 3129 int res; |
| 1970 | 3130 Py_BEGIN_ALLOW_THREADS |
| 926 | 3131 res = gethostname(buf, (int) sizeof buf - 1); |
| 1970 | 3132 Py_END_ALLOW_THREADS |
| 926 | 3133 if (res < 0) |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
3134 return set_error(); |
|
324
a81020d505bf
Add gethostname() and s.avail().
Guido van Rossum <guido@python.org>
parents:
309
diff
changeset
|
3135 buf[sizeof buf - 1] = '\0'; |
|
47527
52294af4b663
This reverts r63675 based on the discussion in this thread:
Gregory P. Smith <greg@mad-scientist.com>
parents:
47294
diff
changeset
|
3136 return PyString_FromString(buf); |
|
324
a81020d505bf
Add gethostname() and s.avail().
Guido van Rossum <guido@python.org>
parents:
309
diff
changeset
|
3137 } |
| 926 | 3138 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
3139 PyDoc_STRVAR(gethostname_doc, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
3140 "gethostname() -> string\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
3141 \n\ |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
3142 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
|
3143 |
| 926 | 3144 |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
3145 /* Python interface to gethostbyname(name). */ |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
3146 |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
3147 /*ARGSUSED*/ |
| 1970 | 3148 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
|
3149 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
|
3150 { |
|
1792
a584b4bbbc59
Changes to make it work and compile on NT, by Mark Hammond.
Guido van Rossum <guido@python.org>
parents:
1760
diff
changeset
|
3151 char *name; |
|
35551
57f630a9de26
- Changes donated by Elemental Security to make it work on AIX 5.3
Guido van Rossum <guido@python.org>
parents:
35452
diff
changeset
|
3152 sock_addr_t addrbuf; |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3153 |
|
12050
b90880c0e5eb
Fix all routines to use PyArg_ParseTuple(), and add ":name" to the
Guido van Rossum <guido@python.org>
parents:
11937
diff
changeset
|
3154 if (!PyArg_ParseTuple(args, "s:gethostbyname", &name)) |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
3155 return NULL; |
|
40416
c43787e6d706
Patch #1544279: Improve thread-safety of the socket module by moving
Martin v. Löwis <martin@v.loewis.de>
parents:
39502
diff
changeset
|
3156 if (setipaddr(name, SAS2SA(&addrbuf), sizeof(addrbuf), AF_INET) < 0) |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
3157 return NULL; |
|
40416
c43787e6d706
Patch #1544279: Improve thread-safety of the socket module by moving
Martin v. Löwis <martin@v.loewis.de>
parents:
39502
diff
changeset
|
3158 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
|
3159 } |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
3160 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
3161 PyDoc_STRVAR(gethostbyname_doc, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
3162 "gethostbyname(host) -> address\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
3163 \n\ |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
3164 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
|
3165 |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
3166 |
|
8821
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3167 /* 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
|
3168 |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3169 static PyObject * |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3170 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
|
3171 { |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3172 char **pch; |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3173 PyObject *rtn_tuple = (PyObject *)NULL; |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3174 PyObject *name_list = (PyObject *)NULL; |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3175 PyObject *addr_list = (PyObject *)NULL; |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3176 PyObject *tmp; |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3177 |
|
8821
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3178 if (h == NULL) { |
|
16947
b25131bc6ec7
RISCOS changes by dschwertberger.
Guido van Rossum <guido@python.org>
parents:
16472
diff
changeset
|
3179 /* Let's get real error message to return */ |
|
20654
edd9d0b3c47e
SF patch #474590 -- RISC OS support
Guido van Rossum <guido@python.org>
parents:
20648
diff
changeset
|
3180 #ifndef RISCOS |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
3181 set_herror(h_errno); |
|
20654
edd9d0b3c47e
SF patch #474590 -- RISC OS support
Guido van Rossum <guido@python.org>
parents:
20648
diff
changeset
|
3182 #else |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
3183 PyErr_SetString(socket_error, "host not found"); |
|
20654
edd9d0b3c47e
SF patch #474590 -- RISC OS support
Guido van Rossum <guido@python.org>
parents:
20648
diff
changeset
|
3184 #endif |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3185 return NULL; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3186 } |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
3187 |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3188 if (h->h_addrtype != af) { |
|
23723
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
3189 /* Let's get real error message to return */ |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
3190 PyErr_SetString(socket_error, |
|
23723
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
3191 (char *)strerror(EAFNOSUPPORT)); |
|
45854
21139ea59b6b
Remove all traces of HAVE_STRERROR.
Brett Cannon <bcannon@gmail.com>
parents:
44887
diff
changeset
|
3192 |
|
8821
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3193 return NULL; |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3194 } |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
3195 |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3196 switch (af) { |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
3197 |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3198 case AF_INET: |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3199 if (alen < sizeof(struct sockaddr_in)) |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3200 return NULL; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3201 break; |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
3202 |
|
21128
15ff504632ed
Remove INET6 define. Use ENABLE_IPV6 instead.
Martin v. Löwis <martin@v.loewis.de>
parents:
21094
diff
changeset
|
3203 #ifdef ENABLE_IPV6 |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3204 case AF_INET6: |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3205 if (alen < sizeof(struct sockaddr_in6)) |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3206 return NULL; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3207 break; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3208 #endif |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
3209 |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3210 } |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
3211 |
|
8821
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3212 if ((name_list = PyList_New(0)) == NULL) |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3213 goto err; |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
3214 |
|
8821
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3215 if ((addr_list = PyList_New(0)) == NULL) |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3216 goto err; |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
3217 |
|
39502
799bcf0ccbfd
Patch #1511317: don't crash on invalid hostname info
Georg Brandl <georg@python.org>
parents:
39354
diff
changeset
|
3218 /* SF #1511317: h_aliases can be NULL */ |
|
799bcf0ccbfd
Patch #1511317: don't crash on invalid hostname info
Georg Brandl <georg@python.org>
parents:
39354
diff
changeset
|
3219 if (h->h_aliases) { |
|
799bcf0ccbfd
Patch #1511317: don't crash on invalid hostname info
Georg Brandl <georg@python.org>
parents:
39354
diff
changeset
|
3220 for (pch = h->h_aliases; *pch != NULL; pch++) { |
|
799bcf0ccbfd
Patch #1511317: don't crash on invalid hostname info
Georg Brandl <georg@python.org>
parents:
39354
diff
changeset
|
3221 int status; |
|
47527
52294af4b663
This reverts r63675 based on the discussion in this thread:
Gregory P. Smith <greg@mad-scientist.com>
parents:
47294
diff
changeset
|
3222 tmp = PyString_FromString(*pch); |
|
39502
799bcf0ccbfd
Patch #1511317: don't crash on invalid hostname info
Georg Brandl <georg@python.org>
parents:
39354
diff
changeset
|
3223 if (tmp == NULL) |
|
799bcf0ccbfd
Patch #1511317: don't crash on invalid hostname info
Georg Brandl <georg@python.org>
parents:
39354
diff
changeset
|
3224 goto err; |
|
799bcf0ccbfd
Patch #1511317: don't crash on invalid hostname info
Georg Brandl <georg@python.org>
parents:
39354
diff
changeset
|
3225 |
|
799bcf0ccbfd
Patch #1511317: don't crash on invalid hostname info
Georg Brandl <georg@python.org>
parents:
39354
diff
changeset
|
3226 status = PyList_Append(name_list, tmp); |
|
799bcf0ccbfd
Patch #1511317: don't crash on invalid hostname info
Georg Brandl <georg@python.org>
parents:
39354
diff
changeset
|
3227 Py_DECREF(tmp); |
|
799bcf0ccbfd
Patch #1511317: don't crash on invalid hostname info
Georg Brandl <georg@python.org>
parents:
39354
diff
changeset
|
3228 |
|
799bcf0ccbfd
Patch #1511317: don't crash on invalid hostname info
Georg Brandl <georg@python.org>
parents:
39354
diff
changeset
|
3229 if (status) |
|
799bcf0ccbfd
Patch #1511317: don't crash on invalid hostname info
Georg Brandl <georg@python.org>
parents:
39354
diff
changeset
|
3230 goto err; |
|
799bcf0ccbfd
Patch #1511317: don't crash on invalid hostname info
Georg Brandl <georg@python.org>
parents:
39354
diff
changeset
|
3231 } |
|
8821
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3232 } |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
3233 |
|
8821
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3234 for (pch = h->h_addr_list; *pch != NULL; pch++) { |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3235 int status; |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
3236 |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3237 switch (af) { |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
3238 |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3239 case AF_INET: |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3240 { |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3241 struct sockaddr_in sin; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3242 memset(&sin, 0, sizeof(sin)); |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3243 sin.sin_family = af; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3244 #ifdef HAVE_SOCKADDR_SA_LEN |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3245 sin.sin_len = sizeof(sin); |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3246 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3247 memcpy(&sin.sin_addr, *pch, sizeof(sin.sin_addr)); |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3248 tmp = makeipaddr((struct sockaddr *)&sin, sizeof(sin)); |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
3249 |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3250 if (pch == h->h_addr_list && alen >= sizeof(sin)) |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3251 memcpy((char *) addr, &sin, sizeof(sin)); |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3252 break; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3253 } |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
3254 |
|
21128
15ff504632ed
Remove INET6 define. Use ENABLE_IPV6 instead.
Martin v. Löwis <martin@v.loewis.de>
parents:
21094
diff
changeset
|
3255 #ifdef ENABLE_IPV6 |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3256 case AF_INET6: |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3257 { |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3258 struct sockaddr_in6 sin6; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3259 memset(&sin6, 0, sizeof(sin6)); |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3260 sin6.sin6_family = af; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3261 #ifdef HAVE_SOCKADDR_SA_LEN |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3262 sin6.sin6_len = sizeof(sin6); |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3263 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3264 memcpy(&sin6.sin6_addr, *pch, sizeof(sin6.sin6_addr)); |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3265 tmp = makeipaddr((struct sockaddr *)&sin6, |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3266 sizeof(sin6)); |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
3267 |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3268 if (pch == h->h_addr_list && alen >= sizeof(sin6)) |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3269 memcpy((char *) addr, &sin6, sizeof(sin6)); |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3270 break; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3271 } |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3272 #endif |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
3273 |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3274 default: /* can't happen */ |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
3275 PyErr_SetString(socket_error, |
|
23723
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
3276 "unsupported address family"); |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3277 return NULL; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3278 } |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
3279 |
|
8821
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3280 if (tmp == NULL) |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3281 goto err; |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
3282 |
|
8821
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3283 status = PyList_Append(addr_list, tmp); |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3284 Py_DECREF(tmp); |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
3285 |
|
8821
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3286 if (status) |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3287 goto err; |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3288 } |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
3289 |
|
8821
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3290 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
|
3291 |
|
8821
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3292 err: |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3293 Py_XDECREF(name_list); |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3294 Py_XDECREF(addr_list); |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3295 return rtn_tuple; |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3296 } |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3297 |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3298 |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3299 /* 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
|
3300 |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3301 /*ARGSUSED*/ |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3302 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
|
3303 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
|
3304 { |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3305 char *name; |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3306 struct hostent *h; |
|
28949
ac487a7f7f2c
Patch #708495: Port more stuff to OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
28925
diff
changeset
|
3307 #ifdef ENABLE_IPV6 |
|
ac487a7f7f2c
Patch #708495: Port more stuff to OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
28925
diff
changeset
|
3308 struct sockaddr_storage addr; |
|
ac487a7f7f2c
Patch #708495: Port more stuff to OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
28925
diff
changeset
|
3309 #else |
|
ac487a7f7f2c
Patch #708495: Port more stuff to OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
28925
diff
changeset
|
3310 struct sockaddr_in addr; |
|
ac487a7f7f2c
Patch #708495: Port more stuff to OpenVMS.
Martin v. Löwis <martin@v.loewis.de>
parents:
28925
diff
changeset
|
3311 #endif |
|
18798
d591a96aed06
Instead of accessing ss_family, cast sockaddr_storage to sockaddr and access sa_family.
Martin v. Löwis <martin@v.loewis.de>
parents:
18794
diff
changeset
|
3312 struct sockaddr *sa; |
|
10441
9ba5dffccb1b
Jonathan Giddy writes:
Guido van Rossum <guido@python.org>
parents:
10401
diff
changeset
|
3313 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
|
3314 #ifdef HAVE_GETHOSTBYNAME_R |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3315 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
|
3316 #ifdef HAVE_GETHOSTBYNAME_R_3_ARG |
|
5b54fa775e55
Vladimir Marangozov implements the AIX 3-arg gethostbyname_r code.
Guido van Rossum <guido@python.org>
parents:
10442
diff
changeset
|
3317 struct hostent_data data; |
|
5b54fa775e55
Vladimir Marangozov implements the AIX 3-arg gethostbyname_r code.
Guido van Rossum <guido@python.org>
parents:
10442
diff
changeset
|
3318 #else |
|
8821
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3319 char buf[16384]; |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3320 int buf_len = (sizeof buf) - 1; |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3321 int errnop; |
|
10453
5b54fa775e55
Vladimir Marangozov implements the AIX 3-arg gethostbyname_r code.
Guido van Rossum <guido@python.org>
parents:
10442
diff
changeset
|
3322 #endif |
|
5b54fa775e55
Vladimir Marangozov implements the AIX 3-arg gethostbyname_r code.
Guido van Rossum <guido@python.org>
parents:
10442
diff
changeset
|
3323 #if defined(HAVE_GETHOSTBYNAME_R_3_ARG) || defined(HAVE_GETHOSTBYNAME_R_6_ARG) |
|
10401
f81db738abd9
Patch by Rob Riggs for Linux -- glibc2 has a different argument
Guido van Rossum <guido@python.org>
parents:
9679
diff
changeset
|
3324 int result; |
|
f81db738abd9
Patch by Rob Riggs for Linux -- glibc2 has a different argument
Guido van Rossum <guido@python.org>
parents:
9679
diff
changeset
|
3325 #endif |
|
8821
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3326 #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
|
3327 |
|
12050
b90880c0e5eb
Fix all routines to use PyArg_ParseTuple(), and add ":name" to the
Guido van Rossum <guido@python.org>
parents:
11937
diff
changeset
|
3328 if (!PyArg_ParseTuple(args, "s:gethostbyname_ex", &name)) |
|
8821
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3329 return NULL; |
|
26597
7ddea4dfa519
Patch #650422: Use Posix AF_ constants instead of PF_ ones.
Martin v. Löwis <martin@v.loewis.de>
parents:
26551
diff
changeset
|
3330 if (setipaddr(name, (struct sockaddr *)&addr, sizeof(addr), AF_INET) < 0) |
|
8821
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3331 return NULL; |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3332 Py_BEGIN_ALLOW_THREADS |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3333 #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
|
3334 #if defined(HAVE_GETHOSTBYNAME_R_6_ARG) |
|
23723
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
3335 result = gethostbyname_r(name, &hp_allocated, buf, buf_len, |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
3336 &h, &errnop); |
|
10453
5b54fa775e55
Vladimir Marangozov implements the AIX 3-arg gethostbyname_r code.
Guido van Rossum <guido@python.org>
parents:
10442
diff
changeset
|
3337 #elif defined(HAVE_GETHOSTBYNAME_R_5_ARG) |
|
8821
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3338 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
|
3339 #else /* HAVE_GETHOSTBYNAME_R_3_ARG */ |
|
10454
dad14ffe1c22
Implement two suggestions by Jonathan Giddy: (1) in AIX, clear the
Guido van Rossum <guido@python.org>
parents:
10453
diff
changeset
|
3340 memset((void *) &data, '\0', sizeof(data)); |
|
10453
5b54fa775e55
Vladimir Marangozov implements the AIX 3-arg gethostbyname_r code.
Guido van Rossum <guido@python.org>
parents:
10442
diff
changeset
|
3341 result = gethostbyname_r(name, &hp_allocated, &data); |
|
5b54fa775e55
Vladimir Marangozov implements the AIX 3-arg gethostbyname_r code.
Guido van Rossum <guido@python.org>
parents:
10442
diff
changeset
|
3342 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
|
3343 #endif |
|
8821
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3344 #else /* not HAVE_GETHOSTBYNAME_R */ |
|
10442
9184c9e108f9
Clean up pass for the previous patches.
Guido van Rossum <guido@python.org>
parents:
10441
diff
changeset
|
3345 #ifdef USE_GETHOSTBYNAME_LOCK |
|
29035
e1d5ca8ab7dc
[ 731644] & [ 604210 ] Release the GIL around getaddrinfo(), yet protect
Just van Rossum <just@letterror.com>
parents:
28953
diff
changeset
|
3346 PyThread_acquire_lock(netdb_lock, 1); |
|
8821
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3347 #endif |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3348 h = gethostbyname(name); |
|
10441
9ba5dffccb1b
Jonathan Giddy writes:
Guido van Rossum <guido@python.org>
parents:
10401
diff
changeset
|
3349 #endif /* HAVE_GETHOSTBYNAME_R */ |
|
9ba5dffccb1b
Jonathan Giddy writes:
Guido van Rossum <guido@python.org>
parents:
10401
diff
changeset
|
3350 Py_END_ALLOW_THREADS |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
3351 /* Some C libraries would require addr.__ss_family instead of |
|
23723
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
3352 addr.ss_family. |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
3353 Therefore, we cast the sockaddr_storage into sockaddr to |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
3354 access sa_family. */ |
|
18798
d591a96aed06
Instead of accessing ss_family, cast sockaddr_storage to sockaddr and access sa_family.
Martin v. Löwis <martin@v.loewis.de>
parents:
18794
diff
changeset
|
3355 sa = (struct sockaddr*)&addr; |
|
23715
c2733e8f6612
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
Guido van Rossum <guido@python.org>
parents:
23714
diff
changeset
|
3356 ret = gethost_common(h, (struct sockaddr *)&addr, sizeof(addr), |
|
23723
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
3357 sa->sa_family); |
|
10442
9184c9e108f9
Clean up pass for the previous patches.
Guido van Rossum <guido@python.org>
parents:
10441
diff
changeset
|
3358 #ifdef USE_GETHOSTBYNAME_LOCK |
|
29035
e1d5ca8ab7dc
[ 731644] & [ 604210 ] Release the GIL around getaddrinfo(), yet protect
Just van Rossum <just@letterror.com>
parents:
28953
diff
changeset
|
3359 PyThread_release_lock(netdb_lock); |
|
8821
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3360 #endif |
|
10441
9ba5dffccb1b
Jonathan Giddy writes:
Guido van Rossum <guido@python.org>
parents:
10401
diff
changeset
|
3361 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
|
3362 } |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3363 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
3364 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
|
3365 "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
|
3366 \n\ |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3367 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
|
3368 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
|
3369 |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
3370 |
|
2055
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
3371 /* Python interface to gethostbyaddr(IP). */ |
|
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
3372 |
|
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
3373 /*ARGSUSED*/ |
|
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
3374 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
|
3375 socket_gethostbyaddr(PyObject *self, PyObject *args) |
|
2055
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
3376 { |
|
21128
15ff504632ed
Remove INET6 define. Use ENABLE_IPV6 instead.
Martin v. Löwis <martin@v.loewis.de>
parents:
21094
diff
changeset
|
3377 #ifdef ENABLE_IPV6 |
|
23723
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
3378 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
|
3379 #else |
|
16947
b25131bc6ec7
RISCOS changes by dschwertberger.
Guido van Rossum <guido@python.org>
parents:
16472
diff
changeset
|
3380 struct sockaddr_in addr; |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3381 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3382 struct sockaddr *sa = (struct sockaddr *)&addr; |
|
2055
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
3383 char *ip_num; |
|
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
3384 struct hostent *h; |
|
10442
9184c9e108f9
Clean up pass for the previous patches.
Guido van Rossum <guido@python.org>
parents:
10441
diff
changeset
|
3385 PyObject *ret; |
|
7942
ee2aaa2f722a
Threading speedup patches by Christopher Lindblad <cjl@infoseek.com>.
Guido van Rossum <guido@python.org>
parents:
6718
diff
changeset
|
3386 #ifdef HAVE_GETHOSTBYNAME_R |
|
ee2aaa2f722a
Threading speedup patches by Christopher Lindblad <cjl@infoseek.com>.
Guido van Rossum <guido@python.org>
parents:
6718
diff
changeset
|
3387 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
|
3388 #ifdef HAVE_GETHOSTBYNAME_R_3_ARG |
|
5b54fa775e55
Vladimir Marangozov implements the AIX 3-arg gethostbyname_r code.
Guido van Rossum <guido@python.org>
parents:
10442
diff
changeset
|
3389 struct hostent_data data; |
|
5b54fa775e55
Vladimir Marangozov implements the AIX 3-arg gethostbyname_r code.
Guido van Rossum <guido@python.org>
parents:
10442
diff
changeset
|
3390 #else |
|
50786
2d453b221bec
Merged revisions 68292,68344,68361,68378,68424,68426,68429-68430,68450,68457,68480-68481,68493,68495,68499,68501,68512,68514-68515 via svnmerge from
Georg Brandl <georg@python.org>
parents:
48221
diff
changeset
|
3391 /* glibcs up to 2.10 assume that the buf argument to |
|
2d453b221bec
Merged revisions 68292,68344,68361,68378,68424,68426,68429-68430,68450,68457,68480-68481,68493,68495,68499,68501,68512,68514-68515 via svnmerge from
Georg Brandl <georg@python.org>
parents:
48221
diff
changeset
|
3392 gethostbyaddr_r is 8-byte aligned, which at least llvm-gcc |
|
2d453b221bec
Merged revisions 68292,68344,68361,68378,68424,68426,68429-68430,68450,68457,68480-68481,68493,68495,68499,68501,68512,68514-68515 via svnmerge from
Georg Brandl <georg@python.org>
parents:
48221
diff
changeset
|
3393 does not ensure. The attribute below instructs the compiler |
|
2d453b221bec
Merged revisions 68292,68344,68361,68378,68424,68426,68429-68430,68450,68457,68480-68481,68493,68495,68499,68501,68512,68514-68515 via svnmerge from
Georg Brandl <georg@python.org>
parents:
48221
diff
changeset
|
3394 to maintain this alignment. */ |
|
2d453b221bec
Merged revisions 68292,68344,68361,68378,68424,68426,68429-68430,68450,68457,68480-68481,68493,68495,68499,68501,68512,68514-68515 via svnmerge from
Georg Brandl <georg@python.org>
parents:
48221
diff
changeset
|
3395 char buf[16384] Py_ALIGNED(8); |
|
7942
ee2aaa2f722a
Threading speedup patches by Christopher Lindblad <cjl@infoseek.com>.
Guido van Rossum <guido@python.org>
parents:
6718
diff
changeset
|
3396 int buf_len = (sizeof buf) - 1; |
|
ee2aaa2f722a
Threading speedup patches by Christopher Lindblad <cjl@infoseek.com>.
Guido van Rossum <guido@python.org>
parents:
6718
diff
changeset
|
3397 int errnop; |
|
10453
5b54fa775e55
Vladimir Marangozov implements the AIX 3-arg gethostbyname_r code.
Guido van Rossum <guido@python.org>
parents:
10442
diff
changeset
|
3398 #endif |
|
5b54fa775e55
Vladimir Marangozov implements the AIX 3-arg gethostbyname_r code.
Guido van Rossum <guido@python.org>
parents:
10442
diff
changeset
|
3399 #if defined(HAVE_GETHOSTBYNAME_R_3_ARG) || defined(HAVE_GETHOSTBYNAME_R_6_ARG) |
|
10401
f81db738abd9
Patch by Rob Riggs for Linux -- glibc2 has a different argument
Guido van Rossum <guido@python.org>
parents:
9679
diff
changeset
|
3400 int result; |
|
f81db738abd9
Patch by Rob Riggs for Linux -- glibc2 has a different argument
Guido van Rossum <guido@python.org>
parents:
9679
diff
changeset
|
3401 #endif |
|
7942
ee2aaa2f722a
Threading speedup patches by Christopher Lindblad <cjl@infoseek.com>.
Guido van Rossum <guido@python.org>
parents:
6718
diff
changeset
|
3402 #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
|
3403 char *ap; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3404 int al; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3405 int af; |
|
2055
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
3406 |
|
12050
b90880c0e5eb
Fix all routines to use PyArg_ParseTuple(), and add ":name" to the
Guido van Rossum <guido@python.org>
parents:
11937
diff
changeset
|
3407 if (!PyArg_ParseTuple(args, "s:gethostbyaddr", &ip_num)) |
|
2055
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
3408 return NULL; |
|
26597
7ddea4dfa519
Patch #650422: Use Posix AF_ constants instead of PF_ ones.
Martin v. Löwis <martin@v.loewis.de>
parents:
26551
diff
changeset
|
3409 af = AF_UNSPEC; |
|
24411
8e266d0acd10
Pass length of result structure into setipaddr. Fixes bug #565747.
Martin v. Löwis <martin@v.loewis.de>
parents:
24380
diff
changeset
|
3410 if (setipaddr(ip_num, sa, sizeof(addr), af) < 0) |
|
2055
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
3411 return NULL; |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3412 af = sa->sa_family; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3413 ap = NULL; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3414 al = 0; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3415 switch (af) { |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3416 case AF_INET: |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3417 ap = (char *)&((struct sockaddr_in *)sa)->sin_addr; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3418 al = sizeof(((struct sockaddr_in *)sa)->sin_addr); |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3419 break; |
|
21128
15ff504632ed
Remove INET6 define. Use ENABLE_IPV6 instead.
Martin v. Löwis <martin@v.loewis.de>
parents:
21094
diff
changeset
|
3420 #ifdef ENABLE_IPV6 |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3421 case AF_INET6: |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3422 ap = (char *)&((struct sockaddr_in6 *)sa)->sin6_addr; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3423 al = sizeof(((struct sockaddr_in6 *)sa)->sin6_addr); |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3424 break; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3425 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3426 default: |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
3427 PyErr_SetString(socket_error, "unsupported address family"); |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3428 return NULL; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3429 } |
|
7942
ee2aaa2f722a
Threading speedup patches by Christopher Lindblad <cjl@infoseek.com>.
Guido van Rossum <guido@python.org>
parents:
6718
diff
changeset
|
3430 Py_BEGIN_ALLOW_THREADS |
|
ee2aaa2f722a
Threading speedup patches by Christopher Lindblad <cjl@infoseek.com>.
Guido van Rossum <guido@python.org>
parents:
6718
diff
changeset
|
3431 #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
|
3432 #if defined(HAVE_GETHOSTBYNAME_R_6_ARG) |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3433 result = gethostbyaddr_r(ap, al, af, |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3434 &hp_allocated, buf, buf_len, |
|
10401
f81db738abd9
Patch by Rob Riggs for Linux -- glibc2 has a different argument
Guido van Rossum <guido@python.org>
parents:
9679
diff
changeset
|
3435 &h, &errnop); |
|
10453
5b54fa775e55
Vladimir Marangozov implements the AIX 3-arg gethostbyname_r code.
Guido van Rossum <guido@python.org>
parents:
10442
diff
changeset
|
3436 #elif defined(HAVE_GETHOSTBYNAME_R_5_ARG) |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3437 h = gethostbyaddr_r(ap, al, af, |
|
7942
ee2aaa2f722a
Threading speedup patches by Christopher Lindblad <cjl@infoseek.com>.
Guido van Rossum <guido@python.org>
parents:
6718
diff
changeset
|
3438 &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
|
3439 #else /* HAVE_GETHOSTBYNAME_R_3_ARG */ |
|
10454
dad14ffe1c22
Implement two suggestions by Jonathan Giddy: (1) in AIX, clear the
Guido van Rossum <guido@python.org>
parents:
10453
diff
changeset
|
3440 memset((void *) &data, '\0', sizeof(data)); |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3441 result = gethostbyaddr_r(ap, al, af, &hp_allocated, &data); |
|
10453
5b54fa775e55
Vladimir Marangozov implements the AIX 3-arg gethostbyname_r code.
Guido van Rossum <guido@python.org>
parents:
10442
diff
changeset
|
3442 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
|
3443 #endif |
|
7942
ee2aaa2f722a
Threading speedup patches by Christopher Lindblad <cjl@infoseek.com>.
Guido van Rossum <guido@python.org>
parents:
6718
diff
changeset
|
3444 #else /* not HAVE_GETHOSTBYNAME_R */ |
|
10442
9184c9e108f9
Clean up pass for the previous patches.
Guido van Rossum <guido@python.org>
parents:
10441
diff
changeset
|
3445 #ifdef USE_GETHOSTBYNAME_LOCK |
|
29035
e1d5ca8ab7dc
[ 731644] & [ 604210 ] Release the GIL around getaddrinfo(), yet protect
Just van Rossum <just@letterror.com>
parents:
28953
diff
changeset
|
3446 PyThread_acquire_lock(netdb_lock, 1); |
|
7942
ee2aaa2f722a
Threading speedup patches by Christopher Lindblad <cjl@infoseek.com>.
Guido van Rossum <guido@python.org>
parents:
6718
diff
changeset
|
3447 #endif |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3448 h = gethostbyaddr(ap, al, af); |
|
10442
9184c9e108f9
Clean up pass for the previous patches.
Guido van Rossum <guido@python.org>
parents:
10441
diff
changeset
|
3449 #endif /* HAVE_GETHOSTBYNAME_R */ |
|
9184c9e108f9
Clean up pass for the previous patches.
Guido van Rossum <guido@python.org>
parents:
10441
diff
changeset
|
3450 Py_END_ALLOW_THREADS |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
3451 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
|
3452 #ifdef USE_GETHOSTBYNAME_LOCK |
|
29035
e1d5ca8ab7dc
[ 731644] & [ 604210 ] Release the GIL around getaddrinfo(), yet protect
Just van Rossum <just@letterror.com>
parents:
28953
diff
changeset
|
3453 PyThread_release_lock(netdb_lock); |
|
7942
ee2aaa2f722a
Threading speedup patches by Christopher Lindblad <cjl@infoseek.com>.
Guido van Rossum <guido@python.org>
parents:
6718
diff
changeset
|
3454 #endif |
|
10442
9184c9e108f9
Clean up pass for the previous patches.
Guido van Rossum <guido@python.org>
parents:
10441
diff
changeset
|
3455 return ret; |
|
2055
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
3456 } |
|
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
3457 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
3458 PyDoc_STRVAR(gethostbyaddr_doc, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
3459 "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
|
3460 \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
3461 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
|
3462 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
|
3463 |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
3464 |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
3465 /* Python interface to getservbyname(name). |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
3466 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
|
3467 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
|
3468 |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
3469 /*ARGSUSED*/ |
| 1970 | 3470 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
|
3471 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
|
3472 { |
|
32429
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32213
diff
changeset
|
3473 char *name, *proto=NULL; |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
3474 struct servent *sp; |
|
32429
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32213
diff
changeset
|
3475 if (!PyArg_ParseTuple(args, "s|s:getservbyname", &name, &proto)) |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
3476 return NULL; |
| 1970 | 3477 Py_BEGIN_ALLOW_THREADS |
| 926 | 3478 sp = getservbyname(name, proto); |
| 1970 | 3479 Py_END_ALLOW_THREADS |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
3480 if (sp == NULL) { |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
3481 PyErr_SetString(socket_error, "service/proto not found"); |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
3482 return NULL; |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
3483 } |
| 1970 | 3484 return PyInt_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
|
3485 } |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
3486 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
3487 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
|
3488 "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
|
3489 \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
3490 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
|
3491 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
|
3492 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
|
3493 |
|
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32213
diff
changeset
|
3494 |
|
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32213
diff
changeset
|
3495 /* 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
|
3496 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
|
3497 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
|
3498 |
|
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32213
diff
changeset
|
3499 /*ARGSUSED*/ |
|
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32213
diff
changeset
|
3500 static PyObject * |
|
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32213
diff
changeset
|
3501 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
|
3502 { |
|
51220
eb2607a6516e
- Issue #5104: The socket module now raises OverflowError when 16-bit port and
Gregory P. Smith <greg@mad-scientist.com>
parents:
50786
diff
changeset
|
3503 int port; |
|
32429
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32213
diff
changeset
|
3504 char *proto=NULL; |
|
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32213
diff
changeset
|
3505 struct servent *sp; |
|
51220
eb2607a6516e
- Issue #5104: The socket module now raises OverflowError when 16-bit port and
Gregory P. Smith <greg@mad-scientist.com>
parents:
50786
diff
changeset
|
3506 if (!PyArg_ParseTuple(args, "i|s:getservbyport", &port, &proto)) |
|
32429
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32213
diff
changeset
|
3507 return NULL; |
|
51220
eb2607a6516e
- Issue #5104: The socket module now raises OverflowError when 16-bit port and
Gregory P. Smith <greg@mad-scientist.com>
parents:
50786
diff
changeset
|
3508 if (port < 0 || port > 0xffff) { |
|
eb2607a6516e
- Issue #5104: The socket module now raises OverflowError when 16-bit port and
Gregory P. Smith <greg@mad-scientist.com>
parents:
50786
diff
changeset
|
3509 PyErr_SetString( |
|
eb2607a6516e
- Issue #5104: The socket module now raises OverflowError when 16-bit port and
Gregory P. Smith <greg@mad-scientist.com>
parents:
50786
diff
changeset
|
3510 PyExc_OverflowError, |
|
eb2607a6516e
- Issue #5104: The socket module now raises OverflowError when 16-bit port and
Gregory P. Smith <greg@mad-scientist.com>
parents:
50786
diff
changeset
|
3511 "getservbyport: port must be 0-65535."); |
|
eb2607a6516e
- Issue #5104: The socket module now raises OverflowError when 16-bit port and
Gregory P. Smith <greg@mad-scientist.com>
parents:
50786
diff
changeset
|
3512 return NULL; |
|
eb2607a6516e
- Issue #5104: The socket module now raises OverflowError when 16-bit port and
Gregory P. Smith <greg@mad-scientist.com>
parents:
50786
diff
changeset
|
3513 } |
|
32429
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32213
diff
changeset
|
3514 Py_BEGIN_ALLOW_THREADS |
|
51220
eb2607a6516e
- Issue #5104: The socket module now raises OverflowError when 16-bit port and
Gregory P. Smith <greg@mad-scientist.com>
parents:
50786
diff
changeset
|
3515 sp = getservbyport(htons((short)port), proto); |
|
32429
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32213
diff
changeset
|
3516 Py_END_ALLOW_THREADS |
|
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32213
diff
changeset
|
3517 if (sp == NULL) { |
|
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32213
diff
changeset
|
3518 PyErr_SetString(socket_error, "port/proto not found"); |
|
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32213
diff
changeset
|
3519 return NULL; |
|
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32213
diff
changeset
|
3520 } |
|
47527
52294af4b663
This reverts r63675 based on the discussion in this thread:
Gregory P. Smith <greg@mad-scientist.com>
parents:
47294
diff
changeset
|
3521 return PyString_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
|
3522 } |
|
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32213
diff
changeset
|
3523 |
|
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32213
diff
changeset
|
3524 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
|
3525 "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
|
3526 \n\ |
|
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32213
diff
changeset
|
3527 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
|
3528 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
|
3529 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
|
3530 |
|
4782
2426a220664b
Added getprotobyname() interface.
Guido van Rossum <guido@python.org>
parents:
4651
diff
changeset
|
3531 /* Python interface to getprotobyname(name). |
|
2426a220664b
Added getprotobyname() interface.
Guido van Rossum <guido@python.org>
parents:
4651
diff
changeset
|
3532 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
|
3533 already known or not useful (like the list of aliases). */ |
|
2426a220664b
Added getprotobyname() interface.
Guido van Rossum <guido@python.org>
parents:
4651
diff
changeset
|
3534 |
|
2426a220664b
Added getprotobyname() interface.
Guido van Rossum <guido@python.org>
parents:
4651
diff
changeset
|
3535 /*ARGSUSED*/ |
|
2426a220664b
Added getprotobyname() interface.
Guido van Rossum <guido@python.org>
parents:
4651
diff
changeset
|
3536 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
|
3537 socket_getprotobyname(PyObject *self, PyObject *args) |
|
4782
2426a220664b
Added getprotobyname() interface.
Guido van Rossum <guido@python.org>
parents:
4651
diff
changeset
|
3538 { |
|
2426a220664b
Added getprotobyname() interface.
Guido van Rossum <guido@python.org>
parents:
4651
diff
changeset
|
3539 char *name; |
|
2426a220664b
Added getprotobyname() interface.
Guido van Rossum <guido@python.org>
parents:
4651
diff
changeset
|
3540 struct protoent *sp; |
|
8823
f2a4a2b60860
Changes for BeOS, QNX and long long, by Chris Herborth.
Guido van Rossum <guido@python.org>
parents:
8821
diff
changeset
|
3541 #ifdef __BEOS__ |
|
f2a4a2b60860
Changes for BeOS, QNX and long long, by Chris Herborth.
Guido van Rossum <guido@python.org>
parents:
8821
diff
changeset
|
3542 /* Not available in BeOS yet. - [cjh] */ |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
3543 PyErr_SetString(socket_error, "getprotobyname not supported"); |
|
8823
f2a4a2b60860
Changes for BeOS, QNX and long long, by Chris Herborth.
Guido van Rossum <guido@python.org>
parents:
8821
diff
changeset
|
3544 return NULL; |
|
f2a4a2b60860
Changes for BeOS, QNX and long long, by Chris Herborth.
Guido van Rossum <guido@python.org>
parents:
8821
diff
changeset
|
3545 #else |
|
12050
b90880c0e5eb
Fix all routines to use PyArg_ParseTuple(), and add ":name" to the
Guido van Rossum <guido@python.org>
parents:
11937
diff
changeset
|
3546 if (!PyArg_ParseTuple(args, "s:getprotobyname", &name)) |
|
4782
2426a220664b
Added getprotobyname() interface.
Guido van Rossum <guido@python.org>
parents:
4651
diff
changeset
|
3547 return NULL; |
|
2426a220664b
Added getprotobyname() interface.
Guido van Rossum <guido@python.org>
parents:
4651
diff
changeset
|
3548 Py_BEGIN_ALLOW_THREADS |
|
2426a220664b
Added getprotobyname() interface.
Guido van Rossum <guido@python.org>
parents:
4651
diff
changeset
|
3549 sp = getprotobyname(name); |
|
2426a220664b
Added getprotobyname() interface.
Guido van Rossum <guido@python.org>
parents:
4651
diff
changeset
|
3550 Py_END_ALLOW_THREADS |
|
2426a220664b
Added getprotobyname() interface.
Guido van Rossum <guido@python.org>
parents:
4651
diff
changeset
|
3551 if (sp == NULL) { |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
3552 PyErr_SetString(socket_error, "protocol not found"); |
|
4782
2426a220664b
Added getprotobyname() interface.
Guido van Rossum <guido@python.org>
parents:
4651
diff
changeset
|
3553 return NULL; |
|
2426a220664b
Added getprotobyname() interface.
Guido van Rossum <guido@python.org>
parents:
4651
diff
changeset
|
3554 } |
|
2426a220664b
Added getprotobyname() interface.
Guido van Rossum <guido@python.org>
parents:
4651
diff
changeset
|
3555 return PyInt_FromLong((long) sp->p_proto); |
|
8823
f2a4a2b60860
Changes for BeOS, QNX and long long, by Chris Herborth.
Guido van Rossum <guido@python.org>
parents:
8821
diff
changeset
|
3556 #endif |
|
4782
2426a220664b
Added getprotobyname() interface.
Guido van Rossum <guido@python.org>
parents:
4651
diff
changeset
|
3557 } |
|
2426a220664b
Added getprotobyname() interface.
Guido van Rossum <guido@python.org>
parents:
4651
diff
changeset
|
3558 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
3559 PyDoc_STRVAR(getprotobyname_doc, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
3560 "getprotobyname(name) -> integer\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
3561 \n\ |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
3562 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
|
3563 |
|
4782
2426a220664b
Added getprotobyname() interface.
Guido van Rossum <guido@python.org>
parents:
4651
diff
changeset
|
3564 |
|
33063
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3565 #ifdef HAVE_SOCKETPAIR |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3566 /* 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
|
3567 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
|
3568 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
|
3569 |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3570 /*ARGSUSED*/ |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3571 static PyObject * |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3572 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
|
3573 { |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3574 PySocketSockObject *s0 = NULL, *s1 = NULL; |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3575 SOCKET_T sv[2]; |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3576 int family, type = SOCK_STREAM, proto = 0; |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3577 PyObject *res = NULL; |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3578 |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3579 #if defined(AF_UNIX) |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3580 family = AF_UNIX; |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3581 #else |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3582 family = AF_INET; |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3583 #endif |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3584 if (!PyArg_ParseTuple(args, "|iii:socketpair", |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3585 &family, &type, &proto)) |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3586 return NULL; |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3587 /* Create a pair of socket fds */ |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3588 if (socketpair(family, type, proto, sv) < 0) |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3589 return set_error(); |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3590 s0 = new_sockobject(sv[0], family, type, proto); |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3591 if (s0 == NULL) |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3592 goto finally; |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3593 s1 = new_sockobject(sv[1], family, type, proto); |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3594 if (s1 == NULL) |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3595 goto finally; |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3596 res = PyTuple_Pack(2, s0, s1); |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3597 |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3598 finally: |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3599 if (res == NULL) { |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3600 if (s0 == NULL) |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3601 SOCKETCLOSE(sv[0]); |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3602 if (s1 == NULL) |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3603 SOCKETCLOSE(sv[1]); |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3604 } |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3605 Py_XDECREF(s0); |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3606 Py_XDECREF(s1); |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3607 return res; |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3608 } |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3609 |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3610 PyDoc_STRVAR(socketpair_doc, |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3611 "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
|
3612 \n\ |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3613 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
|
3614 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
|
3615 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
|
3616 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
|
3617 |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3618 #endif /* HAVE_SOCKETPAIR */ |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3619 |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
3620 |
|
1792
a584b4bbbc59
Changes to make it work and compile on NT, by Mark Hammond.
Guido van Rossum <guido@python.org>
parents:
1760
diff
changeset
|
3621 #ifndef NO_DUP |
|
1099
3dd7b8255619
socketmodule.c: added socket.fromfd(fd, family, type, [proto]);
Guido van Rossum <guido@python.org>
parents:
1094
diff
changeset
|
3622 /* Create a socket object from a numeric file description. |
|
3dd7b8255619
socketmodule.c: added socket.fromfd(fd, family, type, [proto]);
Guido van Rossum <guido@python.org>
parents:
1094
diff
changeset
|
3623 Useful e.g. if stdin is a socket. |
|
3dd7b8255619
socketmodule.c: added socket.fromfd(fd, family, type, [proto]);
Guido van Rossum <guido@python.org>
parents:
1094
diff
changeset
|
3624 Additional arguments as for socket(). */ |
|
3dd7b8255619
socketmodule.c: added socket.fromfd(fd, family, type, [proto]);
Guido van Rossum <guido@python.org>
parents:
1094
diff
changeset
|
3625 |
|
3dd7b8255619
socketmodule.c: added socket.fromfd(fd, family, type, [proto]);
Guido van Rossum <guido@python.org>
parents:
1094
diff
changeset
|
3626 /*ARGSUSED*/ |
| 1970 | 3627 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
|
3628 socket_fromfd(PyObject *self, PyObject *args) |
|
1099
3dd7b8255619
socketmodule.c: added socket.fromfd(fd, family, type, [proto]);
Guido van Rossum <guido@python.org>
parents:
1094
diff
changeset
|
3629 { |
| 1970 | 3630 PySocketSockObject *s; |
|
13171
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
3631 SOCKET_T fd; |
|
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
3632 int family, type, proto = 0; |
|
12050
b90880c0e5eb
Fix all routines to use PyArg_ParseTuple(), and add ":name" to the
Guido van Rossum <guido@python.org>
parents:
11937
diff
changeset
|
3633 if (!PyArg_ParseTuple(args, "iii|i:fromfd", |
|
b90880c0e5eb
Fix all routines to use PyArg_ParseTuple(), and add ":name" to the
Guido van Rossum <guido@python.org>
parents:
11937
diff
changeset
|
3634 &fd, &family, &type, &proto)) |
|
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
|
3635 return NULL; |
|
1132
6461dac9a9f2
* mymalloc.h: always allocate one extra byte, since some malloc's
Guido van Rossum <guido@python.org>
parents:
1099
diff
changeset
|
3636 /* Dup the fd so it and the socket can be closed independently */ |
|
6461dac9a9f2
* mymalloc.h: always allocate one extra byte, since some malloc's
Guido van Rossum <guido@python.org>
parents:
1099
diff
changeset
|
3637 fd = dup(fd); |
|
6461dac9a9f2
* mymalloc.h: always allocate one extra byte, since some malloc's
Guido van Rossum <guido@python.org>
parents:
1099
diff
changeset
|
3638 if (fd < 0) |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
3639 return set_error(); |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
3640 s = new_sockobject(fd, family, type, proto); |
| 1970 | 3641 return (PyObject *) s; |
|
1099
3dd7b8255619
socketmodule.c: added socket.fromfd(fd, family, type, [proto]);
Guido van Rossum <guido@python.org>
parents:
1094
diff
changeset
|
3642 } |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
3643 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
3644 PyDoc_STRVAR(fromfd_doc, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
3645 "fromfd(fd, family, type[, proto]) -> socket object\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
3646 \n\ |
|
37371
492044034a87
Bug #1460564: document that socket.fromfd() duplicates the given
Georg Brandl <georg@python.org>
parents:
37069
diff
changeset
|
3647 Create a socket object from a duplicate of the given\n\ |
|
492044034a87
Bug #1460564: document that socket.fromfd() duplicates the given
Georg Brandl <georg@python.org>
parents:
37069
diff
changeset
|
3648 file descriptor.\n\ |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
3649 The remaining arguments are the same as for socket()."); |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
3650 |
|
1792
a584b4bbbc59
Changes to make it work and compile on NT, by Mark Hammond.
Guido van Rossum <guido@python.org>
parents:
1760
diff
changeset
|
3651 #endif /* NO_DUP */ |
|
1099
3dd7b8255619
socketmodule.c: added socket.fromfd(fd, family, type, [proto]);
Guido van Rossum <guido@python.org>
parents:
1094
diff
changeset
|
3652 |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
3653 |
|
3673
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
3654 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
|
3655 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
|
3656 { |
|
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
3657 int x1, x2; |
|
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
3658 |
|
12050
b90880c0e5eb
Fix all routines to use PyArg_ParseTuple(), and add ":name" to the
Guido van Rossum <guido@python.org>
parents:
11937
diff
changeset
|
3659 if (!PyArg_ParseTuple(args, "i:ntohs", &x1)) { |
|
3673
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
3660 return NULL; |
|
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
3661 } |
|
40632
6efe3a4b10ac
Patch #1635058 by Mark Roberts: ensure that htonl and friends never accept or
Guido van Rossum <guido@python.org>
parents:
40475
diff
changeset
|
3662 if (x1 < 0) { |
|
6efe3a4b10ac
Patch #1635058 by Mark Roberts: ensure that htonl and friends never accept or
Guido van Rossum <guido@python.org>
parents:
40475
diff
changeset
|
3663 PyErr_SetString(PyExc_OverflowError, |
|
6efe3a4b10ac
Patch #1635058 by Mark Roberts: ensure that htonl and friends never accept or
Guido van Rossum <guido@python.org>
parents:
40475
diff
changeset
|
3664 "can't convert negative number to unsigned long"); |
|
6efe3a4b10ac
Patch #1635058 by Mark Roberts: ensure that htonl and friends never accept or
Guido van Rossum <guido@python.org>
parents:
40475
diff
changeset
|
3665 return NULL; |
|
6efe3a4b10ac
Patch #1635058 by Mark Roberts: ensure that htonl and friends never accept or
Guido van Rossum <guido@python.org>
parents:
40475
diff
changeset
|
3666 } |
|
6efe3a4b10ac
Patch #1635058 by Mark Roberts: ensure that htonl and friends never accept or
Guido van Rossum <guido@python.org>
parents:
40475
diff
changeset
|
3667 x2 = (unsigned int)ntohs((unsigned short)x1); |
|
3673
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
3668 return PyInt_FromLong(x2); |
|
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
3669 } |
|
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
3670 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
3671 PyDoc_STRVAR(ntohs_doc, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
3672 "ntohs(integer) -> integer\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
3673 \n\ |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
3674 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
|
3675 |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
3676 |
|
3673
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
3677 static PyObject * |
|
24375
89ce62126664
Extended socket.htonl and ntohl to accept longs.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24363
diff
changeset
|
3678 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
|
3679 { |
|
24375
89ce62126664
Extended socket.htonl and ntohl to accept longs.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24363
diff
changeset
|
3680 unsigned long x; |
|
89ce62126664
Extended socket.htonl and ntohl to accept longs.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24363
diff
changeset
|
3681 |
|
89ce62126664
Extended socket.htonl and ntohl to accept longs.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24363
diff
changeset
|
3682 if (PyInt_Check(arg)) { |
|
89ce62126664
Extended socket.htonl and ntohl to accept longs.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24363
diff
changeset
|
3683 x = PyInt_AS_LONG(arg); |
|
24380
672843ee4b61
Put checks for error returns in the right place.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24375
diff
changeset
|
3684 if (x == (unsigned long) -1 && PyErr_Occurred()) |
|
672843ee4b61
Put checks for error returns in the right place.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24375
diff
changeset
|
3685 return NULL; |
|
40632
6efe3a4b10ac
Patch #1635058 by Mark Roberts: ensure that htonl and friends never accept or
Guido van Rossum <guido@python.org>
parents:
40475
diff
changeset
|
3686 if ((long)x < 0) { |
|
6efe3a4b10ac
Patch #1635058 by Mark Roberts: ensure that htonl and friends never accept or
Guido van Rossum <guido@python.org>
parents:
40475
diff
changeset
|
3687 PyErr_SetString(PyExc_OverflowError, |
|
6efe3a4b10ac
Patch #1635058 by Mark Roberts: ensure that htonl and friends never accept or
Guido van Rossum <guido@python.org>
parents:
40475
diff
changeset
|
3688 "can't convert negative number to unsigned long"); |
|
6efe3a4b10ac
Patch #1635058 by Mark Roberts: ensure that htonl and friends never accept or
Guido van Rossum <guido@python.org>
parents:
40475
diff
changeset
|
3689 return NULL; |
|
6efe3a4b10ac
Patch #1635058 by Mark Roberts: ensure that htonl and friends never accept or
Guido van Rossum <guido@python.org>
parents:
40475
diff
changeset
|
3690 } |
|
24375
89ce62126664
Extended socket.htonl and ntohl to accept longs.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24363
diff
changeset
|
3691 } |
|
89ce62126664
Extended socket.htonl and ntohl to accept longs.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24363
diff
changeset
|
3692 else if (PyLong_Check(arg)) { |
|
89ce62126664
Extended socket.htonl and ntohl to accept longs.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24363
diff
changeset
|
3693 x = PyLong_AsUnsignedLong(arg); |
|
24380
672843ee4b61
Put checks for error returns in the right place.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24375
diff
changeset
|
3694 if (x == (unsigned long) -1 && PyErr_Occurred()) |
|
672843ee4b61
Put checks for error returns in the right place.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24375
diff
changeset
|
3695 return NULL; |
|
24375
89ce62126664
Extended socket.htonl and ntohl to accept longs.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24363
diff
changeset
|
3696 #if SIZEOF_LONG > 4 |
|
89ce62126664
Extended socket.htonl and ntohl to accept longs.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24363
diff
changeset
|
3697 { |
|
89ce62126664
Extended socket.htonl and ntohl to accept longs.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24363
diff
changeset
|
3698 unsigned long y; |
|
89ce62126664
Extended socket.htonl and ntohl to accept longs.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24363
diff
changeset
|
3699 /* only want the trailing 32 bits */ |
|
89ce62126664
Extended socket.htonl and ntohl to accept longs.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24363
diff
changeset
|
3700 y = x & 0xFFFFFFFFUL; |
|
89ce62126664
Extended socket.htonl and ntohl to accept longs.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24363
diff
changeset
|
3701 if (y ^ x) |
|
89ce62126664
Extended socket.htonl and ntohl to accept longs.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24363
diff
changeset
|
3702 return PyErr_Format(PyExc_OverflowError, |
|
89ce62126664
Extended socket.htonl and ntohl to accept longs.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24363
diff
changeset
|
3703 "long int larger than 32 bits"); |
|
89ce62126664
Extended socket.htonl and ntohl to accept longs.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24363
diff
changeset
|
3704 x = y; |
|
24619
b64db550972c
internal_connect(): Windows. When sock_timeout > 0 and connect() yields
Tim Peters <tim.peters@gmail.com>
parents:
24471
diff
changeset
|
3705 } |
|
24375
89ce62126664
Extended socket.htonl and ntohl to accept longs.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24363
diff
changeset
|
3706 #endif |
|
89ce62126664
Extended socket.htonl and ntohl to accept longs.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24363
diff
changeset
|
3707 } |
|
89ce62126664
Extended socket.htonl and ntohl to accept longs.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24363
diff
changeset
|
3708 else |
|
24619
b64db550972c
internal_connect(): Windows. When sock_timeout > 0 and connect() yields
Tim Peters <tim.peters@gmail.com>
parents:
24471
diff
changeset
|
3709 return PyErr_Format(PyExc_TypeError, |
|
24375
89ce62126664
Extended socket.htonl and ntohl to accept longs.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24363
diff
changeset
|
3710 "expected int/long, %s found", |
|
44350
26384b8180c7
#1629: Renamed Py_Size, Py_Type and Py_Refcnt to Py_SIZE, Py_TYPE and Py_REFCNT. Macros for b/w compatibility are available.
Christian Heimes <christian@cheimes.de>
parents:
44337
diff
changeset
|
3711 Py_TYPE(arg)->tp_name); |
|
24375
89ce62126664
Extended socket.htonl and ntohl to accept longs.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24363
diff
changeset
|
3712 if (x == (unsigned long) -1 && PyErr_Occurred()) |
|
3673
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
3713 return NULL; |
|
40632
6efe3a4b10ac
Patch #1635058 by Mark Roberts: ensure that htonl and friends never accept or
Guido van Rossum <guido@python.org>
parents:
40475
diff
changeset
|
3714 return PyLong_FromUnsignedLong(ntohl(x)); |
|
3673
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
3715 } |
|
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
3716 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
3717 PyDoc_STRVAR(ntohl_doc, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
3718 "ntohl(integer) -> integer\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
3719 \n\ |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
3720 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
|
3721 |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
3722 |
|
3673
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
3723 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
|
3724 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
|
3725 { |
|
31207
f388e83f8e43
Fix erroneus argument parsing of socket.htons() on 64bit big endian
Hye-Shik Chang <hyeshik@gmail.com>
parents:
31027
diff
changeset
|
3726 int x1, x2; |
|
3673
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
3727 |
|
12050
b90880c0e5eb
Fix all routines to use PyArg_ParseTuple(), and add ":name" to the
Guido van Rossum <guido@python.org>
parents:
11937
diff
changeset
|
3728 if (!PyArg_ParseTuple(args, "i:htons", &x1)) { |
|
3673
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
3729 return NULL; |
|
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
3730 } |
|
40632
6efe3a4b10ac
Patch #1635058 by Mark Roberts: ensure that htonl and friends never accept or
Guido van Rossum <guido@python.org>
parents:
40475
diff
changeset
|
3731 if (x1 < 0) { |
|
6efe3a4b10ac
Patch #1635058 by Mark Roberts: ensure that htonl and friends never accept or
Guido van Rossum <guido@python.org>
parents:
40475
diff
changeset
|
3732 PyErr_SetString(PyExc_OverflowError, |
|
6efe3a4b10ac
Patch #1635058 by Mark Roberts: ensure that htonl and friends never accept or
Guido van Rossum <guido@python.org>
parents:
40475
diff
changeset
|
3733 "can't convert negative number to unsigned long"); |
|
6efe3a4b10ac
Patch #1635058 by Mark Roberts: ensure that htonl and friends never accept or
Guido van Rossum <guido@python.org>
parents:
40475
diff
changeset
|
3734 return NULL; |
|
6efe3a4b10ac
Patch #1635058 by Mark Roberts: ensure that htonl and friends never accept or
Guido van Rossum <guido@python.org>
parents:
40475
diff
changeset
|
3735 } |
|
6efe3a4b10ac
Patch #1635058 by Mark Roberts: ensure that htonl and friends never accept or
Guido van Rossum <guido@python.org>
parents:
40475
diff
changeset
|
3736 x2 = (unsigned int)htons((unsigned short)x1); |
|
3673
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
3737 return PyInt_FromLong(x2); |
|
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
3738 } |
|
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
3739 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
3740 PyDoc_STRVAR(htons_doc, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
3741 "htons(integer) -> integer\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
3742 \n\ |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
3743 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
|
3744 |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
3745 |
|
3673
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
3746 static PyObject * |
|
24375
89ce62126664
Extended socket.htonl and ntohl to accept longs.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24363
diff
changeset
|
3747 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
|
3748 { |
|
24375
89ce62126664
Extended socket.htonl and ntohl to accept longs.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24363
diff
changeset
|
3749 unsigned long x; |
|
89ce62126664
Extended socket.htonl and ntohl to accept longs.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24363
diff
changeset
|
3750 |
|
89ce62126664
Extended socket.htonl and ntohl to accept longs.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24363
diff
changeset
|
3751 if (PyInt_Check(arg)) { |
|
89ce62126664
Extended socket.htonl and ntohl to accept longs.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24363
diff
changeset
|
3752 x = PyInt_AS_LONG(arg); |
|
24380
672843ee4b61
Put checks for error returns in the right place.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24375
diff
changeset
|
3753 if (x == (unsigned long) -1 && PyErr_Occurred()) |
|
672843ee4b61
Put checks for error returns in the right place.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24375
diff
changeset
|
3754 return NULL; |
|
40632
6efe3a4b10ac
Patch #1635058 by Mark Roberts: ensure that htonl and friends never accept or
Guido van Rossum <guido@python.org>
parents:
40475
diff
changeset
|
3755 if ((long)x < 0) { |
|
6efe3a4b10ac
Patch #1635058 by Mark Roberts: ensure that htonl and friends never accept or
Guido van Rossum <guido@python.org>
parents:
40475
diff
changeset
|
3756 PyErr_SetString(PyExc_OverflowError, |
|
6efe3a4b10ac
Patch #1635058 by Mark Roberts: ensure that htonl and friends never accept or
Guido van Rossum <guido@python.org>
parents:
40475
diff
changeset
|
3757 "can't convert negative number to unsigned long"); |
|
6efe3a4b10ac
Patch #1635058 by Mark Roberts: ensure that htonl and friends never accept or
Guido van Rossum <guido@python.org>
parents:
40475
diff
changeset
|
3758 return NULL; |
|
6efe3a4b10ac
Patch #1635058 by Mark Roberts: ensure that htonl and friends never accept or
Guido van Rossum <guido@python.org>
parents:
40475
diff
changeset
|
3759 } |
|
24375
89ce62126664
Extended socket.htonl and ntohl to accept longs.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24363
diff
changeset
|
3760 } |
|
89ce62126664
Extended socket.htonl and ntohl to accept longs.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24363
diff
changeset
|
3761 else if (PyLong_Check(arg)) { |
|
89ce62126664
Extended socket.htonl and ntohl to accept longs.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24363
diff
changeset
|
3762 x = PyLong_AsUnsignedLong(arg); |
|
24380
672843ee4b61
Put checks for error returns in the right place.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24375
diff
changeset
|
3763 if (x == (unsigned long) -1 && PyErr_Occurred()) |
|
672843ee4b61
Put checks for error returns in the right place.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24375
diff
changeset
|
3764 return NULL; |
|
24375
89ce62126664
Extended socket.htonl and ntohl to accept longs.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24363
diff
changeset
|
3765 #if SIZEOF_LONG > 4 |
|
89ce62126664
Extended socket.htonl and ntohl to accept longs.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24363
diff
changeset
|
3766 { |
|
89ce62126664
Extended socket.htonl and ntohl to accept longs.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24363
diff
changeset
|
3767 unsigned long y; |
|
89ce62126664
Extended socket.htonl and ntohl to accept longs.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24363
diff
changeset
|
3768 /* only want the trailing 32 bits */ |
|
89ce62126664
Extended socket.htonl and ntohl to accept longs.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24363
diff
changeset
|
3769 y = x & 0xFFFFFFFFUL; |
|
89ce62126664
Extended socket.htonl and ntohl to accept longs.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24363
diff
changeset
|
3770 if (y ^ x) |
|
89ce62126664
Extended socket.htonl and ntohl to accept longs.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24363
diff
changeset
|
3771 return PyErr_Format(PyExc_OverflowError, |
|
89ce62126664
Extended socket.htonl and ntohl to accept longs.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24363
diff
changeset
|
3772 "long int larger than 32 bits"); |
|
89ce62126664
Extended socket.htonl and ntohl to accept longs.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24363
diff
changeset
|
3773 x = y; |
|
24619
b64db550972c
internal_connect(): Windows. When sock_timeout > 0 and connect() yields
Tim Peters <tim.peters@gmail.com>
parents:
24471
diff
changeset
|
3774 } |
|
24375
89ce62126664
Extended socket.htonl and ntohl to accept longs.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24363
diff
changeset
|
3775 #endif |
|
89ce62126664
Extended socket.htonl and ntohl to accept longs.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24363
diff
changeset
|
3776 } |
|
89ce62126664
Extended socket.htonl and ntohl to accept longs.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24363
diff
changeset
|
3777 else |
|
24619
b64db550972c
internal_connect(): Windows. When sock_timeout > 0 and connect() yields
Tim Peters <tim.peters@gmail.com>
parents:
24471
diff
changeset
|
3778 return PyErr_Format(PyExc_TypeError, |
|
24375
89ce62126664
Extended socket.htonl and ntohl to accept longs.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24363
diff
changeset
|
3779 "expected int/long, %s found", |
|
44350
26384b8180c7
#1629: Renamed Py_Size, Py_Type and Py_Refcnt to Py_SIZE, Py_TYPE and Py_REFCNT. Macros for b/w compatibility are available.
Christian Heimes <christian@cheimes.de>
parents:
44337
diff
changeset
|
3780 Py_TYPE(arg)->tp_name); |
|
40632
6efe3a4b10ac
Patch #1635058 by Mark Roberts: ensure that htonl and friends never accept or
Guido van Rossum <guido@python.org>
parents:
40475
diff
changeset
|
3781 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
|
3782 } |
|
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
3783 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
3784 PyDoc_STRVAR(htonl_doc, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
3785 "htonl(integer) -> integer\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
3786 \n\ |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
3787 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
|
3788 |
|
23723
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
3789 /* 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
|
3790 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
3791 PyDoc_STRVAR(inet_aton_doc, |
|
11217
f406e78ec10b
Patch by Ben Gertzfield to add inet_aton() and inet_ntoa() calls.
Guido van Rossum <guido@python.org>
parents:
11182
diff
changeset
|
3792 "inet_aton(string) -> packed 32-bit IP representation\n\ |
|
f406e78ec10b
Patch by Ben Gertzfield to add inet_aton() and inet_ntoa() calls.
Guido van Rossum <guido@python.org>
parents:
11182
diff
changeset
|
3793 \n\ |
|
11219
2d7331f4dfe3
Port inet_ntoa and inet_aton to Windows:
Guido van Rossum <guido@python.org>
parents:
11217
diff
changeset
|
3794 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
|
3795 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
|
3796 |
|
f406e78ec10b
Patch by Ben Gertzfield to add inet_aton() and inet_ntoa() calls.
Guido van Rossum <guido@python.org>
parents:
11182
diff
changeset
|
3797 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
|
3798 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
|
3799 { |
|
11268
3fe8d13328c8
It appears that inet_aton() doesn't really exist except in libresolv;
Guido van Rossum <guido@python.org>
parents:
11219
diff
changeset
|
3800 #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
|
3801 #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
|
3802 #endif |
|
27858
9453d8cdd01e
Ummm, try to get it right this time
Neal Norwitz <nnorwitz@gmail.com>
parents:
27857
diff
changeset
|
3803 #ifdef HAVE_INET_ATON |
|
27854
81afca747caa
Addressing SF bug #643005, implement socket.inet_aton() using
Guido van Rossum <guido@python.org>
parents:
27558
diff
changeset
|
3804 struct in_addr buf; |
|
37934
ea67628ddae5
Patch 1471925 - Weak linking support for OSX
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
37853
diff
changeset
|
3805 #endif |
|
ea67628ddae5
Patch 1471925 - Weak linking support for OSX
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
37853
diff
changeset
|
3806 |
|
ea67628ddae5
Patch 1471925 - Weak linking support for OSX
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
37853
diff
changeset
|
3807 #if !defined(HAVE_INET_ATON) || defined(USE_INET_ATON_WEAKLINK) |
|
51538
edcf996f07e9
Issue #1008086: Fixes socket.inet_aton() to always return 4 bytes even
Gregory P. Smith <greg@mad-scientist.com>
parents:
51220
diff
changeset
|
3808 #if (SIZEOF_INT != 4) |
|
edcf996f07e9
Issue #1008086: Fixes socket.inet_aton() to always return 4 bytes even
Gregory P. Smith <greg@mad-scientist.com>
parents:
51220
diff
changeset
|
3809 #error "Not sure if in_addr_t exists and int is not 32-bits." |
|
edcf996f07e9
Issue #1008086: Fixes socket.inet_aton() to always return 4 bytes even
Gregory P. Smith <greg@mad-scientist.com>
parents:
51220
diff
changeset
|
3810 #endif |
|
27861
f8440bb8ede5
socket_inet_aton(): ip_addr was left undefined before use in the
Tim Peters <tim.peters@gmail.com>
parents:
27858
diff
changeset
|
3811 /* Have to use inet_addr() instead */ |
|
51538
edcf996f07e9
Issue #1008086: Fixes socket.inet_aton() to always return 4 bytes even
Gregory P. Smith <greg@mad-scientist.com>
parents:
51220
diff
changeset
|
3812 unsigned int packed_addr; |
|
27861
f8440bb8ede5
socket_inet_aton(): ip_addr was left undefined before use in the
Tim Peters <tim.peters@gmail.com>
parents:
27858
diff
changeset
|
3813 #endif |
|
f8440bb8ede5
socket_inet_aton(): ip_addr was left undefined before use in the
Tim Peters <tim.peters@gmail.com>
parents:
27858
diff
changeset
|
3814 char *ip_addr; |
|
f8440bb8ede5
socket_inet_aton(): ip_addr was left undefined before use in the
Tim Peters <tim.peters@gmail.com>
parents:
27858
diff
changeset
|
3815 |
|
f8440bb8ede5
socket_inet_aton(): ip_addr was left undefined before use in the
Tim Peters <tim.peters@gmail.com>
parents:
27858
diff
changeset
|
3816 if (!PyArg_ParseTuple(args, "s:inet_aton", &ip_addr)) |
|
11219
2d7331f4dfe3
Port inet_ntoa and inet_aton to Windows:
Guido van Rossum <guido@python.org>
parents:
11217
diff
changeset
|
3817 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
|
3818 |
|
f8440bb8ede5
socket_inet_aton(): ip_addr was left undefined before use in the
Tim Peters <tim.peters@gmail.com>
parents:
27858
diff
changeset
|
3819 |
|
f8440bb8ede5
socket_inet_aton(): ip_addr was left undefined before use in the
Tim Peters <tim.peters@gmail.com>
parents:
27858
diff
changeset
|
3820 #ifdef HAVE_INET_ATON |
|
37934
ea67628ddae5
Patch 1471925 - Weak linking support for OSX
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
37853
diff
changeset
|
3821 |
|
ea67628ddae5
Patch 1471925 - Weak linking support for OSX
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
37853
diff
changeset
|
3822 #ifdef USE_INET_ATON_WEAKLINK |
|
ea67628ddae5
Patch 1471925 - Weak linking support for OSX
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
37853
diff
changeset
|
3823 if (inet_aton != NULL) { |
|
ea67628ddae5
Patch 1471925 - Weak linking support for OSX
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
37853
diff
changeset
|
3824 #endif |
|
27854
81afca747caa
Addressing SF bug #643005, implement socket.inet_aton() using
Guido van Rossum <guido@python.org>
parents:
27558
diff
changeset
|
3825 if (inet_aton(ip_addr, &buf)) |
|
47527
52294af4b663
This reverts r63675 based on the discussion in this thread:
Gregory P. Smith <greg@mad-scientist.com>
parents:
47294
diff
changeset
|
3826 return PyString_FromStringAndSize((char *)(&buf), |
|
27854
81afca747caa
Addressing SF bug #643005, implement socket.inet_aton() using
Guido van Rossum <guido@python.org>
parents:
27558
diff
changeset
|
3827 sizeof(buf)); |
|
81afca747caa
Addressing SF bug #643005, implement socket.inet_aton() using
Guido van Rossum <guido@python.org>
parents:
27558
diff
changeset
|
3828 |
|
81afca747caa
Addressing SF bug #643005, implement socket.inet_aton() using
Guido van Rossum <guido@python.org>
parents:
27558
diff
changeset
|
3829 PyErr_SetString(socket_error, |
|
81afca747caa
Addressing SF bug #643005, implement socket.inet_aton() using
Guido van Rossum <guido@python.org>
parents:
27558
diff
changeset
|
3830 "illegal IP address string passed to inet_aton"); |
|
81afca747caa
Addressing SF bug #643005, implement socket.inet_aton() using
Guido van Rossum <guido@python.org>
parents:
27558
diff
changeset
|
3831 return NULL; |
|
81afca747caa
Addressing SF bug #643005, implement socket.inet_aton() using
Guido van Rossum <guido@python.org>
parents:
27558
diff
changeset
|
3832 |
|
37934
ea67628ddae5
Patch 1471925 - Weak linking support for OSX
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
37853
diff
changeset
|
3833 #ifdef USE_INET_ATON_WEAKLINK |
|
ea67628ddae5
Patch 1471925 - Weak linking support for OSX
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
37853
diff
changeset
|
3834 } else { |
|
ea67628ddae5
Patch 1471925 - Weak linking support for OSX
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
37853
diff
changeset
|
3835 #endif |
|
ea67628ddae5
Patch 1471925 - Weak linking support for OSX
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
37853
diff
changeset
|
3836 |
|
ea67628ddae5
Patch 1471925 - Weak linking support for OSX
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
37853
diff
changeset
|
3837 #endif |
|
ea67628ddae5
Patch 1471925 - Weak linking support for OSX
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
37853
diff
changeset
|
3838 |
|
ea67628ddae5
Patch 1471925 - Weak linking support for OSX
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
37853
diff
changeset
|
3839 #if !defined(HAVE_INET_ATON) || defined(USE_INET_ATON_WEAKLINK) |
|
ea67628ddae5
Patch 1471925 - Weak linking support for OSX
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
37853
diff
changeset
|
3840 |
|
35452
59a63b09a4c2
backport patch [ 756021 ] Allow socket.inet_aton("255.255.255.255") on Windows
Georg Brandl <georg@python.org>
parents:
33928
diff
changeset
|
3841 /* special-case this address as inet_addr might return INADDR_NONE |
|
59a63b09a4c2
backport patch [ 756021 ] Allow socket.inet_aton("255.255.255.255") on Windows
Georg Brandl <georg@python.org>
parents:
33928
diff
changeset
|
3842 * for this */ |
|
59a63b09a4c2
backport patch [ 756021 ] Allow socket.inet_aton("255.255.255.255") on Windows
Georg Brandl <georg@python.org>
parents:
33928
diff
changeset
|
3843 if (strcmp(ip_addr, "255.255.255.255") == 0) { |
|
59a63b09a4c2
backport patch [ 756021 ] Allow socket.inet_aton("255.255.255.255") on Windows
Georg Brandl <georg@python.org>
parents:
33928
diff
changeset
|
3844 packed_addr = 0xFFFFFFFF; |
|
59a63b09a4c2
backport patch [ 756021 ] Allow socket.inet_aton("255.255.255.255") on Windows
Georg Brandl <georg@python.org>
parents:
33928
diff
changeset
|
3845 } else { |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
3846 |
|
35452
59a63b09a4c2
backport patch [ 756021 ] Allow socket.inet_aton("255.255.255.255") on Windows
Georg Brandl <georg@python.org>
parents:
33928
diff
changeset
|
3847 packed_addr = inet_addr(ip_addr); |
|
59a63b09a4c2
backport patch [ 756021 ] Allow socket.inet_aton("255.255.255.255") on Windows
Georg Brandl <georg@python.org>
parents:
33928
diff
changeset
|
3848 |
|
59a63b09a4c2
backport patch [ 756021 ] Allow socket.inet_aton("255.255.255.255") on Windows
Georg Brandl <georg@python.org>
parents:
33928
diff
changeset
|
3849 if (packed_addr == INADDR_NONE) { /* invalid address */ |
|
59a63b09a4c2
backport patch [ 756021 ] Allow socket.inet_aton("255.255.255.255") on Windows
Georg Brandl <georg@python.org>
parents:
33928
diff
changeset
|
3850 PyErr_SetString(socket_error, |
|
59a63b09a4c2
backport patch [ 756021 ] Allow socket.inet_aton("255.255.255.255") on Windows
Georg Brandl <georg@python.org>
parents:
33928
diff
changeset
|
3851 "illegal IP address string passed to inet_aton"); |
|
59a63b09a4c2
backport patch [ 756021 ] Allow socket.inet_aton("255.255.255.255") on Windows
Georg Brandl <georg@python.org>
parents:
33928
diff
changeset
|
3852 return NULL; |
|
59a63b09a4c2
backport patch [ 756021 ] Allow socket.inet_aton("255.255.255.255") on Windows
Georg Brandl <georg@python.org>
parents:
33928
diff
changeset
|
3853 } |
|
11219
2d7331f4dfe3
Port inet_ntoa and inet_aton to Windows:
Guido van Rossum <guido@python.org>
parents:
11217
diff
changeset
|
3854 } |
|
47527
52294af4b663
This reverts r63675 based on the discussion in this thread:
Gregory P. Smith <greg@mad-scientist.com>
parents:
47294
diff
changeset
|
3855 return PyString_FromStringAndSize((char *) &packed_addr, |
|
11219
2d7331f4dfe3
Port inet_ntoa and inet_aton to Windows:
Guido van Rossum <guido@python.org>
parents:
11217
diff
changeset
|
3856 sizeof(packed_addr)); |
|
37934
ea67628ddae5
Patch 1471925 - Weak linking support for OSX
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
37853
diff
changeset
|
3857 |
|
ea67628ddae5
Patch 1471925 - Weak linking support for OSX
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
37853
diff
changeset
|
3858 #ifdef USE_INET_ATON_WEAKLINK |
|
ea67628ddae5
Patch 1471925 - Weak linking support for OSX
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
37853
diff
changeset
|
3859 } |
|
ea67628ddae5
Patch 1471925 - Weak linking support for OSX
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
37853
diff
changeset
|
3860 #endif |
|
ea67628ddae5
Patch 1471925 - Weak linking support for OSX
Ronald Oussoren <ronaldoussoren@mac.com>
parents:
37853
diff
changeset
|
3861 |
|
27854
81afca747caa
Addressing SF bug #643005, implement socket.inet_aton() using
Guido van Rossum <guido@python.org>
parents:
27558
diff
changeset
|
3862 #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
|
3863 } |
|
f406e78ec10b
Patch by Ben Gertzfield to add inet_aton() and inet_ntoa() calls.
Guido van Rossum <guido@python.org>
parents:
11182
diff
changeset
|
3864 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
3865 PyDoc_STRVAR(inet_ntoa_doc, |
| 11937 | 3866 "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
|
3867 \n\ |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
3868 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
|
3869 |
|
f406e78ec10b
Patch by Ben Gertzfield to add inet_aton() and inet_ntoa() calls.
Guido van Rossum <guido@python.org>
parents:
11182
diff
changeset
|
3870 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
|
3871 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
|
3872 { |
|
f406e78ec10b
Patch by Ben Gertzfield to add inet_aton() and inet_ntoa() calls.
Guido van Rossum <guido@python.org>
parents:
11182
diff
changeset
|
3873 char *packed_str; |
|
11219
2d7331f4dfe3
Port inet_ntoa and inet_aton to Windows:
Guido van Rossum <guido@python.org>
parents:
11217
diff
changeset
|
3874 int addr_len; |
|
11217
f406e78ec10b
Patch by Ben Gertzfield to add inet_aton() and inet_ntoa() calls.
Guido van Rossum <guido@python.org>
parents:
11182
diff
changeset
|
3875 struct in_addr packed_addr; |
|
f406e78ec10b
Patch by Ben Gertzfield to add inet_aton() and inet_ntoa() calls.
Guido van Rossum <guido@python.org>
parents:
11182
diff
changeset
|
3876 |
|
12050
b90880c0e5eb
Fix all routines to use PyArg_ParseTuple(), and add ":name" to the
Guido van Rossum <guido@python.org>
parents:
11937
diff
changeset
|
3877 if (!PyArg_ParseTuple(args, "s#:inet_ntoa", &packed_str, &addr_len)) { |
|
11217
f406e78ec10b
Patch by Ben Gertzfield to add inet_aton() and inet_ntoa() calls.
Guido van Rossum <guido@python.org>
parents:
11182
diff
changeset
|
3878 return NULL; |
|
f406e78ec10b
Patch by Ben Gertzfield to add inet_aton() and inet_ntoa() calls.
Guido van Rossum <guido@python.org>
parents:
11182
diff
changeset
|
3879 } |
|
16947
b25131bc6ec7
RISCOS changes by dschwertberger.
Guido van Rossum <guido@python.org>
parents:
16472
diff
changeset
|
3880 |
|
11217
f406e78ec10b
Patch by Ben Gertzfield to add inet_aton() and inet_ntoa() calls.
Guido van Rossum <guido@python.org>
parents:
11182
diff
changeset
|
3881 if (addr_len != sizeof(packed_addr)) { |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
3882 PyErr_SetString(socket_error, |
|
11217
f406e78ec10b
Patch by Ben Gertzfield to add inet_aton() and inet_ntoa() calls.
Guido van Rossum <guido@python.org>
parents:
11182
diff
changeset
|
3883 "packed IP wrong length for inet_ntoa"); |
|
f406e78ec10b
Patch by Ben Gertzfield to add inet_aton() and inet_ntoa() calls.
Guido van Rossum <guido@python.org>
parents:
11182
diff
changeset
|
3884 return NULL; |
|
f406e78ec10b
Patch by Ben Gertzfield to add inet_aton() and inet_ntoa() calls.
Guido van Rossum <guido@python.org>
parents:
11182
diff
changeset
|
3885 } |
|
f406e78ec10b
Patch by Ben Gertzfield to add inet_aton() and inet_ntoa() calls.
Guido van Rossum <guido@python.org>
parents:
11182
diff
changeset
|
3886 |
|
f406e78ec10b
Patch by Ben Gertzfield to add inet_aton() and inet_ntoa() calls.
Guido van Rossum <guido@python.org>
parents:
11182
diff
changeset
|
3887 memcpy(&packed_addr, packed_str, addr_len); |
|
f406e78ec10b
Patch by Ben Gertzfield to add inet_aton() and inet_ntoa() calls.
Guido van Rossum <guido@python.org>
parents:
11182
diff
changeset
|
3888 |
|
47527
52294af4b663
This reverts r63675 based on the discussion in this thread:
Gregory P. Smith <greg@mad-scientist.com>
parents:
47294
diff
changeset
|
3889 return PyString_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
|
3890 } |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
3891 |
|
28818
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3892 #ifdef HAVE_INET_PTON |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3893 |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3894 PyDoc_STRVAR(inet_pton_doc, |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3895 "inet_pton(af, ip) -> packed IP address string\n\ |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3896 \n\ |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3897 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
|
3898 for use with low-level network functions."); |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3899 |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3900 static PyObject * |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3901 socket_inet_pton(PyObject *self, PyObject *args) |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3902 { |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3903 int af; |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3904 char* ip; |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3905 int retval; |
|
29066
90342f395721
Patch #734231: Update RiscOS support. In particular, correct
Martin v. Löwis <martin@v.loewis.de>
parents:
29037
diff
changeset
|
3906 #ifdef ENABLE_IPV6 |
|
28818
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3907 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
|
3908 #else |
|
90342f395721
Patch #734231: Update RiscOS support. In particular, correct
Martin v. Löwis <martin@v.loewis.de>
parents:
29037
diff
changeset
|
3909 char packed[sizeof(struct in_addr)]; |
|
90342f395721
Patch #734231: Update RiscOS support. In particular, correct
Martin v. Löwis <martin@v.loewis.de>
parents:
29037
diff
changeset
|
3910 #endif |
|
28818
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3911 if (!PyArg_ParseTuple(args, "is:inet_pton", &af, &ip)) { |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3912 return NULL; |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3913 } |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3914 |
|
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
|
3915 #if !defined(ENABLE_IPV6) && defined(AF_INET6) |
|
30061
354c7ee438bf
Patch #781722: Reject AF_INET6 if IPv6 is disabled. Will backport to 2.3.
Martin v. Löwis <martin@v.loewis.de>
parents:
29929
diff
changeset
|
3916 if(af == AF_INET6) { |
|
354c7ee438bf
Patch #781722: Reject AF_INET6 if IPv6 is disabled. Will backport to 2.3.
Martin v. Löwis <martin@v.loewis.de>
parents:
29929
diff
changeset
|
3917 PyErr_SetString(socket_error, |
|
354c7ee438bf
Patch #781722: Reject AF_INET6 if IPv6 is disabled. Will backport to 2.3.
Martin v. Löwis <martin@v.loewis.de>
parents:
29929
diff
changeset
|
3918 "can't use AF_INET6, IPv6 is disabled"); |
|
354c7ee438bf
Patch #781722: Reject AF_INET6 if IPv6 is disabled. Will backport to 2.3.
Martin v. Löwis <martin@v.loewis.de>
parents:
29929
diff
changeset
|
3919 return NULL; |
|
354c7ee438bf
Patch #781722: Reject AF_INET6 if IPv6 is disabled. Will backport to 2.3.
Martin v. Löwis <martin@v.loewis.de>
parents:
29929
diff
changeset
|
3920 } |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
3921 #endif |
|
30061
354c7ee438bf
Patch #781722: Reject AF_INET6 if IPv6 is disabled. Will backport to 2.3.
Martin v. Löwis <martin@v.loewis.de>
parents:
29929
diff
changeset
|
3922 |
|
28818
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3923 retval = inet_pton(af, ip, packed); |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3924 if (retval < 0) { |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3925 PyErr_SetFromErrno(socket_error); |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3926 return NULL; |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3927 } else if (retval == 0) { |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3928 PyErr_SetString(socket_error, |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3929 "illegal IP address string passed to inet_pton"); |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3930 return NULL; |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3931 } else if (af == AF_INET) { |
|
47527
52294af4b663
This reverts r63675 based on the discussion in this thread:
Gregory P. Smith <greg@mad-scientist.com>
parents:
47294
diff
changeset
|
3932 return PyString_FromStringAndSize(packed, |
|
28818
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3933 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
|
3934 #ifdef ENABLE_IPV6 |
|
28818
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3935 } else if (af == AF_INET6) { |
|
47527
52294af4b663
This reverts r63675 based on the discussion in this thread:
Gregory P. Smith <greg@mad-scientist.com>
parents:
47294
diff
changeset
|
3936 return PyString_FromStringAndSize(packed, |
|
28818
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3937 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
|
3938 #endif |
|
28818
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3939 } else { |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3940 PyErr_SetString(socket_error, "unknown address family"); |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3941 return NULL; |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3942 } |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3943 } |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
3944 |
|
28818
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3945 PyDoc_STRVAR(inet_ntop_doc, |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3946 "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
|
3947 \n\ |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3948 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
|
3949 |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3950 static PyObject * |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3951 socket_inet_ntop(PyObject *self, PyObject *args) |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3952 { |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3953 int af; |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3954 char* packed; |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3955 int len; |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3956 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
|
3957 #ifdef ENABLE_IPV6 |
|
28818
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3958 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
|
3959 #else |
|
90342f395721
Patch #734231: Update RiscOS support. In particular, correct
Martin v. Löwis <martin@v.loewis.de>
parents:
29037
diff
changeset
|
3960 char ip[INET_ADDRSTRLEN + 1]; |
|
90342f395721
Patch #734231: Update RiscOS support. In particular, correct
Martin v. Löwis <martin@v.loewis.de>
parents:
29037
diff
changeset
|
3961 #endif |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
3962 |
|
47527
52294af4b663
This reverts r63675 based on the discussion in this thread:
Gregory P. Smith <greg@mad-scientist.com>
parents:
47294
diff
changeset
|
3963 /* Guarantee NUL-termination for PyString_FromString() below */ |
|
33928
0d4ecc31cfd8
Fix apparently trivial buffer overflow (SF bug 1060396).
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
33760
diff
changeset
|
3964 memset((void *) &ip[0], '\0', sizeof(ip)); |
|
28818
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3965 |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3966 if (!PyArg_ParseTuple(args, "is#:inet_ntop", &af, &packed, &len)) { |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3967 return NULL; |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3968 } |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3969 |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3970 if (af == AF_INET) { |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3971 if (len != sizeof(struct in_addr)) { |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3972 PyErr_SetString(PyExc_ValueError, |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3973 "invalid length of packed IP address string"); |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3974 return NULL; |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3975 } |
|
29066
90342f395721
Patch #734231: Update RiscOS support. In particular, correct
Martin v. Löwis <martin@v.loewis.de>
parents:
29037
diff
changeset
|
3976 #ifdef ENABLE_IPV6 |
|
28818
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3977 } else if (af == AF_INET6) { |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3978 if (len != sizeof(struct in6_addr)) { |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3979 PyErr_SetString(PyExc_ValueError, |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3980 "invalid length of packed IP address string"); |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3981 return NULL; |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3982 } |
|
29066
90342f395721
Patch #734231: Update RiscOS support. In particular, correct
Martin v. Löwis <martin@v.loewis.de>
parents:
29037
diff
changeset
|
3983 #endif |
|
28818
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3984 } else { |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3985 PyErr_Format(PyExc_ValueError, |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3986 "unknown address family %d", af); |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3987 return NULL; |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3988 } |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3989 |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3990 retval = inet_ntop(af, packed, ip, sizeof(ip)); |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3991 if (!retval) { |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3992 PyErr_SetFromErrno(socket_error); |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3993 return NULL; |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3994 } else { |
|
47527
52294af4b663
This reverts r63675 based on the discussion in this thread:
Gregory P. Smith <greg@mad-scientist.com>
parents:
47294
diff
changeset
|
3995 return PyString_FromString(retval); |
|
28818
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3996 } |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3997 |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3998 /* NOTREACHED */ |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
3999 PyErr_SetString(PyExc_RuntimeError, "invalid handling of inet_ntop"); |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
4000 return NULL; |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
4001 } |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
4002 |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
4003 #endif /* HAVE_INET_PTON */ |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
4004 |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4005 /* 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
|
4006 |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4007 /*ARGSUSED*/ |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4008 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
|
4009 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
|
4010 { |
|
20912
06d95b6877c4
Fix memory leaks detecting in bug report #478003.
Martin v. Löwis <martin@v.loewis.de>
parents:
20871
diff
changeset
|
4011 struct addrinfo hints, *res; |
|
06d95b6877c4
Fix memory leaks detecting in bug report #478003.
Martin v. Löwis <martin@v.loewis.de>
parents:
20871
diff
changeset
|
4012 struct addrinfo *res0 = NULL; |
|
28671
d41d8de9768f
Implement IDNA (Internationalized Domain Names in Applications).
Martin v. Löwis <martin@v.loewis.de>
parents:
28437
diff
changeset
|
4013 PyObject *hobj = NULL; |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4014 PyObject *pobj = (PyObject *)NULL; |
|
19197
01a9b7807160
Bump size of sprintf buffer. Suggested by Alex Coventry.
Martin v. Löwis <martin@v.loewis.de>
parents:
19151
diff
changeset
|
4015 char pbuf[30]; |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4016 char *hptr, *pptr; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4017 int family, socktype, protocol, flags; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4018 int error; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4019 PyObject *all = (PyObject *)NULL; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4020 PyObject *single = (PyObject *)NULL; |
|
28671
d41d8de9768f
Implement IDNA (Internationalized Domain Names in Applications).
Martin v. Löwis <martin@v.loewis.de>
parents:
28437
diff
changeset
|
4021 PyObject *idna = NULL; |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4022 |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4023 family = socktype = protocol = flags = 0; |
|
26597
7ddea4dfa519
Patch #650422: Use Posix AF_ constants instead of PF_ ones.
Martin v. Löwis <martin@v.loewis.de>
parents:
26551
diff
changeset
|
4024 family = AF_UNSPEC; |
|
28671
d41d8de9768f
Implement IDNA (Internationalized Domain Names in Applications).
Martin v. Löwis <martin@v.loewis.de>
parents:
28437
diff
changeset
|
4025 if (!PyArg_ParseTuple(args, "OO|iiii:getaddrinfo", |
|
d41d8de9768f
Implement IDNA (Internationalized Domain Names in Applications).
Martin v. Löwis <martin@v.loewis.de>
parents:
28437
diff
changeset
|
4026 &hobj, &pobj, &family, &socktype, |
|
d41d8de9768f
Implement IDNA (Internationalized Domain Names in Applications).
Martin v. Löwis <martin@v.loewis.de>
parents:
28437
diff
changeset
|
4027 &protocol, &flags)) { |
|
d41d8de9768f
Implement IDNA (Internationalized Domain Names in Applications).
Martin v. Löwis <martin@v.loewis.de>
parents:
28437
diff
changeset
|
4028 return NULL; |
|
d41d8de9768f
Implement IDNA (Internationalized Domain Names in Applications).
Martin v. Löwis <martin@v.loewis.de>
parents:
28437
diff
changeset
|
4029 } |
|
d41d8de9768f
Implement IDNA (Internationalized Domain Names in Applications).
Martin v. Löwis <martin@v.loewis.de>
parents:
28437
diff
changeset
|
4030 if (hobj == Py_None) { |
|
d41d8de9768f
Implement IDNA (Internationalized Domain Names in Applications).
Martin v. Löwis <martin@v.loewis.de>
parents:
28437
diff
changeset
|
4031 hptr = NULL; |
|
d41d8de9768f
Implement IDNA (Internationalized Domain Names in Applications).
Martin v. Löwis <martin@v.loewis.de>
parents:
28437
diff
changeset
|
4032 } else if (PyUnicode_Check(hobj)) { |
|
d41d8de9768f
Implement IDNA (Internationalized Domain Names in Applications).
Martin v. Löwis <martin@v.loewis.de>
parents:
28437
diff
changeset
|
4033 idna = PyObject_CallMethod(hobj, "encode", "s", "idna"); |
|
d41d8de9768f
Implement IDNA (Internationalized Domain Names in Applications).
Martin v. Löwis <martin@v.loewis.de>
parents:
28437
diff
changeset
|
4034 if (!idna) |
|
d41d8de9768f
Implement IDNA (Internationalized Domain Names in Applications).
Martin v. Löwis <martin@v.loewis.de>
parents:
28437
diff
changeset
|
4035 return NULL; |
|
47527
52294af4b663
This reverts r63675 based on the discussion in this thread:
Gregory P. Smith <greg@mad-scientist.com>
parents:
47294
diff
changeset
|
4036 hptr = PyString_AsString(idna); |
|
52294af4b663
This reverts r63675 based on the discussion in this thread:
Gregory P. Smith <greg@mad-scientist.com>
parents:
47294
diff
changeset
|
4037 } else if (PyString_Check(hobj)) { |
|
52294af4b663
This reverts r63675 based on the discussion in this thread:
Gregory P. Smith <greg@mad-scientist.com>
parents:
47294
diff
changeset
|
4038 hptr = PyString_AsString(hobj); |
|
28671
d41d8de9768f
Implement IDNA (Internationalized Domain Names in Applications).
Martin v. Löwis <martin@v.loewis.de>
parents:
28437
diff
changeset
|
4039 } else { |
|
38353
36cd4a4ab8f7
Support for buffer protocol for socket and struct.
Martin Blais <blais@furius.ca>
parents:
37979
diff
changeset
|
4040 PyErr_SetString(PyExc_TypeError, |
|
28671
d41d8de9768f
Implement IDNA (Internationalized Domain Names in Applications).
Martin v. Löwis <martin@v.loewis.de>
parents:
28437
diff
changeset
|
4041 "getaddrinfo() argument 1 must be string or None"); |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4042 return NULL; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4043 } |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4044 if (PyInt_Check(pobj)) { |
|
18915
510f7f6a877e
Enable PyOS_snprintf() et al. during alpha phase of 2.2.0 and
Marc-André Lemburg <mal@egenix.com>
parents:
18879
diff
changeset
|
4045 PyOS_snprintf(pbuf, sizeof(pbuf), "%ld", PyInt_AsLong(pobj)); |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4046 pptr = pbuf; |
|
47527
52294af4b663
This reverts r63675 based on the discussion in this thread:
Gregory P. Smith <greg@mad-scientist.com>
parents:
47294
diff
changeset
|
4047 } else if (PyString_Check(pobj)) { |
|
52294af4b663
This reverts r63675 based on the discussion in this thread:
Gregory P. Smith <greg@mad-scientist.com>
parents:
47294
diff
changeset
|
4048 pptr = PyString_AsString(pobj); |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4049 } else if (pobj == Py_None) { |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4050 pptr = (char *)NULL; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4051 } else { |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4052 PyErr_SetString(socket_error, "Int or String expected"); |
|
30081
7f5489184d94
Release host name memory. Fixes #783312. Will backport to 2.3.
Martin v. Löwis <martin@v.loewis.de>
parents:
30061
diff
changeset
|
4053 goto err; |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4054 } |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4055 memset(&hints, 0, sizeof(hints)); |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4056 hints.ai_family = family; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4057 hints.ai_socktype = socktype; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4058 hints.ai_protocol = protocol; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4059 hints.ai_flags = flags; |
|
29035
e1d5ca8ab7dc
[ 731644] & [ 604210 ] Release the GIL around getaddrinfo(), yet protect
Just van Rossum <just@letterror.com>
parents:
28953
diff
changeset
|
4060 Py_BEGIN_ALLOW_THREADS |
|
e1d5ca8ab7dc
[ 731644] & [ 604210 ] Release the GIL around getaddrinfo(), yet protect
Just van Rossum <just@letterror.com>
parents:
28953
diff
changeset
|
4061 ACQUIRE_GETADDRINFO_LOCK |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4062 error = getaddrinfo(hptr, pptr, &hints, &res0); |
|
29035
e1d5ca8ab7dc
[ 731644] & [ 604210 ] Release the GIL around getaddrinfo(), yet protect
Just van Rossum <just@letterror.com>
parents:
28953
diff
changeset
|
4063 Py_END_ALLOW_THREADS |
|
e1d5ca8ab7dc
[ 731644] & [ 604210 ] Release the GIL around getaddrinfo(), yet protect
Just van Rossum <just@letterror.com>
parents:
28953
diff
changeset
|
4064 RELEASE_GETADDRINFO_LOCK /* see comment in setipaddr() */ |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4065 if (error) { |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4066 set_gaierror(error); |
|
30081
7f5489184d94
Release host name memory. Fixes #783312. Will backport to 2.3.
Martin v. Löwis <martin@v.loewis.de>
parents:
30061
diff
changeset
|
4067 goto err; |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4068 } |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4069 |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4070 if ((all = PyList_New(0)) == NULL) |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4071 goto err; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4072 for (res = res0; res; res = res->ai_next) { |
|
20389
b47168178d87
PySocket_getaddrinfo(): fix two refcount bugs, both having to do with
Guido van Rossum <guido@python.org>
parents:
20378
diff
changeset
|
4073 PyObject *addr = |
|
32213
70dee2b193f7
Patch #929192: Improvements to bluetooth support.
Martin v. Löwis <martin@v.loewis.de>
parents:
32183
diff
changeset
|
4074 makesockaddr(-1, res->ai_addr, res->ai_addrlen, protocol); |
|
20389
b47168178d87
PySocket_getaddrinfo(): fix two refcount bugs, both having to do with
Guido van Rossum <guido@python.org>
parents:
20378
diff
changeset
|
4075 if (addr == NULL) |
|
b47168178d87
PySocket_getaddrinfo(): fix two refcount bugs, both having to do with
Guido van Rossum <guido@python.org>
parents:
20378
diff
changeset
|
4076 goto err; |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4077 single = Py_BuildValue("iiisO", res->ai_family, |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4078 res->ai_socktype, res->ai_protocol, |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4079 res->ai_canonname ? res->ai_canonname : "", |
|
20389
b47168178d87
PySocket_getaddrinfo(): fix two refcount bugs, both having to do with
Guido van Rossum <guido@python.org>
parents:
20378
diff
changeset
|
4080 addr); |
|
b47168178d87
PySocket_getaddrinfo(): fix two refcount bugs, both having to do with
Guido van Rossum <guido@python.org>
parents:
20378
diff
changeset
|
4081 Py_DECREF(addr); |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4082 if (single == NULL) |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4083 goto err; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4084 |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4085 if (PyList_Append(all, single)) |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4086 goto err; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4087 Py_XDECREF(single); |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4088 } |
|
28671
d41d8de9768f
Implement IDNA (Internationalized Domain Names in Applications).
Martin v. Löwis <martin@v.loewis.de>
parents:
28437
diff
changeset
|
4089 Py_XDECREF(idna); |
|
24687
8b470281645e
SF bug #592645 fix memory leak in socket.getaddrinfo
Neal Norwitz <nnorwitz@gmail.com>
parents:
24677
diff
changeset
|
4090 if (res0) |
|
8b470281645e
SF bug #592645 fix memory leak in socket.getaddrinfo
Neal Norwitz <nnorwitz@gmail.com>
parents:
24677
diff
changeset
|
4091 freeaddrinfo(res0); |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4092 return all; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4093 err: |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4094 Py_XDECREF(single); |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4095 Py_XDECREF(all); |
|
28671
d41d8de9768f
Implement IDNA (Internationalized Domain Names in Applications).
Martin v. Löwis <martin@v.loewis.de>
parents:
28437
diff
changeset
|
4096 Py_XDECREF(idna); |
|
20912
06d95b6877c4
Fix memory leaks detecting in bug report #478003.
Martin v. Löwis <martin@v.loewis.de>
parents:
20871
diff
changeset
|
4097 if (res0) |
|
06d95b6877c4
Fix memory leaks detecting in bug report #478003.
Martin v. Löwis <martin@v.loewis.de>
parents:
20871
diff
changeset
|
4098 freeaddrinfo(res0); |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4099 return (PyObject *)NULL; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4100 } |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4101 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
4102 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
|
4103 "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
|
4104 -> 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
|
4105 \n\ |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
4106 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
|
4107 |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4108 /* 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
|
4109 |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4110 /*ARGSUSED*/ |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4111 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
|
4112 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
|
4113 { |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4114 PyObject *sa = (PyObject *)NULL; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4115 int flags; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4116 char *hostp; |
|
20853
77bb2ae067c2
Correct getnameinfo refcounting and tuple parsing. Fixes #476648.
Martin v. Löwis <martin@v.loewis.de>
parents:
20756
diff
changeset
|
4117 int port, flowinfo, scope_id; |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4118 char hbuf[NI_MAXHOST], pbuf[NI_MAXSERV]; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4119 struct addrinfo hints, *res = NULL; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4120 int error; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4121 PyObject *ret = (PyObject *)NULL; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4122 |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4123 flags = flowinfo = scope_id = 0; |
|
20853
77bb2ae067c2
Correct getnameinfo refcounting and tuple parsing. Fixes #476648.
Martin v. Löwis <martin@v.loewis.de>
parents:
20756
diff
changeset
|
4124 if (!PyArg_ParseTuple(args, "Oi:getnameinfo", &sa, &flags)) |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4125 return NULL; |
|
56107
6a278e4d9f61
#6944: the argument to PyArg_ParseTuple should be a tuple, otherwise a SystemError is set. Also clean up another usage of PyArg_ParseTuple.
Georg Brandl <georg@python.org>
parents:
55627
diff
changeset
|
4126 if (!PyTuple_Check(sa)) { |
|
6a278e4d9f61
#6944: the argument to PyArg_ParseTuple should be a tuple, otherwise a SystemError is set. Also clean up another usage of PyArg_ParseTuple.
Georg Brandl <georg@python.org>
parents:
55627
diff
changeset
|
4127 PyErr_SetString(PyExc_TypeError, |
|
6a278e4d9f61
#6944: the argument to PyArg_ParseTuple should be a tuple, otherwise a SystemError is set. Also clean up another usage of PyArg_ParseTuple.
Georg Brandl <georg@python.org>
parents:
55627
diff
changeset
|
4128 "getnameinfo() argument 1 must be a tuple"); |
|
6a278e4d9f61
#6944: the argument to PyArg_ParseTuple should be a tuple, otherwise a SystemError is set. Also clean up another usage of PyArg_ParseTuple.
Georg Brandl <georg@python.org>
parents:
55627
diff
changeset
|
4129 return NULL; |
|
6a278e4d9f61
#6944: the argument to PyArg_ParseTuple should be a tuple, otherwise a SystemError is set. Also clean up another usage of PyArg_ParseTuple.
Georg Brandl <georg@python.org>
parents:
55627
diff
changeset
|
4130 } |
|
6a278e4d9f61
#6944: the argument to PyArg_ParseTuple should be a tuple, otherwise a SystemError is set. Also clean up another usage of PyArg_ParseTuple.
Georg Brandl <georg@python.org>
parents:
55627
diff
changeset
|
4131 if (!PyArg_ParseTuple(sa, "si|ii", |
|
6a278e4d9f61
#6944: the argument to PyArg_ParseTuple should be a tuple, otherwise a SystemError is set. Also clean up another usage of PyArg_ParseTuple.
Georg Brandl <georg@python.org>
parents:
55627
diff
changeset
|
4132 &hostp, &port, &flowinfo, &scope_id)) |
|
20853
77bb2ae067c2
Correct getnameinfo refcounting and tuple parsing. Fixes #476648.
Martin v. Löwis <martin@v.loewis.de>
parents:
20756
diff
changeset
|
4133 return NULL; |
|
18915
510f7f6a877e
Enable PyOS_snprintf() et al. during alpha phase of 2.2.0 and
Marc-André Lemburg <mal@egenix.com>
parents:
18879
diff
changeset
|
4134 PyOS_snprintf(pbuf, sizeof(pbuf), "%d", port); |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4135 memset(&hints, 0, sizeof(hints)); |
|
26597
7ddea4dfa519
Patch #650422: Use Posix AF_ constants instead of PF_ ones.
Martin v. Löwis <martin@v.loewis.de>
parents:
26551
diff
changeset
|
4136 hints.ai_family = AF_UNSPEC; |
|
18997
9fc4a5abb369
Add more constants. Contributed by itojun.
Martin v. Löwis <martin@v.loewis.de>
parents:
18996
diff
changeset
|
4137 hints.ai_socktype = SOCK_DGRAM; /* make numeric port happy */ |
|
29035
e1d5ca8ab7dc
[ 731644] & [ 604210 ] Release the GIL around getaddrinfo(), yet protect
Just van Rossum <just@letterror.com>
parents:
28953
diff
changeset
|
4138 Py_BEGIN_ALLOW_THREADS |
|
e1d5ca8ab7dc
[ 731644] & [ 604210 ] Release the GIL around getaddrinfo(), yet protect
Just van Rossum <just@letterror.com>
parents:
28953
diff
changeset
|
4139 ACQUIRE_GETADDRINFO_LOCK |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4140 error = getaddrinfo(hostp, pbuf, &hints, &res); |
|
29035
e1d5ca8ab7dc
[ 731644] & [ 604210 ] Release the GIL around getaddrinfo(), yet protect
Just van Rossum <just@letterror.com>
parents:
28953
diff
changeset
|
4141 Py_END_ALLOW_THREADS |
|
e1d5ca8ab7dc
[ 731644] & [ 604210 ] Release the GIL around getaddrinfo(), yet protect
Just van Rossum <just@letterror.com>
parents:
28953
diff
changeset
|
4142 RELEASE_GETADDRINFO_LOCK /* see comment in setipaddr() */ |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4143 if (error) { |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4144 set_gaierror(error); |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4145 goto fail; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4146 } |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4147 if (res->ai_next) { |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4148 PyErr_SetString(socket_error, |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4149 "sockaddr resolved to multiple addresses"); |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4150 goto fail; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4151 } |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4152 switch (res->ai_family) { |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4153 case AF_INET: |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4154 { |
|
56107
6a278e4d9f61
#6944: the argument to PyArg_ParseTuple should be a tuple, otherwise a SystemError is set. Also clean up another usage of PyArg_ParseTuple.
Georg Brandl <georg@python.org>
parents:
55627
diff
changeset
|
4155 if (PyTuple_GET_SIZE(sa) != 2) { |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4156 PyErr_SetString(socket_error, |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4157 "IPv4 sockaddr must be 2 tuple"); |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4158 goto fail; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4159 } |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4160 break; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4161 } |
|
21128
15ff504632ed
Remove INET6 define. Use ENABLE_IPV6 instead.
Martin v. Löwis <martin@v.loewis.de>
parents:
21094
diff
changeset
|
4162 #ifdef ENABLE_IPV6 |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4163 case AF_INET6: |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4164 { |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4165 struct sockaddr_in6 *sin6; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4166 sin6 = (struct sockaddr_in6 *)res->ai_addr; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4167 sin6->sin6_flowinfo = flowinfo; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4168 sin6->sin6_scope_id = scope_id; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4169 break; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4170 } |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4171 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4172 } |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4173 error = getnameinfo(res->ai_addr, res->ai_addrlen, |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4174 hbuf, sizeof(hbuf), pbuf, sizeof(pbuf), flags); |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4175 if (error) { |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4176 set_gaierror(error); |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4177 goto fail; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4178 } |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4179 ret = Py_BuildValue("ss", hbuf, pbuf); |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4180 |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4181 fail: |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4182 if (res) |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4183 freeaddrinfo(res); |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4184 return ret; |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4185 } |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4186 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
4187 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
|
4188 "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
|
4189 \n\ |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
4190 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
|
4191 |
|
24293
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4192 |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4193 /* 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
|
4194 |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4195 static PyObject * |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4196 socket_getdefaulttimeout(PyObject *self) |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4197 { |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4198 if (defaulttimeout < 0.0) { |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4199 Py_INCREF(Py_None); |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4200 return Py_None; |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4201 } |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4202 else |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4203 return PyFloat_FromDouble(defaulttimeout); |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4204 } |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4205 |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4206 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
|
4207 "getdefaulttimeout() -> timeout\n\ |
|
24293
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4208 \n\ |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4209 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
|
4210 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
|
4211 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
|
4212 |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4213 static PyObject * |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4214 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
|
4215 { |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4216 double timeout; |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4217 |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4218 if (arg == Py_None) |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4219 timeout = -1.0; |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4220 else { |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4221 timeout = PyFloat_AsDouble(arg); |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4222 if (timeout < 0.0) { |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4223 if (!PyErr_Occurred()) |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4224 PyErr_SetString(PyExc_ValueError, |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4225 "Timeout value out of range"); |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4226 return NULL; |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4227 } |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4228 } |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4229 |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4230 defaulttimeout = timeout; |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4231 |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4232 Py_INCREF(Py_None); |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4233 return Py_None; |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4234 } |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4235 |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4236 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
|
4237 "setdefaulttimeout(timeout)\n\ |
|
24293
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4238 \n\ |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4239 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
|
4240 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
|
4241 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
|
4242 |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4243 |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
4244 /* 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
|
4245 |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4246 static PyMethodDef socket_methods[] = { |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4247 {"gethostbyname", socket_gethostbyname, |
|
13817
3c0f75a2198f
Use METH_VARARGS instead of numeric constant 1 in method def. tables
Andrew M. Kuchling <amk@amk.ca>
parents:
13761
diff
changeset
|
4248 METH_VARARGS, gethostbyname_doc}, |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4249 {"gethostbyname_ex", socket_gethostbyname_ex, |
|
13817
3c0f75a2198f
Use METH_VARARGS instead of numeric constant 1 in method def. tables
Andrew M. Kuchling <amk@amk.ca>
parents:
13761
diff
changeset
|
4250 METH_VARARGS, ghbn_ex_doc}, |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4251 {"gethostbyaddr", socket_gethostbyaddr, |
|
13817
3c0f75a2198f
Use METH_VARARGS instead of numeric constant 1 in method def. tables
Andrew M. Kuchling <amk@amk.ca>
parents:
13761
diff
changeset
|
4252 METH_VARARGS, gethostbyaddr_doc}, |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4253 {"gethostname", socket_gethostname, |
|
38489
3fe3ccdf0155
Make use of METH_O and METH_NOARGS where possible.
Georg Brandl <georg@python.org>
parents:
38476
diff
changeset
|
4254 METH_NOARGS, gethostname_doc}, |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4255 {"getservbyname", socket_getservbyname, |
|
13817
3c0f75a2198f
Use METH_VARARGS instead of numeric constant 1 in method def. tables
Andrew M. Kuchling <amk@amk.ca>
parents:
13761
diff
changeset
|
4256 METH_VARARGS, getservbyname_doc}, |
|
32429
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32213
diff
changeset
|
4257 {"getservbyport", socket_getservbyport, |
|
d8abf582f893
Added socket.getservbyport(), and make its second argument and that of
Barry Warsaw <barry@python.org>
parents:
32213
diff
changeset
|
4258 METH_VARARGS, getservbyport_doc}, |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4259 {"getprotobyname", socket_getprotobyname, |
|
38489
3fe3ccdf0155
Make use of METH_O and METH_NOARGS where possible.
Georg Brandl <georg@python.org>
parents:
38476
diff
changeset
|
4260 METH_VARARGS, getprotobyname_doc}, |
|
1792
a584b4bbbc59
Changes to make it work and compile on NT, by Mark Hammond.
Guido van Rossum <guido@python.org>
parents:
1760
diff
changeset
|
4261 #ifndef NO_DUP |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4262 {"fromfd", socket_fromfd, |
|
13817
3c0f75a2198f
Use METH_VARARGS instead of numeric constant 1 in method def. tables
Andrew M. Kuchling <amk@amk.ca>
parents:
13761
diff
changeset
|
4263 METH_VARARGS, fromfd_doc}, |
|
1792
a584b4bbbc59
Changes to make it work and compile on NT, by Mark Hammond.
Guido van Rossum <guido@python.org>
parents:
1760
diff
changeset
|
4264 #endif |
|
33063
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
4265 #ifdef HAVE_SOCKETPAIR |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
4266 {"socketpair", socket_socketpair, |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
4267 METH_VARARGS, socketpair_doc}, |
|
90da70986407
Patch #1003700: Add socketpair function to socket module.
Dave Cole <djc@object-craft.com.au>
parents:
32913
diff
changeset
|
4268 #endif |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4269 {"ntohs", socket_ntohs, |
|
13817
3c0f75a2198f
Use METH_VARARGS instead of numeric constant 1 in method def. tables
Andrew M. Kuchling <amk@amk.ca>
parents:
13761
diff
changeset
|
4270 METH_VARARGS, ntohs_doc}, |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4271 {"ntohl", socket_ntohl, |
|
24375
89ce62126664
Extended socket.htonl and ntohl to accept longs.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24363
diff
changeset
|
4272 METH_O, ntohl_doc}, |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4273 {"htons", socket_htons, |
|
13817
3c0f75a2198f
Use METH_VARARGS instead of numeric constant 1 in method def. tables
Andrew M. Kuchling <amk@amk.ca>
parents:
13761
diff
changeset
|
4274 METH_VARARGS, htons_doc}, |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4275 {"htonl", socket_htonl, |
|
24375
89ce62126664
Extended socket.htonl and ntohl to accept longs.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24363
diff
changeset
|
4276 METH_O, htonl_doc}, |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4277 {"inet_aton", socket_inet_aton, |
|
13817
3c0f75a2198f
Use METH_VARARGS instead of numeric constant 1 in method def. tables
Andrew M. Kuchling <amk@amk.ca>
parents:
13761
diff
changeset
|
4278 METH_VARARGS, inet_aton_doc}, |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4279 {"inet_ntoa", socket_inet_ntoa, |
|
13817
3c0f75a2198f
Use METH_VARARGS instead of numeric constant 1 in method def. tables
Andrew M. Kuchling <amk@amk.ca>
parents:
13761
diff
changeset
|
4280 METH_VARARGS, inet_ntoa_doc}, |
|
28818
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
4281 #ifdef HAVE_INET_PTON |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
4282 {"inet_pton", socket_inet_pton, |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
4283 METH_VARARGS, inet_pton_doc}, |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
4284 {"inet_ntop", socket_inet_ntop, |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
4285 METH_VARARGS, inet_ntop_doc}, |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
4286 #endif |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4287 {"getaddrinfo", socket_getaddrinfo, |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4288 METH_VARARGS, getaddrinfo_doc}, |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4289 {"getnameinfo", socket_getnameinfo, |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4290 METH_VARARGS, getnameinfo_doc}, |
|
24303
93434bc0899d
Silence warning about getdefaulttimeout in PyMethodDef.
Guido van Rossum <guido@python.org>
parents:
24293
diff
changeset
|
4291 {"getdefaulttimeout", (PyCFunction)socket_getdefaulttimeout, |
|
24293
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4292 METH_NOARGS, getdefaulttimeout_doc}, |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4293 {"setdefaulttimeout", socket_setdefaulttimeout, |
|
640370f08e2a
Add default timeout functionality. This adds setdefaulttimeout() and
Guido van Rossum <guido@python.org>
parents:
24280
diff
changeset
|
4294 METH_O, setdefaulttimeout_doc}, |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
4295 {NULL, NULL} /* Sentinel */ |
| 294 | 4296 }; |
| 4297 | |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
4298 |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4299 #ifdef RISCOS |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4300 #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
|
4301 |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4302 static int |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4303 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
|
4304 { |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4305 _kernel_swi_regs r; |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4306 |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4307 r.r[0] = 0; |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4308 _kernel_swi(0x43380, &r, &r); |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4309 taskwindow = r.r[0]; |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4310 |
|
29066
90342f395721
Patch #734231: Update RiscOS support. In particular, correct
Martin v. Löwis <martin@v.loewis.de>
parents:
29037
diff
changeset
|
4311 return 1; |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4312 } |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4313 |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4314 #endif /* RISCOS */ |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4315 |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4316 |
|
3702
3408756ec601
changed windows test symbols; removed debug printf from sockets
Guido van Rossum <guido@python.org>
parents:
3700
diff
changeset
|
4317 #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
|
4318 #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
|
4319 |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4320 /* 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
|
4321 |
|
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
|
4322 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
|
4323 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
|
4324 { |
|
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
|
4325 WSACleanup(); |
|
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
|
4326 } |
|
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
|
4327 |
|
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
|
4328 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
|
4329 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
|
4330 { |
|
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
|
4331 WSADATA WSAData; |
|
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
|
4332 int ret; |
|
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
|
4333 char buf[100]; |
|
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
|
4334 ret = WSAStartup(0x0101, &WSAData); |
|
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
|
4335 switch (ret) { |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4336 case 0: /* No error */ |
|
29790
1037feacb54f
Fix [ 766669 ] Consistent GPF on exit
Mark Hammond <mhammond@skippinet.com.au>
parents:
29651
diff
changeset
|
4337 Py_AtExit(os_cleanup); |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4338 return 1; /* Success */ |
|
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
|
4339 case WSASYSNOTREADY: |
|
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
|
4340 PyErr_SetString(PyExc_ImportError, |
|
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
|
4341 "WSAStartup failed: network not ready"); |
|
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
|
4342 break; |
|
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
|
4343 case WSAVERNOTSUPPORTED: |
|
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
|
4344 case WSAEINVAL: |
|
23723
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
4345 PyErr_SetString( |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
4346 PyExc_ImportError, |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
4347 "WSAStartup failed: requested version not supported"); |
|
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
|
4348 break; |
|
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
|
4349 default: |
|
21073
304b34023876
sprintf -> PyOS_snprintf in some "obviously safe" cases.
Tim Peters <tim.peters@gmail.com>
parents:
21060
diff
changeset
|
4350 PyOS_snprintf(buf, sizeof(buf), |
|
304b34023876
sprintf -> PyOS_snprintf in some "obviously safe" cases.
Tim Peters <tim.peters@gmail.com>
parents:
21060
diff
changeset
|
4351 "WSAStartup failed: error code %d", ret); |
|
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
|
4352 PyErr_SetString(PyExc_ImportError, buf); |
|
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
|
4353 break; |
|
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
|
4354 } |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4355 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
|
4356 } |
|
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
|
4357 |
|
3702
3408756ec601
changed windows test symbols; removed debug printf from sockets
Guido van Rossum <guido@python.org>
parents:
3700
diff
changeset
|
4358 #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
|
4359 |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4360 |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4361 #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
|
4362 #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
|
4363 |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4364 /* Additional initialization for OS/2 */ |
|
6626
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
4365 |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
4366 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
|
4367 os_init(void) |
|
6626
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
4368 { |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4369 #ifndef PYCC_GCC |
|
23723
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
4370 char reason[64]; |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
4371 int rc = sock_init(); |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
4372 |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
4373 if (rc == 0) { |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4374 return 1; /* Success */ |
|
23723
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
4375 } |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
4376 |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
4377 PyOS_snprintf(reason, sizeof(reason), |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
4378 "OS/2 TCP/IP Error# %d", sock_errno()); |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
4379 PyErr_SetString(PyExc_ImportError, reason); |
|
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
4380 |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4381 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
|
4382 #else |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4383 /* No need to initialise sockets with GCC/EMX */ |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4384 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
|
4385 #endif |
|
6626
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
4386 } |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
4387 |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
4388 #endif /* PYOS_OS2 */ |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
4389 |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4390 |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4391 #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
|
4392 static int |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4393 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
|
4394 { |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4395 return 1; /* Success */ |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4396 } |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4397 #endif |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4398 |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4399 |
|
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
|
4400 /* 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
|
4401 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
|
4402 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
|
4403 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
|
4404 { |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4405 &sock_type, |
|
31790
29da8bdfeb4e
Make socket.sslerror a subclass of socket.error .
Brett Cannon <bcannon@gmail.com>
parents:
31541
diff
changeset
|
4406 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
|
4407 }; |
|
3957d155f8c5
Break SSL support out of _socket module and place it into a new
Marc-André Lemburg <mal@egenix.com>
parents:
21757
diff
changeset
|
4408 |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4409 |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4410 /* 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
|
4411 |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4412 This module is actually called "_socket", and there's a wrapper |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4413 "socket.py" which implements some additional functionality. On some |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4414 platforms (e.g. Windows and OS/2), socket.py also implements a |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4415 wrapper for the socket type that provides missing functionality such |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4416 as makefile(), dup() and fromfd(). The import of "_socket" may fail |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4417 with an ImportError exception if os-specific initialization fails. |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4418 On Windows, this does WINSOCK initialization. When WINSOCK is |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4419 initialized succesfully, a call to WSACleanup() is scheduled to be |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4420 made at exit time. |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4421 */ |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4422 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23818
diff
changeset
|
4423 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
|
4424 "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
|
4425 \n\ |
|
980767c6cd97
Clean up some docstrings. Some docstrings didn't show their return
Guido van Rossum <guido@python.org>
parents:
24619
diff
changeset
|
4426 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
|
4427 |
|
24471
f66b3a3509c7
Excise DL_EXPORT/DL_IMPORT from Modules/*. Required adding a prototype
Mark Hammond <mhammond@skippinet.com.au>
parents:
24411
diff
changeset
|
4428 PyMODINIT_FUNC |
|
13694
b54f11ada91e
Create a new section of pyport.h to hold all external function declarations
Thomas Wouters <thomas@python.org>
parents:
13680
diff
changeset
|
4429 init_socket(void) |
| 294 | 4430 { |
|
44642
aadcda7a4bf7
Removed unused variable
Christian Heimes <christian@cheimes.de>
parents:
44636
diff
changeset
|
4431 PyObject *m, *has_ipv6; |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4432 |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4433 if (!os_init()) |
|
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
|
4434 return; |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4435 |
|
44350
26384b8180c7
#1629: Renamed Py_Size, Py_Type and Py_Refcnt to Py_SIZE, Py_TYPE and Py_REFCNT. Macros for b/w compatibility are available.
Christian Heimes <christian@cheimes.de>
parents:
44337
diff
changeset
|
4436 Py_TYPE(&sock_type) = &PyType_Type; |
|
23723
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
4437 m = Py_InitModule3(PySocket_MODULE_NAME, |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4438 socket_methods, |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4439 socket_doc); |
|
36324
1af7f719ed28
Check return result from Py_InitModule*(). This API can fail.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36298
diff
changeset
|
4440 if (m == NULL) |
|
1af7f719ed28
Check return result from Py_InitModule*(). This API can fail.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36298
diff
changeset
|
4441 return; |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4442 |
|
43299
e8aa724da905
Change socket.error to inherit from IOError rather than being a stand
Gregory P. Smith <greg@mad-scientist.com>
parents:
42333
diff
changeset
|
4443 socket_error = PyErr_NewException("socket.error", |
|
e8aa724da905
Change socket.error to inherit from IOError rather than being a stand
Gregory P. Smith <greg@mad-scientist.com>
parents:
42333
diff
changeset
|
4444 PyExc_IOError, NULL); |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4445 if (socket_error == NULL) |
|
6367
2c29b8982643
Apply two changes, systematically:
Guido van Rossum <guido@python.org>
parents:
5697
diff
changeset
|
4446 return; |
|
31790
29da8bdfeb4e
Make socket.sslerror a subclass of socket.error .
Brett Cannon <bcannon@gmail.com>
parents:
31541
diff
changeset
|
4447 PySocketModuleAPI.error = socket_error; |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4448 Py_INCREF(socket_error); |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4449 PyModule_AddObject(m, "error", socket_error); |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4450 socket_herror = PyErr_NewException("socket.herror", |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4451 socket_error, NULL); |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4452 if (socket_herror == NULL) |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4453 return; |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4454 Py_INCREF(socket_herror); |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4455 PyModule_AddObject(m, "herror", socket_herror); |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4456 socket_gaierror = PyErr_NewException("socket.gaierror", socket_error, |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4457 NULL); |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4458 if (socket_gaierror == NULL) |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
4459 return; |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4460 Py_INCREF(socket_gaierror); |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4461 PyModule_AddObject(m, "gaierror", socket_gaierror); |
|
29651
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
4462 socket_timeout = PyErr_NewException("socket.timeout", |
|
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
4463 socket_error, NULL); |
|
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
4464 if (socket_timeout == NULL) |
|
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
4465 return; |
|
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
4466 Py_INCREF(socket_timeout); |
|
0a3751df4195
SF patch #760257: add socket.timeout exception
Raymond Hettinger <python@rcn.com>
parents:
29066
diff
changeset
|
4467 PyModule_AddObject(m, "timeout", socket_timeout); |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4468 Py_INCREF((PyObject *)&sock_type); |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4469 if (PyModule_AddObject(m, "SocketType", |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4470 (PyObject *)&sock_type) != 0) |
|
6367
2c29b8982643
Apply two changes, systematically:
Guido van Rossum <guido@python.org>
parents:
5697
diff
changeset
|
4471 return; |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4472 Py_INCREF((PyObject *)&sock_type); |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4473 if (PyModule_AddObject(m, "socket", |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
4474 (PyObject *)&sock_type) != 0) |
|
20727
abd71e89840f
Made SocketType and socket the same thing: a subclassable type whose
Guido van Rossum <guido@python.org>
parents:
20679
diff
changeset
|
4475 return; |
|
11182
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
4476 |
|
28818
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
4477 #ifdef ENABLE_IPV6 |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
4478 has_ipv6 = Py_True; |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
4479 #else |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
4480 has_ipv6 = Py_False; |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
4481 #endif |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
4482 Py_INCREF(has_ipv6); |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
4483 PyModule_AddObject(m, "has_ipv6", has_ipv6); |
|
57e61588571b
Patch by Jp Calderone:
Guido van Rossum <guido@python.org>
parents:
28671
diff
changeset
|
4484 |
|
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
|
4485 /* Export C API */ |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4486 if (PyModule_AddObject(m, PySocket_CAPI_NAME, |
|
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
|
4487 PyCObject_FromVoidPtr((void *)&PySocketModuleAPI, NULL) |
|
3957d155f8c5
Break SSL support out of _socket module and place it into a new
Marc-André Lemburg <mal@egenix.com>
parents:
21757
diff
changeset
|
4488 ) != 0) |
|
3957d155f8c5
Break SSL support out of _socket module and place it into a new
Marc-André Lemburg <mal@egenix.com>
parents:
21757
diff
changeset
|
4489 return; |
|
3957d155f8c5
Break SSL support out of _socket module and place it into a new
Marc-André Lemburg <mal@egenix.com>
parents:
21757
diff
changeset
|
4490 |
|
11182
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
4491 /* Address families (we only support AF_INET and AF_UNIX) */ |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
4492 #ifdef AF_UNSPEC |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4493 PyModule_AddIntConstant(m, "AF_UNSPEC", AF_UNSPEC); |
|
11182
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
4494 #endif |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4495 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
|
4496 #ifdef AF_INET6 |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4497 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
|
4498 #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
|
4499 #if defined(AF_UNIX) |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4500 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
|
4501 #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
|
4502 #ifdef AF_AX25 |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4503 /* Amateur Radio AX.25 */ |
|
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4504 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
|
4505 #endif |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
4506 #ifdef AF_IPX |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4507 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
|
4508 #endif |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
4509 #ifdef AF_APPLETALK |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4510 /* Appletalk DDP */ |
|
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4511 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
|
4512 #endif |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
4513 #ifdef AF_NETROM |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4514 /* Amateur radio NetROM */ |
|
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4515 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
|
4516 #endif |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
4517 #ifdef AF_BRIDGE |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4518 /* Multiprotocol bridge */ |
|
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4519 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
|
4520 #endif |
|
32764
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4521 #ifdef AF_ATMPVC |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4522 /* ATM PVCs */ |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4523 PyModule_AddIntConstant(m, "AF_ATMPVC", AF_ATMPVC); |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4524 #endif |
|
11182
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
4525 #ifdef AF_AAL5 |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4526 /* Reserved for Werner's ATM */ |
|
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4527 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
|
4528 #endif |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
4529 #ifdef AF_X25 |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4530 /* Reserved for X.25 project */ |
|
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4531 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
|
4532 #endif |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
4533 #ifdef AF_INET6 |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4534 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
|
4535 #endif |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
4536 #ifdef AF_ROSE |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4537 /* Amateur Radio X.25 PLP */ |
|
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4538 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
|
4539 #endif |
|
32764
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4540 #ifdef AF_DECnet |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4541 /* Reserved for DECnet project */ |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4542 PyModule_AddIntConstant(m, "AF_DECnet", AF_DECnet); |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4543 #endif |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4544 #ifdef AF_NETBEUI |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4545 /* Reserved for 802.2LLC project */ |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4546 PyModule_AddIntConstant(m, "AF_NETBEUI", AF_NETBEUI); |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4547 #endif |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4548 #ifdef AF_SECURITY |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4549 /* Security callback pseudo AF */ |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4550 PyModule_AddIntConstant(m, "AF_SECURITY", AF_SECURITY); |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4551 #endif |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4552 #ifdef AF_KEY |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4553 /* PF_KEY key management API */ |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4554 PyModule_AddIntConstant(m, "AF_KEY", AF_KEY); |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4555 #endif |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4556 #ifdef AF_NETLINK |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4557 /* */ |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4558 PyModule_AddIntConstant(m, "AF_NETLINK", AF_NETLINK); |
|
36286
ae4480935016
Patch #1103116: AF_NETLINK sockets basic support.
Martin v. Löwis <martin@v.loewis.de>
parents:
36090
diff
changeset
|
4559 PyModule_AddIntConstant(m, "NETLINK_ROUTE", NETLINK_ROUTE); |
|
37530
3c7ea50518be
Patch #1462080: Conditionalize some NETLINK defines.
Martin v. Löwis <martin@v.loewis.de>
parents:
37371
diff
changeset
|
4560 #ifdef NETLINK_SKIP |
|
36286
ae4480935016
Patch #1103116: AF_NETLINK sockets basic support.
Martin v. Löwis <martin@v.loewis.de>
parents:
36090
diff
changeset
|
4561 PyModule_AddIntConstant(m, "NETLINK_SKIP", NETLINK_SKIP); |
|
37530
3c7ea50518be
Patch #1462080: Conditionalize some NETLINK defines.
Martin v. Löwis <martin@v.loewis.de>
parents:
37371
diff
changeset
|
4562 #endif |
|
3c7ea50518be
Patch #1462080: Conditionalize some NETLINK defines.
Martin v. Löwis <martin@v.loewis.de>
parents:
37371
diff
changeset
|
4563 #ifdef NETLINK_W1 |
|
3c7ea50518be
Patch #1462080: Conditionalize some NETLINK defines.
Martin v. Löwis <martin@v.loewis.de>
parents:
37371
diff
changeset
|
4564 PyModule_AddIntConstant(m, "NETLINK_W1", NETLINK_W1); |
|
3c7ea50518be
Patch #1462080: Conditionalize some NETLINK defines.
Martin v. Löwis <martin@v.loewis.de>
parents:
37371
diff
changeset
|
4565 #endif |
|
36286
ae4480935016
Patch #1103116: AF_NETLINK sockets basic support.
Martin v. Löwis <martin@v.loewis.de>
parents:
36090
diff
changeset
|
4566 PyModule_AddIntConstant(m, "NETLINK_USERSOCK", NETLINK_USERSOCK); |
|
ae4480935016
Patch #1103116: AF_NETLINK sockets basic support.
Martin v. Löwis <martin@v.loewis.de>
parents:
36090
diff
changeset
|
4567 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
|
4568 #ifdef NETLINK_TCPDIAG |
|
36286
ae4480935016
Patch #1103116: AF_NETLINK sockets basic support.
Martin v. Löwis <martin@v.loewis.de>
parents:
36090
diff
changeset
|
4569 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
|
4570 #endif |
|
4d988dda6478
NETLINK_TCPDIAG and NETLINK_NFLOG aren't defined on older Linux
Guido van Rossum <guido@python.org>
parents:
36610
diff
changeset
|
4571 #ifdef NETLINK_NFLOG |
|
36286
ae4480935016
Patch #1103116: AF_NETLINK sockets basic support.
Martin v. Löwis <martin@v.loewis.de>
parents:
36090
diff
changeset
|
4572 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
|
4573 #endif |
|
36298
9eeaa33f9640
Get socketmodule to build after adding netlink support.
Neal Norwitz <nnorwitz@gmail.com>
parents:
36289
diff
changeset
|
4574 #ifdef NETLINK_XFRM |
|
36286
ae4480935016
Patch #1103116: AF_NETLINK sockets basic support.
Martin v. Löwis <martin@v.loewis.de>
parents:
36090
diff
changeset
|
4575 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
|
4576 #endif |
|
37530
3c7ea50518be
Patch #1462080: Conditionalize some NETLINK defines.
Martin v. Löwis <martin@v.loewis.de>
parents:
37371
diff
changeset
|
4577 #ifdef NETLINK_ARPD |
|
36286
ae4480935016
Patch #1103116: AF_NETLINK sockets basic support.
Martin v. Löwis <martin@v.loewis.de>
parents:
36090
diff
changeset
|
4578 PyModule_AddIntConstant(m, "NETLINK_ARPD", NETLINK_ARPD); |
|
37530
3c7ea50518be
Patch #1462080: Conditionalize some NETLINK defines.
Martin v. Löwis <martin@v.loewis.de>
parents:
37371
diff
changeset
|
4579 #endif |
|
3c7ea50518be
Patch #1462080: Conditionalize some NETLINK defines.
Martin v. Löwis <martin@v.loewis.de>
parents:
37371
diff
changeset
|
4580 #ifdef NETLINK_ROUTE6 |
|
36286
ae4480935016
Patch #1103116: AF_NETLINK sockets basic support.
Martin v. Löwis <martin@v.loewis.de>
parents:
36090
diff
changeset
|
4581 PyModule_AddIntConstant(m, "NETLINK_ROUTE6", NETLINK_ROUTE6); |
|
37530
3c7ea50518be
Patch #1462080: Conditionalize some NETLINK defines.
Martin v. Löwis <martin@v.loewis.de>
parents:
37371
diff
changeset
|
4582 #endif |
|
36286
ae4480935016
Patch #1103116: AF_NETLINK sockets basic support.
Martin v. Löwis <martin@v.loewis.de>
parents:
36090
diff
changeset
|
4583 PyModule_AddIntConstant(m, "NETLINK_IP6_FW", NETLINK_IP6_FW); |
|
40837
3bbec91c5b8f
Patch #1657276: Make NETLINK_DNRTMSG conditional.
Martin v. Löwis <martin@v.loewis.de>
parents:
40632
diff
changeset
|
4584 #ifdef NETLINK_DNRTMSG |
|
36286
ae4480935016
Patch #1103116: AF_NETLINK sockets basic support.
Martin v. Löwis <martin@v.loewis.de>
parents:
36090
diff
changeset
|
4585 PyModule_AddIntConstant(m, "NETLINK_DNRTMSG", NETLINK_DNRTMSG); |
|
40837
3bbec91c5b8f
Patch #1657276: Make NETLINK_DNRTMSG conditional.
Martin v. Löwis <martin@v.loewis.de>
parents:
40632
diff
changeset
|
4586 #endif |
|
37530
3c7ea50518be
Patch #1462080: Conditionalize some NETLINK defines.
Martin v. Löwis <martin@v.loewis.de>
parents:
37371
diff
changeset
|
4587 #ifdef NETLINK_TAPBASE |
|
36286
ae4480935016
Patch #1103116: AF_NETLINK sockets basic support.
Martin v. Löwis <martin@v.loewis.de>
parents:
36090
diff
changeset
|
4588 PyModule_AddIntConstant(m, "NETLINK_TAPBASE", NETLINK_TAPBASE); |
|
37530
3c7ea50518be
Patch #1462080: Conditionalize some NETLINK defines.
Martin v. Löwis <martin@v.loewis.de>
parents:
37371
diff
changeset
|
4589 #endif |
|
37371
492044034a87
Bug #1460564: document that socket.fromfd() duplicates the given
Georg Brandl <georg@python.org>
parents:
37069
diff
changeset
|
4590 #endif /* AF_NETLINK */ |
|
32764
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4591 #ifdef AF_ROUTE |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4592 /* Alias to emulate 4.4BSD */ |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4593 PyModule_AddIntConstant(m, "AF_ROUTE", AF_ROUTE); |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4594 #endif |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4595 #ifdef AF_ASH |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4596 /* Ash */ |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4597 PyModule_AddIntConstant(m, "AF_ASH", AF_ASH); |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4598 #endif |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4599 #ifdef AF_ECONET |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4600 /* Acorn Econet */ |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4601 PyModule_AddIntConstant(m, "AF_ECONET", AF_ECONET); |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4602 #endif |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4603 #ifdef AF_ATMSVC |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4604 /* ATM SVCs */ |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4605 PyModule_AddIntConstant(m, "AF_ATMSVC", AF_ATMSVC); |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4606 #endif |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4607 #ifdef AF_SNA |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4608 /* Linux SNA Project (nutters!) */ |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4609 PyModule_AddIntConstant(m, "AF_SNA", AF_SNA); |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4610 #endif |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4611 #ifdef AF_IRDA |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4612 /* IRDA sockets */ |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4613 PyModule_AddIntConstant(m, "AF_IRDA", AF_IRDA); |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4614 #endif |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4615 #ifdef AF_PPPOX |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4616 /* PPPoX sockets */ |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4617 PyModule_AddIntConstant(m, "AF_PPPOX", AF_PPPOX); |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4618 #endif |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4619 #ifdef AF_WANPIPE |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4620 /* Wanpipe API Sockets */ |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4621 PyModule_AddIntConstant(m, "AF_WANPIPE", AF_WANPIPE); |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4622 #endif |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4623 #ifdef AF_LLC |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4624 /* Linux LLC */ |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4625 PyModule_AddIntConstant(m, "AF_LLC", AF_LLC); |
|
ecb0c97f1e42
Patch #984654: Add more address family constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
32611
diff
changeset
|
4626 #endif |
|
31441
493707692671
Patch #874083: Bluetooth support for socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
31274
diff
changeset
|
4627 |
|
31443
afb4c9726d1a
Add FreeBSD support for bluetooth sockets.
Hye-Shik Chang <hyeshik@gmail.com>
parents:
31441
diff
changeset
|
4628 #ifdef USE_BLUETOOTH |
|
31441
493707692671
Patch #874083: Bluetooth support for socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
31274
diff
changeset
|
4629 PyModule_AddIntConstant(m, "AF_BLUETOOTH", AF_BLUETOOTH); |
|
493707692671
Patch #874083: Bluetooth support for socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
31274
diff
changeset
|
4630 PyModule_AddIntConstant(m, "BTPROTO_L2CAP", BTPROTO_L2CAP); |
|
40842
90e22fea8363
Patch #1432399: Add HCI sockets.
Martin v. Löwis <martin@v.loewis.de>
parents:
40837
diff
changeset
|
4631 PyModule_AddIntConstant(m, "BTPROTO_HCI", BTPROTO_HCI); |
|
90e22fea8363
Patch #1432399: Add HCI sockets.
Martin v. Löwis <martin@v.loewis.de>
parents:
40837
diff
changeset
|
4632 PyModule_AddIntConstant(m, "SOL_HCI", SOL_HCI); |
|
41946
c36ac67eef5b
Fix build on FreeBSD. Bluetooth HCI API in FreeBSD is quite different
Hye-Shik Chang <hyeshik@gmail.com>
parents:
41341
diff
changeset
|
4633 PyModule_AddIntConstant(m, "HCI_FILTER", HCI_FILTER); |
|
c36ac67eef5b
Fix build on FreeBSD. Bluetooth HCI API in FreeBSD is quite different
Hye-Shik Chang <hyeshik@gmail.com>
parents:
41341
diff
changeset
|
4634 #if !defined(__FreeBSD__) |
|
40842
90e22fea8363
Patch #1432399: Add HCI sockets.
Martin v. Löwis <martin@v.loewis.de>
parents:
40837
diff
changeset
|
4635 PyModule_AddIntConstant(m, "HCI_TIME_STAMP", HCI_TIME_STAMP); |
|
90e22fea8363
Patch #1432399: Add HCI sockets.
Martin v. Löwis <martin@v.loewis.de>
parents:
40837
diff
changeset
|
4636 PyModule_AddIntConstant(m, "HCI_DATA_DIR", HCI_DATA_DIR); |
|
31441
493707692671
Patch #874083: Bluetooth support for socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
31274
diff
changeset
|
4637 PyModule_AddIntConstant(m, "BTPROTO_SCO", BTPROTO_SCO); |
|
31443
afb4c9726d1a
Add FreeBSD support for bluetooth sockets.
Hye-Shik Chang <hyeshik@gmail.com>
parents:
31441
diff
changeset
|
4638 #endif |
|
31441
493707692671
Patch #874083: Bluetooth support for socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
31274
diff
changeset
|
4639 PyModule_AddIntConstant(m, "BTPROTO_RFCOMM", BTPROTO_RFCOMM); |
|
38498
8dfba087dc07
Simplify further by using AddStringConstant
Neal Norwitz <nnorwitz@gmail.com>
parents:
38489
diff
changeset
|
4640 PyModule_AddStringConstant(m, "BDADDR_ANY", "00:00:00:00:00:00"); |
|
8dfba087dc07
Simplify further by using AddStringConstant
Neal Norwitz <nnorwitz@gmail.com>
parents:
38489
diff
changeset
|
4641 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
|
4642 #endif |
|
493707692671
Patch #874083: Bluetooth support for socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
31274
diff
changeset
|
4643 |
|
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
|
4644 #ifdef HAVE_NETPACKET_PACKET_H |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4645 PyModule_AddIntConstant(m, "AF_PACKET", AF_PACKET); |
|
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4646 PyModule_AddIntConstant(m, "PF_PACKET", PF_PACKET); |
|
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4647 PyModule_AddIntConstant(m, "PACKET_HOST", PACKET_HOST); |
|
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4648 PyModule_AddIntConstant(m, "PACKET_BROADCAST", PACKET_BROADCAST); |
|
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4649 PyModule_AddIntConstant(m, "PACKET_MULTICAST", PACKET_MULTICAST); |
|
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4650 PyModule_AddIntConstant(m, "PACKET_OTHERHOST", PACKET_OTHERHOST); |
|
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4651 PyModule_AddIntConstant(m, "PACKET_OUTGOING", PACKET_OUTGOING); |
|
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4652 PyModule_AddIntConstant(m, "PACKET_LOOPBACK", PACKET_LOOPBACK); |
|
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4653 PyModule_AddIntConstant(m, "PACKET_FASTROUTE", PACKET_FASTROUTE); |
|
16947
b25131bc6ec7
RISCOS changes by dschwertberger.
Guido van Rossum <guido@python.org>
parents:
16472
diff
changeset
|
4654 #endif |
|
11182
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
4655 |
|
44561
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
4656 #ifdef HAVE_LINUX_TIPC_H |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
4657 PyModule_AddIntConstant(m, "AF_TIPC", AF_TIPC); |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
4658 |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
4659 /* for addresses */ |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
4660 PyModule_AddIntConstant(m, "TIPC_ADDR_NAMESEQ", TIPC_ADDR_NAMESEQ); |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
4661 PyModule_AddIntConstant(m, "TIPC_ADDR_NAME", TIPC_ADDR_NAME); |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
4662 PyModule_AddIntConstant(m, "TIPC_ADDR_ID", TIPC_ADDR_ID); |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
4663 |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
4664 PyModule_AddIntConstant(m, "TIPC_ZONE_SCOPE", TIPC_ZONE_SCOPE); |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
4665 PyModule_AddIntConstant(m, "TIPC_CLUSTER_SCOPE", TIPC_CLUSTER_SCOPE); |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
4666 PyModule_AddIntConstant(m, "TIPC_NODE_SCOPE", TIPC_NODE_SCOPE); |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
4667 |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
4668 /* for setsockopt() */ |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
4669 PyModule_AddIntConstant(m, "SOL_TIPC", SOL_TIPC); |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
4670 PyModule_AddIntConstant(m, "TIPC_IMPORTANCE", TIPC_IMPORTANCE); |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
4671 PyModule_AddIntConstant(m, "TIPC_SRC_DROPPABLE", TIPC_SRC_DROPPABLE); |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
4672 PyModule_AddIntConstant(m, "TIPC_DEST_DROPPABLE", |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
4673 TIPC_DEST_DROPPABLE); |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
4674 PyModule_AddIntConstant(m, "TIPC_CONN_TIMEOUT", TIPC_CONN_TIMEOUT); |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
4675 |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
4676 PyModule_AddIntConstant(m, "TIPC_LOW_IMPORTANCE", |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
4677 TIPC_LOW_IMPORTANCE); |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
4678 PyModule_AddIntConstant(m, "TIPC_MEDIUM_IMPORTANCE", |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
4679 TIPC_MEDIUM_IMPORTANCE); |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
4680 PyModule_AddIntConstant(m, "TIPC_HIGH_IMPORTANCE", |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
4681 TIPC_HIGH_IMPORTANCE); |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
4682 PyModule_AddIntConstant(m, "TIPC_CRITICAL_IMPORTANCE", |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
4683 TIPC_CRITICAL_IMPORTANCE); |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
4684 |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
4685 /* for subscriptions */ |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
4686 PyModule_AddIntConstant(m, "TIPC_SUB_PORTS", TIPC_SUB_PORTS); |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
4687 PyModule_AddIntConstant(m, "TIPC_SUB_SERVICE", TIPC_SUB_SERVICE); |
|
44636
2ad3e35c5825
Guard definition of TIPC_SUB_CANCEL with an #ifdef.
Georg Brandl <georg@python.org>
parents:
44630
diff
changeset
|
4688 #ifdef TIPC_SUB_CANCEL |
|
2ad3e35c5825
Guard definition of TIPC_SUB_CANCEL with an #ifdef.
Georg Brandl <georg@python.org>
parents:
44630
diff
changeset
|
4689 /* doesn't seem to be available everywhere */ |
|
2ad3e35c5825
Guard definition of TIPC_SUB_CANCEL with an #ifdef.
Georg Brandl <georg@python.org>
parents:
44630
diff
changeset
|
4690 PyModule_AddIntConstant(m, "TIPC_SUB_CANCEL", TIPC_SUB_CANCEL); |
|
2ad3e35c5825
Guard definition of TIPC_SUB_CANCEL with an #ifdef.
Georg Brandl <georg@python.org>
parents:
44630
diff
changeset
|
4691 #endif |
|
44561
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
4692 PyModule_AddIntConstant(m, "TIPC_WAIT_FOREVER", TIPC_WAIT_FOREVER); |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
4693 PyModule_AddIntConstant(m, "TIPC_PUBLISHED", TIPC_PUBLISHED); |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
4694 PyModule_AddIntConstant(m, "TIPC_WITHDRAWN", TIPC_WITHDRAWN); |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
4695 PyModule_AddIntConstant(m, "TIPC_SUBSCR_TIMEOUT", TIPC_SUBSCR_TIMEOUT); |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
4696 PyModule_AddIntConstant(m, "TIPC_CFG_SRV", TIPC_CFG_SRV); |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
4697 PyModule_AddIntConstant(m, "TIPC_TOP_SRV", TIPC_TOP_SRV); |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
4698 #endif |
|
ac51cfe5c5c6
Issue #1646: Make socket support TIPC. The socket module now has support
Christian Heimes <christian@cheimes.de>
parents:
44474
diff
changeset
|
4699 |
|
11182
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
4700 /* Socket types */ |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4701 PyModule_AddIntConstant(m, "SOCK_STREAM", SOCK_STREAM); |
|
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4702 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
|
4703 #ifndef __BEOS__ |
|
f2a4a2b60860
Changes for BeOS, QNX and long long, by Chris Herborth.
Guido van Rossum <guido@python.org>
parents:
8821
diff
changeset
|
4704 /* We have incomplete socket support. */ |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4705 PyModule_AddIntConstant(m, "SOCK_RAW", SOCK_RAW); |
|
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4706 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
|
4707 #if defined(SOCK_RDM) |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4708 PyModule_AddIntConstant(m, "SOCK_RDM", SOCK_RDM); |
|
8823
f2a4a2b60860
Changes for BeOS, QNX and long long, by Chris Herborth.
Guido van Rossum <guido@python.org>
parents:
8821
diff
changeset
|
4709 #endif |
|
26597
7ddea4dfa519
Patch #650422: Use Posix AF_ constants instead of PF_ ones.
Martin v. Löwis <martin@v.loewis.de>
parents:
26551
diff
changeset
|
4710 #endif |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4711 |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4712 #ifdef SO_DEBUG |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4713 PyModule_AddIntConstant(m, "SO_DEBUG", SO_DEBUG); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4714 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4715 #ifdef SO_ACCEPTCONN |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4716 PyModule_AddIntConstant(m, "SO_ACCEPTCONN", SO_ACCEPTCONN); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4717 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4718 #ifdef SO_REUSEADDR |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4719 PyModule_AddIntConstant(m, "SO_REUSEADDR", SO_REUSEADDR); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4720 #endif |
|
32578
21fd6e62cd27
[Patch #982665 ] add SO_EXCLUSIVEADDRUSE constant
Andrew M. Kuchling <amk@amk.ca>
parents:
32521
diff
changeset
|
4721 #ifdef SO_EXCLUSIVEADDRUSE |
|
21fd6e62cd27
[Patch #982665 ] add SO_EXCLUSIVEADDRUSE constant
Andrew M. Kuchling <amk@amk.ca>
parents:
32521
diff
changeset
|
4722 PyModule_AddIntConstant(m, "SO_EXCLUSIVEADDRUSE", SO_EXCLUSIVEADDRUSE); |
|
21fd6e62cd27
[Patch #982665 ] add SO_EXCLUSIVEADDRUSE constant
Andrew M. Kuchling <amk@amk.ca>
parents:
32521
diff
changeset
|
4723 #endif |
|
21fd6e62cd27
[Patch #982665 ] add SO_EXCLUSIVEADDRUSE constant
Andrew M. Kuchling <amk@amk.ca>
parents:
32521
diff
changeset
|
4724 |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4725 #ifdef SO_KEEPALIVE |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4726 PyModule_AddIntConstant(m, "SO_KEEPALIVE", SO_KEEPALIVE); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4727 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4728 #ifdef SO_DONTROUTE |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4729 PyModule_AddIntConstant(m, "SO_DONTROUTE", SO_DONTROUTE); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4730 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4731 #ifdef SO_BROADCAST |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4732 PyModule_AddIntConstant(m, "SO_BROADCAST", SO_BROADCAST); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4733 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4734 #ifdef SO_USELOOPBACK |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4735 PyModule_AddIntConstant(m, "SO_USELOOPBACK", SO_USELOOPBACK); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4736 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4737 #ifdef SO_LINGER |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4738 PyModule_AddIntConstant(m, "SO_LINGER", SO_LINGER); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4739 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4740 #ifdef SO_OOBINLINE |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4741 PyModule_AddIntConstant(m, "SO_OOBINLINE", SO_OOBINLINE); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4742 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4743 #ifdef SO_REUSEPORT |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4744 PyModule_AddIntConstant(m, "SO_REUSEPORT", SO_REUSEPORT); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4745 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4746 #ifdef SO_SNDBUF |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4747 PyModule_AddIntConstant(m, "SO_SNDBUF", SO_SNDBUF); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4748 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4749 #ifdef SO_RCVBUF |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4750 PyModule_AddIntConstant(m, "SO_RCVBUF", SO_RCVBUF); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4751 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4752 #ifdef SO_SNDLOWAT |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4753 PyModule_AddIntConstant(m, "SO_SNDLOWAT", SO_SNDLOWAT); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4754 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4755 #ifdef SO_RCVLOWAT |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4756 PyModule_AddIntConstant(m, "SO_RCVLOWAT", SO_RCVLOWAT); |
|
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 #ifdef SO_SNDTIMEO |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4759 PyModule_AddIntConstant(m, "SO_SNDTIMEO", SO_SNDTIMEO); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4760 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4761 #ifdef SO_RCVTIMEO |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4762 PyModule_AddIntConstant(m, "SO_RCVTIMEO", SO_RCVTIMEO); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4763 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4764 #ifdef SO_ERROR |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4765 PyModule_AddIntConstant(m, "SO_ERROR", SO_ERROR); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4766 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4767 #ifdef SO_TYPE |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4768 PyModule_AddIntConstant(m, "SO_TYPE", SO_TYPE); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4769 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4770 |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4771 /* Maximum number of connections for "listen" */ |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4772 #ifdef SOMAXCONN |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4773 PyModule_AddIntConstant(m, "SOMAXCONN", SOMAXCONN); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4774 #else |
|
23723
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
4775 PyModule_AddIntConstant(m, "SOMAXCONN", 5); /* Common value */ |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4776 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4777 |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4778 /* Flags for send, recv */ |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4779 #ifdef MSG_OOB |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4780 PyModule_AddIntConstant(m, "MSG_OOB", MSG_OOB); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4781 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4782 #ifdef MSG_PEEK |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4783 PyModule_AddIntConstant(m, "MSG_PEEK", MSG_PEEK); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4784 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4785 #ifdef MSG_DONTROUTE |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4786 PyModule_AddIntConstant(m, "MSG_DONTROUTE", MSG_DONTROUTE); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4787 #endif |
|
12492
1725e802e3eb
Patch by Charles G Waldman:
Guido van Rossum <guido@python.org>
parents:
12479
diff
changeset
|
4788 #ifdef MSG_DONTWAIT |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4789 PyModule_AddIntConstant(m, "MSG_DONTWAIT", MSG_DONTWAIT); |
|
12492
1725e802e3eb
Patch by Charles G Waldman:
Guido van Rossum <guido@python.org>
parents:
12479
diff
changeset
|
4790 #endif |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4791 #ifdef MSG_EOR |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4792 PyModule_AddIntConstant(m, "MSG_EOR", MSG_EOR); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4793 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4794 #ifdef MSG_TRUNC |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4795 PyModule_AddIntConstant(m, "MSG_TRUNC", MSG_TRUNC); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4796 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4797 #ifdef MSG_CTRUNC |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4798 PyModule_AddIntConstant(m, "MSG_CTRUNC", MSG_CTRUNC); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4799 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4800 #ifdef MSG_WAITALL |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4801 PyModule_AddIntConstant(m, "MSG_WAITALL", MSG_WAITALL); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4802 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4803 #ifdef MSG_BTAG |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4804 PyModule_AddIntConstant(m, "MSG_BTAG", MSG_BTAG); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4805 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4806 #ifdef MSG_ETAG |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4807 PyModule_AddIntConstant(m, "MSG_ETAG", MSG_ETAG); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4808 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4809 |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4810 /* Protocol level and numbers, usable for [gs]etsockopt */ |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4811 #ifdef SOL_SOCKET |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4812 PyModule_AddIntConstant(m, "SOL_SOCKET", SOL_SOCKET); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4813 #endif |
|
11182
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
4814 #ifdef SOL_IP |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4815 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
|
4816 #else |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4817 PyModule_AddIntConstant(m, "SOL_IP", 0); |
|
11182
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
4818 #endif |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
4819 #ifdef SOL_IPX |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4820 PyModule_AddIntConstant(m, "SOL_IPX", SOL_IPX); |
|
11182
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
4821 #endif |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
4822 #ifdef SOL_AX25 |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4823 PyModule_AddIntConstant(m, "SOL_AX25", SOL_AX25); |
|
11182
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
4824 #endif |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
4825 #ifdef SOL_ATALK |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4826 PyModule_AddIntConstant(m, "SOL_ATALK", SOL_ATALK); |
|
11182
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
4827 #endif |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
4828 #ifdef SOL_NETROM |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4829 PyModule_AddIntConstant(m, "SOL_NETROM", SOL_NETROM); |
|
11182
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
4830 #endif |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
4831 #ifdef SOL_ROSE |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4832 PyModule_AddIntConstant(m, "SOL_ROSE", SOL_ROSE); |
|
11182
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
4833 #endif |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
4834 #ifdef SOL_TCP |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4835 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
|
4836 #else |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4837 PyModule_AddIntConstant(m, "SOL_TCP", 6); |
|
11182
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
4838 #endif |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
4839 #ifdef SOL_UDP |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4840 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
|
4841 #else |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4842 PyModule_AddIntConstant(m, "SOL_UDP", 17); |
|
11182
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
4843 #endif |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4844 #ifdef IPPROTO_IP |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4845 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
|
4846 #else |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4847 PyModule_AddIntConstant(m, "IPPROTO_IP", 0); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4848 #endif |
|
18997
9fc4a5abb369
Add more constants. Contributed by itojun.
Martin v. Löwis <martin@v.loewis.de>
parents:
18996
diff
changeset
|
4849 #ifdef IPPROTO_HOPOPTS |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4850 PyModule_AddIntConstant(m, "IPPROTO_HOPOPTS", IPPROTO_HOPOPTS); |
|
18997
9fc4a5abb369
Add more constants. Contributed by itojun.
Martin v. Löwis <martin@v.loewis.de>
parents:
18996
diff
changeset
|
4851 #endif |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4852 #ifdef IPPROTO_ICMP |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4853 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
|
4854 #else |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4855 PyModule_AddIntConstant(m, "IPPROTO_ICMP", 1); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4856 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4857 #ifdef IPPROTO_IGMP |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4858 PyModule_AddIntConstant(m, "IPPROTO_IGMP", IPPROTO_IGMP); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4859 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4860 #ifdef IPPROTO_GGP |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4861 PyModule_AddIntConstant(m, "IPPROTO_GGP", IPPROTO_GGP); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4862 #endif |
|
18997
9fc4a5abb369
Add more constants. Contributed by itojun.
Martin v. Löwis <martin@v.loewis.de>
parents:
18996
diff
changeset
|
4863 #ifdef IPPROTO_IPV4 |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4864 PyModule_AddIntConstant(m, "IPPROTO_IPV4", IPPROTO_IPV4); |
|
18997
9fc4a5abb369
Add more constants. Contributed by itojun.
Martin v. Löwis <martin@v.loewis.de>
parents:
18996
diff
changeset
|
4865 #endif |
|
30630
9200712d31e7
Patch #813445: Add missing socket.IPPROTO_IPV6. Backported to 2.3.
Martin v. Löwis <martin@v.loewis.de>
parents:
30081
diff
changeset
|
4866 #ifdef IPPROTO_IPV6 |
|
9200712d31e7
Patch #813445: Add missing socket.IPPROTO_IPV6. Backported to 2.3.
Martin v. Löwis <martin@v.loewis.de>
parents:
30081
diff
changeset
|
4867 PyModule_AddIntConstant(m, "IPPROTO_IPV6", IPPROTO_IPV6); |
|
9200712d31e7
Patch #813445: Add missing socket.IPPROTO_IPV6. Backported to 2.3.
Martin v. Löwis <martin@v.loewis.de>
parents:
30081
diff
changeset
|
4868 #endif |
|
18997
9fc4a5abb369
Add more constants. Contributed by itojun.
Martin v. Löwis <martin@v.loewis.de>
parents:
18996
diff
changeset
|
4869 #ifdef IPPROTO_IPIP |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4870 PyModule_AddIntConstant(m, "IPPROTO_IPIP", IPPROTO_IPIP); |
|
18997
9fc4a5abb369
Add more constants. Contributed by itojun.
Martin v. Löwis <martin@v.loewis.de>
parents:
18996
diff
changeset
|
4871 #endif |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4872 #ifdef IPPROTO_TCP |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4873 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
|
4874 #else |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4875 PyModule_AddIntConstant(m, "IPPROTO_TCP", 6); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4876 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4877 #ifdef IPPROTO_EGP |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4878 PyModule_AddIntConstant(m, "IPPROTO_EGP", IPPROTO_EGP); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4879 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4880 #ifdef IPPROTO_PUP |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4881 PyModule_AddIntConstant(m, "IPPROTO_PUP", IPPROTO_PUP); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4882 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4883 #ifdef IPPROTO_UDP |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4884 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
|
4885 #else |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4886 PyModule_AddIntConstant(m, "IPPROTO_UDP", 17); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4887 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4888 #ifdef IPPROTO_IDP |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4889 PyModule_AddIntConstant(m, "IPPROTO_IDP", IPPROTO_IDP); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4890 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4891 #ifdef IPPROTO_HELLO |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4892 PyModule_AddIntConstant(m, "IPPROTO_HELLO", IPPROTO_HELLO); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4893 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4894 #ifdef IPPROTO_ND |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4895 PyModule_AddIntConstant(m, "IPPROTO_ND", IPPROTO_ND); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4896 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4897 #ifdef IPPROTO_TP |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4898 PyModule_AddIntConstant(m, "IPPROTO_TP", IPPROTO_TP); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4899 #endif |
|
18997
9fc4a5abb369
Add more constants. Contributed by itojun.
Martin v. Löwis <martin@v.loewis.de>
parents:
18996
diff
changeset
|
4900 #ifdef IPPROTO_IPV6 |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4901 PyModule_AddIntConstant(m, "IPPROTO_IPV6", IPPROTO_IPV6); |
|
18997
9fc4a5abb369
Add more constants. Contributed by itojun.
Martin v. Löwis <martin@v.loewis.de>
parents:
18996
diff
changeset
|
4902 #endif |
|
9fc4a5abb369
Add more constants. Contributed by itojun.
Martin v. Löwis <martin@v.loewis.de>
parents:
18996
diff
changeset
|
4903 #ifdef IPPROTO_ROUTING |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4904 PyModule_AddIntConstant(m, "IPPROTO_ROUTING", IPPROTO_ROUTING); |
|
18997
9fc4a5abb369
Add more constants. Contributed by itojun.
Martin v. Löwis <martin@v.loewis.de>
parents:
18996
diff
changeset
|
4905 #endif |
|
9fc4a5abb369
Add more constants. Contributed by itojun.
Martin v. Löwis <martin@v.loewis.de>
parents:
18996
diff
changeset
|
4906 #ifdef IPPROTO_FRAGMENT |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4907 PyModule_AddIntConstant(m, "IPPROTO_FRAGMENT", IPPROTO_FRAGMENT); |
|
18997
9fc4a5abb369
Add more constants. Contributed by itojun.
Martin v. Löwis <martin@v.loewis.de>
parents:
18996
diff
changeset
|
4908 #endif |
|
9fc4a5abb369
Add more constants. Contributed by itojun.
Martin v. Löwis <martin@v.loewis.de>
parents:
18996
diff
changeset
|
4909 #ifdef IPPROTO_RSVP |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4910 PyModule_AddIntConstant(m, "IPPROTO_RSVP", IPPROTO_RSVP); |
|
18997
9fc4a5abb369
Add more constants. Contributed by itojun.
Martin v. Löwis <martin@v.loewis.de>
parents:
18996
diff
changeset
|
4911 #endif |
|
9fc4a5abb369
Add more constants. Contributed by itojun.
Martin v. Löwis <martin@v.loewis.de>
parents:
18996
diff
changeset
|
4912 #ifdef IPPROTO_GRE |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4913 PyModule_AddIntConstant(m, "IPPROTO_GRE", IPPROTO_GRE); |
|
18997
9fc4a5abb369
Add more constants. Contributed by itojun.
Martin v. Löwis <martin@v.loewis.de>
parents:
18996
diff
changeset
|
4914 #endif |
|
9fc4a5abb369
Add more constants. Contributed by itojun.
Martin v. Löwis <martin@v.loewis.de>
parents:
18996
diff
changeset
|
4915 #ifdef IPPROTO_ESP |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4916 PyModule_AddIntConstant(m, "IPPROTO_ESP", IPPROTO_ESP); |
|
18997
9fc4a5abb369
Add more constants. Contributed by itojun.
Martin v. Löwis <martin@v.loewis.de>
parents:
18996
diff
changeset
|
4917 #endif |
|
9fc4a5abb369
Add more constants. Contributed by itojun.
Martin v. Löwis <martin@v.loewis.de>
parents:
18996
diff
changeset
|
4918 #ifdef IPPROTO_AH |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4919 PyModule_AddIntConstant(m, "IPPROTO_AH", IPPROTO_AH); |
|
18997
9fc4a5abb369
Add more constants. Contributed by itojun.
Martin v. Löwis <martin@v.loewis.de>
parents:
18996
diff
changeset
|
4920 #endif |
|
9fc4a5abb369
Add more constants. Contributed by itojun.
Martin v. Löwis <martin@v.loewis.de>
parents:
18996
diff
changeset
|
4921 #ifdef IPPROTO_MOBILE |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4922 PyModule_AddIntConstant(m, "IPPROTO_MOBILE", IPPROTO_MOBILE); |
|
18997
9fc4a5abb369
Add more constants. Contributed by itojun.
Martin v. Löwis <martin@v.loewis.de>
parents:
18996
diff
changeset
|
4923 #endif |
|
9fc4a5abb369
Add more constants. Contributed by itojun.
Martin v. Löwis <martin@v.loewis.de>
parents:
18996
diff
changeset
|
4924 #ifdef IPPROTO_ICMPV6 |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4925 PyModule_AddIntConstant(m, "IPPROTO_ICMPV6", IPPROTO_ICMPV6); |
|
18997
9fc4a5abb369
Add more constants. Contributed by itojun.
Martin v. Löwis <martin@v.loewis.de>
parents:
18996
diff
changeset
|
4926 #endif |
|
9fc4a5abb369
Add more constants. Contributed by itojun.
Martin v. Löwis <martin@v.loewis.de>
parents:
18996
diff
changeset
|
4927 #ifdef IPPROTO_NONE |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4928 PyModule_AddIntConstant(m, "IPPROTO_NONE", IPPROTO_NONE); |
|
18997
9fc4a5abb369
Add more constants. Contributed by itojun.
Martin v. Löwis <martin@v.loewis.de>
parents:
18996
diff
changeset
|
4929 #endif |
|
9fc4a5abb369
Add more constants. Contributed by itojun.
Martin v. Löwis <martin@v.loewis.de>
parents:
18996
diff
changeset
|
4930 #ifdef IPPROTO_DSTOPTS |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4931 PyModule_AddIntConstant(m, "IPPROTO_DSTOPTS", IPPROTO_DSTOPTS); |
|
18997
9fc4a5abb369
Add more constants. Contributed by itojun.
Martin v. Löwis <martin@v.loewis.de>
parents:
18996
diff
changeset
|
4932 #endif |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4933 #ifdef IPPROTO_XTP |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4934 PyModule_AddIntConstant(m, "IPPROTO_XTP", IPPROTO_XTP); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4935 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4936 #ifdef IPPROTO_EON |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4937 PyModule_AddIntConstant(m, "IPPROTO_EON", IPPROTO_EON); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4938 #endif |
|
18997
9fc4a5abb369
Add more constants. Contributed by itojun.
Martin v. Löwis <martin@v.loewis.de>
parents:
18996
diff
changeset
|
4939 #ifdef IPPROTO_PIM |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4940 PyModule_AddIntConstant(m, "IPPROTO_PIM", IPPROTO_PIM); |
|
18997
9fc4a5abb369
Add more constants. Contributed by itojun.
Martin v. Löwis <martin@v.loewis.de>
parents:
18996
diff
changeset
|
4941 #endif |
|
9fc4a5abb369
Add more constants. Contributed by itojun.
Martin v. Löwis <martin@v.loewis.de>
parents:
18996
diff
changeset
|
4942 #ifdef IPPROTO_IPCOMP |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4943 PyModule_AddIntConstant(m, "IPPROTO_IPCOMP", IPPROTO_IPCOMP); |
|
18997
9fc4a5abb369
Add more constants. Contributed by itojun.
Martin v. Löwis <martin@v.loewis.de>
parents:
18996
diff
changeset
|
4944 #endif |
|
9fc4a5abb369
Add more constants. Contributed by itojun.
Martin v. Löwis <martin@v.loewis.de>
parents:
18996
diff
changeset
|
4945 #ifdef IPPROTO_VRRP |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4946 PyModule_AddIntConstant(m, "IPPROTO_VRRP", IPPROTO_VRRP); |
|
18997
9fc4a5abb369
Add more constants. Contributed by itojun.
Martin v. Löwis <martin@v.loewis.de>
parents:
18996
diff
changeset
|
4947 #endif |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4948 #ifdef IPPROTO_BIP |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4949 PyModule_AddIntConstant(m, "IPPROTO_BIP", IPPROTO_BIP); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4950 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4951 /**/ |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4952 #ifdef IPPROTO_RAW |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4953 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
|
4954 #else |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4955 PyModule_AddIntConstant(m, "IPPROTO_RAW", 255); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4956 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4957 #ifdef IPPROTO_MAX |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4958 PyModule_AddIntConstant(m, "IPPROTO_MAX", IPPROTO_MAX); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4959 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4960 |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4961 /* Some port configuration */ |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4962 #ifdef IPPORT_RESERVED |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4963 PyModule_AddIntConstant(m, "IPPORT_RESERVED", IPPORT_RESERVED); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4964 #else |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4965 PyModule_AddIntConstant(m, "IPPORT_RESERVED", 1024); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4966 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4967 #ifdef IPPORT_USERRESERVED |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4968 PyModule_AddIntConstant(m, "IPPORT_USERRESERVED", IPPORT_USERRESERVED); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4969 #else |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4970 PyModule_AddIntConstant(m, "IPPORT_USERRESERVED", 5000); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4971 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
4972 |
| 2369 | 4973 /* Some reserved IP v.4 addresses */ |
| 4974 #ifdef INADDR_ANY | |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4975 PyModule_AddIntConstant(m, "INADDR_ANY", INADDR_ANY); |
| 2369 | 4976 #else |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4977 PyModule_AddIntConstant(m, "INADDR_ANY", 0x00000000); |
| 2369 | 4978 #endif |
| 4979 #ifdef INADDR_BROADCAST | |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4980 PyModule_AddIntConstant(m, "INADDR_BROADCAST", INADDR_BROADCAST); |
| 2369 | 4981 #else |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4982 PyModule_AddIntConstant(m, "INADDR_BROADCAST", 0xffffffff); |
| 2369 | 4983 #endif |
| 4984 #ifdef INADDR_LOOPBACK | |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4985 PyModule_AddIntConstant(m, "INADDR_LOOPBACK", INADDR_LOOPBACK); |
| 2369 | 4986 #else |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4987 PyModule_AddIntConstant(m, "INADDR_LOOPBACK", 0x7F000001); |
| 2369 | 4988 #endif |
| 4989 #ifdef INADDR_UNSPEC_GROUP | |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4990 PyModule_AddIntConstant(m, "INADDR_UNSPEC_GROUP", INADDR_UNSPEC_GROUP); |
| 2369 | 4991 #else |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4992 PyModule_AddIntConstant(m, "INADDR_UNSPEC_GROUP", 0xe0000000); |
| 2369 | 4993 #endif |
| 4994 #ifdef INADDR_ALLHOSTS_GROUP | |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4995 PyModule_AddIntConstant(m, "INADDR_ALLHOSTS_GROUP", |
|
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4996 INADDR_ALLHOSTS_GROUP); |
| 2369 | 4997 #else |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
4998 PyModule_AddIntConstant(m, "INADDR_ALLHOSTS_GROUP", 0xe0000001); |
| 2369 | 4999 #endif |
| 5000 #ifdef INADDR_MAX_LOCAL_GROUP | |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5001 PyModule_AddIntConstant(m, "INADDR_MAX_LOCAL_GROUP", |
|
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5002 INADDR_MAX_LOCAL_GROUP); |
| 2369 | 5003 #else |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5004 PyModule_AddIntConstant(m, "INADDR_MAX_LOCAL_GROUP", 0xe00000ff); |
| 2369 | 5005 #endif |
| 5006 #ifdef INADDR_NONE | |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5007 PyModule_AddIntConstant(m, "INADDR_NONE", INADDR_NONE); |
| 2369 | 5008 #else |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5009 PyModule_AddIntConstant(m, "INADDR_NONE", 0xffffffff); |
| 2369 | 5010 #endif |
| 5011 | |
|
18997
9fc4a5abb369
Add more constants. Contributed by itojun.
Martin v. Löwis <martin@v.loewis.de>
parents:
18996
diff
changeset
|
5012 /* IPv4 [gs]etsockopt options */ |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
5013 #ifdef IP_OPTIONS |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5014 PyModule_AddIntConstant(m, "IP_OPTIONS", IP_OPTIONS); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
5015 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
5016 #ifdef IP_HDRINCL |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5017 PyModule_AddIntConstant(m, "IP_HDRINCL", IP_HDRINCL); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
5018 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
5019 #ifdef IP_TOS |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5020 PyModule_AddIntConstant(m, "IP_TOS", IP_TOS); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
5021 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
5022 #ifdef IP_TTL |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5023 PyModule_AddIntConstant(m, "IP_TTL", IP_TTL); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
5024 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
5025 #ifdef IP_RECVOPTS |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5026 PyModule_AddIntConstant(m, "IP_RECVOPTS", IP_RECVOPTS); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
5027 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
5028 #ifdef IP_RECVRETOPTS |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5029 PyModule_AddIntConstant(m, "IP_RECVRETOPTS", IP_RECVRETOPTS); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
5030 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
5031 #ifdef IP_RECVDSTADDR |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5032 PyModule_AddIntConstant(m, "IP_RECVDSTADDR", IP_RECVDSTADDR); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
5033 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
5034 #ifdef IP_RETOPTS |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5035 PyModule_AddIntConstant(m, "IP_RETOPTS", IP_RETOPTS); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
5036 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
5037 #ifdef IP_MULTICAST_IF |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5038 PyModule_AddIntConstant(m, "IP_MULTICAST_IF", IP_MULTICAST_IF); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
5039 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
5040 #ifdef IP_MULTICAST_TTL |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5041 PyModule_AddIntConstant(m, "IP_MULTICAST_TTL", IP_MULTICAST_TTL); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
5042 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
5043 #ifdef IP_MULTICAST_LOOP |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5044 PyModule_AddIntConstant(m, "IP_MULTICAST_LOOP", IP_MULTICAST_LOOP); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
5045 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
5046 #ifdef IP_ADD_MEMBERSHIP |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5047 PyModule_AddIntConstant(m, "IP_ADD_MEMBERSHIP", IP_ADD_MEMBERSHIP); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
5048 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
5049 #ifdef IP_DROP_MEMBERSHIP |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5050 PyModule_AddIntConstant(m, "IP_DROP_MEMBERSHIP", IP_DROP_MEMBERSHIP); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
5051 #endif |
|
11182
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
5052 #ifdef IP_DEFAULT_MULTICAST_TTL |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5053 PyModule_AddIntConstant(m, "IP_DEFAULT_MULTICAST_TTL", |
|
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5054 IP_DEFAULT_MULTICAST_TTL); |
|
11182
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
5055 #endif |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
5056 #ifdef IP_DEFAULT_MULTICAST_LOOP |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5057 PyModule_AddIntConstant(m, "IP_DEFAULT_MULTICAST_LOOP", |
|
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5058 IP_DEFAULT_MULTICAST_LOOP); |
|
11182
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
5059 #endif |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
5060 #ifdef IP_MAX_MEMBERSHIPS |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5061 PyModule_AddIntConstant(m, "IP_MAX_MEMBERSHIPS", IP_MAX_MEMBERSHIPS); |
|
11182
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
5062 #endif |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
5063 |
|
18997
9fc4a5abb369
Add more constants. Contributed by itojun.
Martin v. Löwis <martin@v.loewis.de>
parents:
18996
diff
changeset
|
5064 /* IPv6 [gs]etsockopt options, defined in RFC2553 */ |
|
9fc4a5abb369
Add more constants. Contributed by itojun.
Martin v. Löwis <martin@v.loewis.de>
parents:
18996
diff
changeset
|
5065 #ifdef IPV6_JOIN_GROUP |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5066 PyModule_AddIntConstant(m, "IPV6_JOIN_GROUP", IPV6_JOIN_GROUP); |
|
18997
9fc4a5abb369
Add more constants. Contributed by itojun.
Martin v. Löwis <martin@v.loewis.de>
parents:
18996
diff
changeset
|
5067 #endif |
|
9fc4a5abb369
Add more constants. Contributed by itojun.
Martin v. Löwis <martin@v.loewis.de>
parents:
18996
diff
changeset
|
5068 #ifdef IPV6_LEAVE_GROUP |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5069 PyModule_AddIntConstant(m, "IPV6_LEAVE_GROUP", IPV6_LEAVE_GROUP); |
|
18997
9fc4a5abb369
Add more constants. Contributed by itojun.
Martin v. Löwis <martin@v.loewis.de>
parents:
18996
diff
changeset
|
5070 #endif |
|
9fc4a5abb369
Add more constants. Contributed by itojun.
Martin v. Löwis <martin@v.loewis.de>
parents:
18996
diff
changeset
|
5071 #ifdef IPV6_MULTICAST_HOPS |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5072 PyModule_AddIntConstant(m, "IPV6_MULTICAST_HOPS", IPV6_MULTICAST_HOPS); |
|
18997
9fc4a5abb369
Add more constants. Contributed by itojun.
Martin v. Löwis <martin@v.loewis.de>
parents:
18996
diff
changeset
|
5073 #endif |
|
9fc4a5abb369
Add more constants. Contributed by itojun.
Martin v. Löwis <martin@v.loewis.de>
parents:
18996
diff
changeset
|
5074 #ifdef IPV6_MULTICAST_IF |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5075 PyModule_AddIntConstant(m, "IPV6_MULTICAST_IF", IPV6_MULTICAST_IF); |
|
18997
9fc4a5abb369
Add more constants. Contributed by itojun.
Martin v. Löwis <martin@v.loewis.de>
parents:
18996
diff
changeset
|
5076 #endif |
|
9fc4a5abb369
Add more constants. Contributed by itojun.
Martin v. Löwis <martin@v.loewis.de>
parents:
18996
diff
changeset
|
5077 #ifdef IPV6_MULTICAST_LOOP |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5078 PyModule_AddIntConstant(m, "IPV6_MULTICAST_LOOP", IPV6_MULTICAST_LOOP); |
|
18997
9fc4a5abb369
Add more constants. Contributed by itojun.
Martin v. Löwis <martin@v.loewis.de>
parents:
18996
diff
changeset
|
5079 #endif |
|
9fc4a5abb369
Add more constants. Contributed by itojun.
Martin v. Löwis <martin@v.loewis.de>
parents:
18996
diff
changeset
|
5080 #ifdef IPV6_UNICAST_HOPS |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5081 PyModule_AddIntConstant(m, "IPV6_UNICAST_HOPS", IPV6_UNICAST_HOPS); |
|
18997
9fc4a5abb369
Add more constants. Contributed by itojun.
Martin v. Löwis <martin@v.loewis.de>
parents:
18996
diff
changeset
|
5082 #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
|
5083 /* Additional IPV6 socket options, defined in RFC 3493 */ |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
5084 #ifdef IPV6_V6ONLY |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
5085 PyModule_AddIntConstant(m, "IPV6_V6ONLY", IPV6_V6ONLY); |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
5086 #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
|
5087 /* Advanced IPV6 socket options, from RFC 3542 */ |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
5088 #ifdef IPV6_CHECKSUM |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
5089 PyModule_AddIntConstant(m, "IPV6_CHECKSUM", IPV6_CHECKSUM); |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
5090 #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
|
5091 #ifdef IPV6_DONTFRAG |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
5092 PyModule_AddIntConstant(m, "IPV6_DONTFRAG", IPV6_DONTFRAG); |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
5093 #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
|
5094 #ifdef IPV6_DSTOPTS |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
5095 PyModule_AddIntConstant(m, "IPV6_DSTOPTS", IPV6_DSTOPTS); |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
5096 #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
|
5097 #ifdef IPV6_HOPLIMIT |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
5098 PyModule_AddIntConstant(m, "IPV6_HOPLIMIT", IPV6_HOPLIMIT); |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
5099 #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
|
5100 #ifdef IPV6_HOPOPTS |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
5101 PyModule_AddIntConstant(m, "IPV6_HOPOPTS", IPV6_HOPOPTS); |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
5102 #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
|
5103 #ifdef IPV6_NEXTHOP |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
5104 PyModule_AddIntConstant(m, "IPV6_NEXTHOP", IPV6_NEXTHOP); |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
5105 #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
|
5106 #ifdef IPV6_PATHMTU |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
5107 PyModule_AddIntConstant(m, "IPV6_PATHMTU", IPV6_PATHMTU); |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
5108 #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
|
5109 #ifdef IPV6_PKTINFO |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
5110 PyModule_AddIntConstant(m, "IPV6_PKTINFO", IPV6_PKTINFO); |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
5111 #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
|
5112 #ifdef IPV6_RECVDSTOPTS |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
5113 PyModule_AddIntConstant(m, "IPV6_RECVDSTOPTS", IPV6_RECVDSTOPTS); |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
5114 #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
|
5115 #ifdef IPV6_RECVHOPLIMIT |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
5116 PyModule_AddIntConstant(m, "IPV6_RECVHOPLIMIT", IPV6_RECVHOPLIMIT); |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
5117 #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
|
5118 #ifdef IPV6_RECVHOPOPTS |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
5119 PyModule_AddIntConstant(m, "IPV6_RECVHOPOPTS", IPV6_RECVHOPOPTS); |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
5120 #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
|
5121 #ifdef IPV6_RECVPKTINFO |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
5122 PyModule_AddIntConstant(m, "IPV6_RECVPKTINFO", IPV6_RECVPKTINFO); |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
5123 #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
|
5124 #ifdef IPV6_RECVRTHDR |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
5125 PyModule_AddIntConstant(m, "IPV6_RECVRTHDR", IPV6_RECVRTHDR); |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
5126 #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
|
5127 #ifdef IPV6_RECVTCLASS |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
5128 PyModule_AddIntConstant(m, "IPV6_RECVTCLASS", IPV6_RECVTCLASS); |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
5129 #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
|
5130 #ifdef IPV6_RTHDR |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
5131 PyModule_AddIntConstant(m, "IPV6_RTHDR", IPV6_RTHDR); |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
5132 #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
|
5133 #ifdef IPV6_RTHDRDSTOPTS |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
5134 PyModule_AddIntConstant(m, "IPV6_RTHDRDSTOPTS", IPV6_RTHDRDSTOPTS); |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
5135 #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
|
5136 #ifdef IPV6_RTHDR_TYPE_0 |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
5137 PyModule_AddIntConstant(m, "IPV6_RTHDR_TYPE_0", IPV6_RTHDR_TYPE_0); |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
5138 #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
|
5139 #ifdef IPV6_RECVPATHMTU |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
5140 PyModule_AddIntConstant(m, "IPV6_RECVPATHMTU", IPV6_RECVPATHMTU); |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
5141 #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
|
5142 #ifdef IPV6_TCLASS |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
5143 PyModule_AddIntConstant(m, "IPV6_TCLASS", IPV6_TCLASS); |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
5144 #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
|
5145 #ifdef IPV6_USE_MIN_MTU |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
5146 PyModule_AddIntConstant(m, "IPV6_USE_MIN_MTU", IPV6_USE_MIN_MTU); |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
5147 #endif |
|
18997
9fc4a5abb369
Add more constants. Contributed by itojun.
Martin v. Löwis <martin@v.loewis.de>
parents:
18996
diff
changeset
|
5148 |
|
11182
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
5149 /* TCP options */ |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
5150 #ifdef TCP_NODELAY |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5151 PyModule_AddIntConstant(m, "TCP_NODELAY", TCP_NODELAY); |
|
11182
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
5152 #endif |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
5153 #ifdef TCP_MAXSEG |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5154 PyModule_AddIntConstant(m, "TCP_MAXSEG", TCP_MAXSEG); |
|
11182
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
5155 #endif |
|
21526
349d66cd874c
Add TCP socket options from glibc 2.2.4. Fixes #495680.
Martin v. Löwis <martin@v.loewis.de>
parents:
21128
diff
changeset
|
5156 #ifdef TCP_CORK |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5157 PyModule_AddIntConstant(m, "TCP_CORK", TCP_CORK); |
|
21526
349d66cd874c
Add TCP socket options from glibc 2.2.4. Fixes #495680.
Martin v. Löwis <martin@v.loewis.de>
parents:
21128
diff
changeset
|
5158 #endif |
|
349d66cd874c
Add TCP socket options from glibc 2.2.4. Fixes #495680.
Martin v. Löwis <martin@v.loewis.de>
parents:
21128
diff
changeset
|
5159 #ifdef TCP_KEEPIDLE |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5160 PyModule_AddIntConstant(m, "TCP_KEEPIDLE", TCP_KEEPIDLE); |
|
21526
349d66cd874c
Add TCP socket options from glibc 2.2.4. Fixes #495680.
Martin v. Löwis <martin@v.loewis.de>
parents:
21128
diff
changeset
|
5161 #endif |
|
349d66cd874c
Add TCP socket options from glibc 2.2.4. Fixes #495680.
Martin v. Löwis <martin@v.loewis.de>
parents:
21128
diff
changeset
|
5162 #ifdef TCP_KEEPINTVL |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5163 PyModule_AddIntConstant(m, "TCP_KEEPINTVL", TCP_KEEPINTVL); |
|
21526
349d66cd874c
Add TCP socket options from glibc 2.2.4. Fixes #495680.
Martin v. Löwis <martin@v.loewis.de>
parents:
21128
diff
changeset
|
5164 #endif |
|
349d66cd874c
Add TCP socket options from glibc 2.2.4. Fixes #495680.
Martin v. Löwis <martin@v.loewis.de>
parents:
21128
diff
changeset
|
5165 #ifdef TCP_KEEPCNT |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5166 PyModule_AddIntConstant(m, "TCP_KEEPCNT", TCP_KEEPCNT); |
|
21526
349d66cd874c
Add TCP socket options from glibc 2.2.4. Fixes #495680.
Martin v. Löwis <martin@v.loewis.de>
parents:
21128
diff
changeset
|
5167 #endif |
|
349d66cd874c
Add TCP socket options from glibc 2.2.4. Fixes #495680.
Martin v. Löwis <martin@v.loewis.de>
parents:
21128
diff
changeset
|
5168 #ifdef TCP_SYNCNT |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5169 PyModule_AddIntConstant(m, "TCP_SYNCNT", TCP_SYNCNT); |
|
21526
349d66cd874c
Add TCP socket options from glibc 2.2.4. Fixes #495680.
Martin v. Löwis <martin@v.loewis.de>
parents:
21128
diff
changeset
|
5170 #endif |
|
349d66cd874c
Add TCP socket options from glibc 2.2.4. Fixes #495680.
Martin v. Löwis <martin@v.loewis.de>
parents:
21128
diff
changeset
|
5171 #ifdef TCP_LINGER2 |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5172 PyModule_AddIntConstant(m, "TCP_LINGER2", TCP_LINGER2); |
|
21526
349d66cd874c
Add TCP socket options from glibc 2.2.4. Fixes #495680.
Martin v. Löwis <martin@v.loewis.de>
parents:
21128
diff
changeset
|
5173 #endif |
|
349d66cd874c
Add TCP socket options from glibc 2.2.4. Fixes #495680.
Martin v. Löwis <martin@v.loewis.de>
parents:
21128
diff
changeset
|
5174 #ifdef TCP_DEFER_ACCEPT |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5175 PyModule_AddIntConstant(m, "TCP_DEFER_ACCEPT", TCP_DEFER_ACCEPT); |
|
21526
349d66cd874c
Add TCP socket options from glibc 2.2.4. Fixes #495680.
Martin v. Löwis <martin@v.loewis.de>
parents:
21128
diff
changeset
|
5176 #endif |
|
349d66cd874c
Add TCP socket options from glibc 2.2.4. Fixes #495680.
Martin v. Löwis <martin@v.loewis.de>
parents:
21128
diff
changeset
|
5177 #ifdef TCP_WINDOW_CLAMP |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5178 PyModule_AddIntConstant(m, "TCP_WINDOW_CLAMP", TCP_WINDOW_CLAMP); |
|
21526
349d66cd874c
Add TCP socket options from glibc 2.2.4. Fixes #495680.
Martin v. Löwis <martin@v.loewis.de>
parents:
21128
diff
changeset
|
5179 #endif |
|
349d66cd874c
Add TCP socket options from glibc 2.2.4. Fixes #495680.
Martin v. Löwis <martin@v.loewis.de>
parents:
21128
diff
changeset
|
5180 #ifdef TCP_INFO |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5181 PyModule_AddIntConstant(m, "TCP_INFO", TCP_INFO); |
|
21526
349d66cd874c
Add TCP socket options from glibc 2.2.4. Fixes #495680.
Martin v. Löwis <martin@v.loewis.de>
parents:
21128
diff
changeset
|
5182 #endif |
|
349d66cd874c
Add TCP socket options from glibc 2.2.4. Fixes #495680.
Martin v. Löwis <martin@v.loewis.de>
parents:
21128
diff
changeset
|
5183 #ifdef TCP_QUICKACK |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5184 PyModule_AddIntConstant(m, "TCP_QUICKACK", TCP_QUICKACK); |
|
21526
349d66cd874c
Add TCP socket options from glibc 2.2.4. Fixes #495680.
Martin v. Löwis <martin@v.loewis.de>
parents:
21128
diff
changeset
|
5185 #endif |
|
349d66cd874c
Add TCP socket options from glibc 2.2.4. Fixes #495680.
Martin v. Löwis <martin@v.loewis.de>
parents:
21128
diff
changeset
|
5186 |
|
11182
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
5187 |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
5188 /* IPX options */ |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
5189 #ifdef IPX_TYPE |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5190 PyModule_AddIntConstant(m, "IPX_TYPE", IPX_TYPE); |
|
11182
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
5191 #endif |
|
7942
ee2aaa2f722a
Threading speedup patches by Christopher Lindblad <cjl@infoseek.com>.
Guido van Rossum <guido@python.org>
parents:
6718
diff
changeset
|
5192 |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5193 /* get{addr,name}info parameters */ |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5194 #ifdef EAI_ADDRFAMILY |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5195 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
|
5196 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5197 #ifdef EAI_AGAIN |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5198 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
|
5199 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5200 #ifdef EAI_BADFLAGS |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5201 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
|
5202 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5203 #ifdef EAI_FAIL |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5204 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
|
5205 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5206 #ifdef EAI_FAMILY |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5207 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
|
5208 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5209 #ifdef EAI_MEMORY |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5210 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
|
5211 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5212 #ifdef EAI_NODATA |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5213 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
|
5214 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5215 #ifdef EAI_NONAME |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5216 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
|
5217 #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
|
5218 #ifdef EAI_OVERFLOW |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
5219 PyModule_AddIntConstant(m, "EAI_OVERFLOW", EAI_OVERFLOW); |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
5220 #endif |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5221 #ifdef EAI_SERVICE |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5222 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
|
5223 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5224 #ifdef EAI_SOCKTYPE |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5225 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
|
5226 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5227 #ifdef EAI_SYSTEM |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5228 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
|
5229 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5230 #ifdef EAI_BADHINTS |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5231 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
|
5232 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5233 #ifdef EAI_PROTOCOL |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5234 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
|
5235 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5236 #ifdef EAI_MAX |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5237 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
|
5238 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5239 #ifdef AI_PASSIVE |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5240 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
|
5241 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5242 #ifdef AI_CANONNAME |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5243 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
|
5244 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5245 #ifdef AI_NUMERICHOST |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5246 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
|
5247 #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
|
5248 #ifdef AI_NUMERICSERV |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
5249 PyModule_AddIntConstant(m, "AI_NUMERICSERV", AI_NUMERICSERV); |
|
24d34ab4ef75
Add IPV6_ socket options from RFCs 3493 and 3542. Fixes #867012.
Martin v. Löwis <martin@v.loewis.de>
parents:
31207
diff
changeset
|
5250 #endif |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5251 #ifdef AI_MASK |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5252 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
|
5253 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5254 #ifdef AI_ALL |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5255 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
|
5256 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5257 #ifdef AI_V4MAPPED_CFG |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5258 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
|
5259 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5260 #ifdef AI_ADDRCONFIG |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5261 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
|
5262 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5263 #ifdef AI_V4MAPPED |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5264 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
|
5265 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5266 #ifdef AI_DEFAULT |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5267 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
|
5268 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5269 #ifdef NI_MAXHOST |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5270 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
|
5271 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5272 #ifdef NI_MAXSERV |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5273 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
|
5274 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5275 #ifdef NI_NOFQDN |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5276 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
|
5277 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5278 #ifdef NI_NUMERICHOST |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5279 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
|
5280 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5281 #ifdef NI_NAMEREQD |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5282 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
|
5283 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5284 #ifdef NI_NUMERICSERV |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5285 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
|
5286 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5287 #ifdef NI_DGRAM |
|
22729
cdff3c7c1a76
Use the PyModule_Add*() APIs instead of manipulating the module dict
Fred Drake <fdrake@acm.org>
parents:
22568
diff
changeset
|
5288 PyModule_AddIntConstant(m, "NI_DGRAM", NI_DGRAM); |
|
18794
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5289 #endif |
|
4d0ea4c2386d
Patch #401196: IPv6 extensions to the socket module.
Martin v. Löwis <martin@v.loewis.de>
parents:
18790
diff
changeset
|
5290 |
|
31027
bf038986cb8f
Patch #849595: Add socket.shutdown() constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
30978
diff
changeset
|
5291 /* shutdown() parameters */ |
|
bf038986cb8f
Patch #849595: Add socket.shutdown() constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
30978
diff
changeset
|
5292 #ifdef SHUT_RD |
|
bf038986cb8f
Patch #849595: Add socket.shutdown() constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
30978
diff
changeset
|
5293 PyModule_AddIntConstant(m, "SHUT_RD", SHUT_RD); |
|
bf038986cb8f
Patch #849595: Add socket.shutdown() constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
30978
diff
changeset
|
5294 #elif defined(SD_RECEIVE) |
|
bf038986cb8f
Patch #849595: Add socket.shutdown() constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
30978
diff
changeset
|
5295 PyModule_AddIntConstant(m, "SHUT_RD", SD_RECEIVE); |
|
bf038986cb8f
Patch #849595: Add socket.shutdown() constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
30978
diff
changeset
|
5296 #else |
|
bf038986cb8f
Patch #849595: Add socket.shutdown() constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
30978
diff
changeset
|
5297 PyModule_AddIntConstant(m, "SHUT_RD", 0); |
|
bf038986cb8f
Patch #849595: Add socket.shutdown() constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
30978
diff
changeset
|
5298 #endif |
|
bf038986cb8f
Patch #849595: Add socket.shutdown() constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
30978
diff
changeset
|
5299 #ifdef SHUT_WR |
|
bf038986cb8f
Patch #849595: Add socket.shutdown() constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
30978
diff
changeset
|
5300 PyModule_AddIntConstant(m, "SHUT_WR", SHUT_WR); |
|
bf038986cb8f
Patch #849595: Add socket.shutdown() constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
30978
diff
changeset
|
5301 #elif defined(SD_SEND) |
|
bf038986cb8f
Patch #849595: Add socket.shutdown() constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
30978
diff
changeset
|
5302 PyModule_AddIntConstant(m, "SHUT_WR", SD_SEND); |
|
bf038986cb8f
Patch #849595: Add socket.shutdown() constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
30978
diff
changeset
|
5303 #else |
|
bf038986cb8f
Patch #849595: Add socket.shutdown() constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
30978
diff
changeset
|
5304 PyModule_AddIntConstant(m, "SHUT_WR", 1); |
|
bf038986cb8f
Patch #849595: Add socket.shutdown() constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
30978
diff
changeset
|
5305 #endif |
|
bf038986cb8f
Patch #849595: Add socket.shutdown() constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
30978
diff
changeset
|
5306 #ifdef SHUT_RDWR |
|
bf038986cb8f
Patch #849595: Add socket.shutdown() constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
30978
diff
changeset
|
5307 PyModule_AddIntConstant(m, "SHUT_RDWR", SHUT_RDWR); |
|
bf038986cb8f
Patch #849595: Add socket.shutdown() constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
30978
diff
changeset
|
5308 #elif defined(SD_BOTH) |
|
bf038986cb8f
Patch #849595: Add socket.shutdown() constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
30978
diff
changeset
|
5309 PyModule_AddIntConstant(m, "SHUT_RDWR", SD_BOTH); |
|
bf038986cb8f
Patch #849595: Add socket.shutdown() constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
30978
diff
changeset
|
5310 #else |
|
bf038986cb8f
Patch #849595: Add socket.shutdown() constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
30978
diff
changeset
|
5311 PyModule_AddIntConstant(m, "SHUT_RDWR", 2); |
|
bf038986cb8f
Patch #849595: Add socket.shutdown() constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
30978
diff
changeset
|
5312 #endif |
|
bf038986cb8f
Patch #849595: Add socket.shutdown() constants.
Martin v. Löwis <martin@v.loewis.de>
parents:
30978
diff
changeset
|
5313 |
|
44474
bfed70277ab3
Added interface to Windows' WSAIoctl and a simple example for a network sniffer.
Christian Heimes <christian@cheimes.de>
parents:
44350
diff
changeset
|
5314 #ifdef SIO_RCVALL |
|
44659
9468e6063617
Make Modules/socketobject.c compile for Windows again.
Thomas Heller <theller@ctypes.org>
parents:
44642
diff
changeset
|
5315 { |
|
56212
3def952b515c
http://bugs.python.org/issue6971
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56107
diff
changeset
|
5316 DWORD codes[] = {SIO_RCVALL, SIO_KEEPALIVE_VALS}; |
|
3def952b515c
http://bugs.python.org/issue6971
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56107
diff
changeset
|
5317 const char *names[] = {"SIO_RCVALL", "SIO_KEEPALIVE_VALS"}; |
|
3def952b515c
http://bugs.python.org/issue6971
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56107
diff
changeset
|
5318 int i; |
|
3def952b515c
http://bugs.python.org/issue6971
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56107
diff
changeset
|
5319 for(i = 0; i<sizeof(codes)/sizeof(*codes); ++i) { |
|
3def952b515c
http://bugs.python.org/issue6971
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56107
diff
changeset
|
5320 PyObject *tmp; |
|
3def952b515c
http://bugs.python.org/issue6971
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56107
diff
changeset
|
5321 tmp = PyLong_FromUnsignedLong(codes[i]); |
|
3def952b515c
http://bugs.python.org/issue6971
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56107
diff
changeset
|
5322 if (tmp == NULL) |
|
3def952b515c
http://bugs.python.org/issue6971
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56107
diff
changeset
|
5323 return; |
|
3def952b515c
http://bugs.python.org/issue6971
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56107
diff
changeset
|
5324 PyModule_AddObject(m, names[i], tmp); |
|
3def952b515c
http://bugs.python.org/issue6971
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
56107
diff
changeset
|
5325 } |
|
44659
9468e6063617
Make Modules/socketobject.c compile for Windows again.
Thomas Heller <theller@ctypes.org>
parents:
44642
diff
changeset
|
5326 } |
|
44474
bfed70277ab3
Added interface to Windows' WSAIoctl and a simple example for a network sniffer.
Christian Heimes <christian@cheimes.de>
parents:
44350
diff
changeset
|
5327 PyModule_AddIntConstant(m, "RCVALL_OFF", RCVALL_OFF); |
|
bfed70277ab3
Added interface to Windows' WSAIoctl and a simple example for a network sniffer.
Christian Heimes <christian@cheimes.de>
parents:
44350
diff
changeset
|
5328 PyModule_AddIntConstant(m, "RCVALL_ON", RCVALL_ON); |
|
bfed70277ab3
Added interface to Windows' WSAIoctl and a simple example for a network sniffer.
Christian Heimes <christian@cheimes.de>
parents:
44350
diff
changeset
|
5329 PyModule_AddIntConstant(m, "RCVALL_SOCKETLEVELONLY", RCVALL_SOCKETLEVELONLY); |
|
46173
c4ed664a1da1
Repair compilation for Visual Studio 2005.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
45854
diff
changeset
|
5330 #ifdef RCVALL_IPLEVEL |
|
44474
bfed70277ab3
Added interface to Windows' WSAIoctl and a simple example for a network sniffer.
Christian Heimes <christian@cheimes.de>
parents:
44350
diff
changeset
|
5331 PyModule_AddIntConstant(m, "RCVALL_IPLEVEL", RCVALL_IPLEVEL); |
|
46173
c4ed664a1da1
Repair compilation for Visual Studio 2005.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
45854
diff
changeset
|
5332 #endif |
|
c4ed664a1da1
Repair compilation for Visual Studio 2005.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
45854
diff
changeset
|
5333 #ifdef RCVALL_MAX |
|
44474
bfed70277ab3
Added interface to Windows' WSAIoctl and a simple example for a network sniffer.
Christian Heimes <christian@cheimes.de>
parents:
44350
diff
changeset
|
5334 PyModule_AddIntConstant(m, "RCVALL_MAX", RCVALL_MAX); |
|
46173
c4ed664a1da1
Repair compilation for Visual Studio 2005.
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents:
45854
diff
changeset
|
5335 #endif |
|
44474
bfed70277ab3
Added interface to Windows' WSAIoctl and a simple example for a network sniffer.
Christian Heimes <christian@cheimes.de>
parents:
44350
diff
changeset
|
5336 #endif /* _MSTCPIP_ */ |
|
bfed70277ab3
Added interface to Windows' WSAIoctl and a simple example for a network sniffer.
Christian Heimes <christian@cheimes.de>
parents:
44350
diff
changeset
|
5337 |
|
7942
ee2aaa2f722a
Threading speedup patches by Christopher Lindblad <cjl@infoseek.com>.
Guido van Rossum <guido@python.org>
parents:
6718
diff
changeset
|
5338 /* Initialize gethostbyname lock */ |
|
29035
e1d5ca8ab7dc
[ 731644] & [ 604210 ] Release the GIL around getaddrinfo(), yet protect
Just van Rossum <just@letterror.com>
parents:
28953
diff
changeset
|
5339 #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
|
5340 netdb_lock = PyThread_allocate_lock(); |
|
7942
ee2aaa2f722a
Threading speedup patches by Christopher Lindblad <cjl@infoseek.com>.
Guido van Rossum <guido@python.org>
parents:
6718
diff
changeset
|
5341 #endif |
| 294 | 5342 } |
|
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
|
5343 |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
5344 |
|
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
5345 #ifndef HAVE_INET_PTON |
|
43972
a8dd8874ff2d
Backport of the PCbuild9 directory from the py3k branch.
Christian Heimes <christian@cheimes.de>
parents:
43876
diff
changeset
|
5346 #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
|
5347 |
|
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
|
5348 /* 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
|
5349 /* 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
|
5350 |
|
23723
2f6f8708e3e9
Whitespace normalization, folding long lines, uniform comment
Guido van Rossum <guido@python.org>
parents:
23722
diff
changeset
|
5351 int |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
5352 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
|
5353 { |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
5354 if (af == AF_INET) { |
|
51538
edcf996f07e9
Issue #1008086: Fixes socket.inet_aton() to always return 4 bytes even
Gregory P. Smith <greg@mad-scientist.com>
parents:
51220
diff
changeset
|
5355 #if (SIZEOF_INT != 4) |
|
edcf996f07e9
Issue #1008086: Fixes socket.inet_aton() to always return 4 bytes even
Gregory P. Smith <greg@mad-scientist.com>
parents:
51220
diff
changeset
|
5356 #error "Not sure if in_addr_t exists and int is not 32-bits." |
|
edcf996f07e9
Issue #1008086: Fixes socket.inet_aton() to always return 4 bytes even
Gregory P. Smith <greg@mad-scientist.com>
parents:
51220
diff
changeset
|
5357 #endif |
|
edcf996f07e9
Issue #1008086: Fixes socket.inet_aton() to always return 4 bytes even
Gregory P. Smith <greg@mad-scientist.com>
parents:
51220
diff
changeset
|
5358 unsigned int packed_addr; |
|
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
|
5359 packed_addr = inet_addr(src); |
|
6b0a8157be3b
Emulate inet_{pton,ntop} on systems that don't provide it.
Martin v. Löwis <martin@v.loewis.de>
parents:
18253
diff
changeset
|
5360 if (packed_addr == INADDR_NONE) |
|
6b0a8157be3b
Emulate inet_{pton,ntop} on systems that don't provide it.
Martin v. Löwis <martin@v.loewis.de>
parents:
18253
diff
changeset
|
5361 return 0; |
|
6b0a8157be3b
Emulate inet_{pton,ntop} on systems that don't provide it.
Martin v. Löwis <martin@v.loewis.de>
parents:
18253
diff
changeset
|
5362 memcpy(dst, &packed_addr, 4); |
|
6b0a8157be3b
Emulate inet_{pton,ntop} on systems that don't provide it.
Martin v. Löwis <martin@v.loewis.de>
parents:
18253
diff
changeset
|
5363 return 1; |
|
6b0a8157be3b
Emulate inet_{pton,ntop} on systems that don't provide it.
Martin v. Löwis <martin@v.loewis.de>
parents:
18253
diff
changeset
|
5364 } |
|
6b0a8157be3b
Emulate inet_{pton,ntop} on systems that don't provide it.
Martin v. Löwis <martin@v.loewis.de>
parents:
18253
diff
changeset
|
5365 /* Should set errno to EAFNOSUPPORT */ |
|
6b0a8157be3b
Emulate inet_{pton,ntop} on systems that don't provide it.
Martin v. Löwis <martin@v.loewis.de>
parents:
18253
diff
changeset
|
5366 return -1; |
|
6b0a8157be3b
Emulate inet_{pton,ntop} on systems that don't provide it.
Martin v. Löwis <martin@v.loewis.de>
parents:
18253
diff
changeset
|
5367 } |
|
6b0a8157be3b
Emulate inet_{pton,ntop} on systems that don't provide it.
Martin v. Löwis <martin@v.loewis.de>
parents:
18253
diff
changeset
|
5368 |
|
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
|
5369 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
|
5370 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
|
5371 { |
|
6b0a8157be3b
Emulate inet_{pton,ntop} on systems that don't provide it.
Martin v. Löwis <martin@v.loewis.de>
parents:
18253
diff
changeset
|
5372 if (af == AF_INET) { |
|
6b0a8157be3b
Emulate inet_{pton,ntop} on systems that don't provide it.
Martin v. Löwis <martin@v.loewis.de>
parents:
18253
diff
changeset
|
5373 struct in_addr packed_addr; |
|
6b0a8157be3b
Emulate inet_{pton,ntop} on systems that don't provide it.
Martin v. Löwis <martin@v.loewis.de>
parents:
18253
diff
changeset
|
5374 if (size < 16) |
|
6b0a8157be3b
Emulate inet_{pton,ntop} on systems that don't provide it.
Martin v. Löwis <martin@v.loewis.de>
parents:
18253
diff
changeset
|
5375 /* Should set errno to ENOSPC. */ |
|
6b0a8157be3b
Emulate inet_{pton,ntop} on systems that don't provide it.
Martin v. Löwis <martin@v.loewis.de>
parents:
18253
diff
changeset
|
5376 return NULL; |
|
6b0a8157be3b
Emulate inet_{pton,ntop} on systems that don't provide it.
Martin v. Löwis <martin@v.loewis.de>
parents:
18253
diff
changeset
|
5377 memcpy(&packed_addr, src, sizeof(packed_addr)); |
|
6b0a8157be3b
Emulate inet_{pton,ntop} on systems that don't provide it.
Martin v. Löwis <martin@v.loewis.de>
parents:
18253
diff
changeset
|
5378 return strncpy(dst, inet_ntoa(packed_addr), size); |
|
6b0a8157be3b
Emulate inet_{pton,ntop} on systems that don't provide it.
Martin v. Löwis <martin@v.loewis.de>
parents:
18253
diff
changeset
|
5379 } |
|
6b0a8157be3b
Emulate inet_{pton,ntop} on systems that don't provide it.
Martin v. Löwis <martin@v.loewis.de>
parents:
18253
diff
changeset
|
5380 /* Should set errno to EAFNOSUPPORT */ |
|
6b0a8157be3b
Emulate inet_{pton,ntop} on systems that don't provide it.
Martin v. Löwis <martin@v.loewis.de>
parents:
18253
diff
changeset
|
5381 return NULL; |
|
6b0a8157be3b
Emulate inet_{pton,ntop} on systems that don't provide it.
Martin v. Löwis <martin@v.loewis.de>
parents:
18253
diff
changeset
|
5382 } |
|
23725
1235a95fedcd
Major cleanup. Renamed static methods to avoid Py prefix. Other misc
Guido van Rossum <guido@python.org>
parents:
23723
diff
changeset
|
5383 |
|
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
|
5384 #endif |
|
43972
a8dd8874ff2d
Backport of the PCbuild9 directory from the py3k branch.
Christian Heimes <christian@cheimes.de>
parents:
43876
diff
changeset
|
5385 #endif |
