Mercurial > cpython-lru_cache-weakref
annotate Modules/socketmodule.c @ 15842:f6cd36498a50 legacy-trunk
Document extensions to .pth files.
| author | Martin v. Löwis <martin@v.loewis.de> |
|---|---|
| date | Sat, 13 Jan 2001 09:54:41 +0000 |
| parents | 15e1eb1019b8 |
| children | f9a15a583c79 |
| rev | line source |
|---|---|
| 294 | 1 /* Socket module */ |
| 2 | |
|
11527
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
3 /* SSL support based on patches by Brian E Gallew and Laszlo Kovacs */ |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
4 |
| 294 | 5 /* |
| 6 This module provides an interface to Berkeley socket IPC. | |
| 7 | |
| 8 Limitations: | |
| 9 | |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
10 - only AF_INET and AF_UNIX address families are supported |
|
324
a81020d505bf
Add gethostname() and s.avail().
Guido van Rossum <guido@python.org>
parents:
309
diff
changeset
|
11 - no read/write operations (use send/recv or makefile instead) |
|
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
|
12 - additional restrictions apply on Windows |
| 294 | 13 |
|
2565
912813d573b4
fixed up comments describing interface
Guido van Rossum <guido@python.org>
parents:
2532
diff
changeset
|
14 Module interface: |
| 294 | 15 |
|
2565
912813d573b4
fixed up comments describing interface
Guido van Rossum <guido@python.org>
parents:
2532
diff
changeset
|
16 - socket.error: exception raised for socket specific errors |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
17 - 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
|
18 - 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
|
19 - 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
|
20 - socket.getprotobyname(protocolname) --> protocol number |
|
2565
912813d573b4
fixed up comments describing interface
Guido van Rossum <guido@python.org>
parents:
2532
diff
changeset
|
21 - socket.getservbyname(servicename, protocolname) --> port number |
|
309
382323f92fce
Connection sockets now have the proper family/type/proto values.
Guido van Rossum <guido@python.org>
parents:
295
diff
changeset
|
22 - socket.socket(family, type [, proto]) --> new socket object |
|
3673
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
23 - 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
|
24 - 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
|
25 - 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
|
26 - socket.htonl(32 bit value) --> new int object |
|
2565
912813d573b4
fixed up comments describing interface
Guido van Rossum <guido@python.org>
parents:
2532
diff
changeset
|
27 - socket.AF_INET, socket.SOCK_STREAM, etc.: constants from <socket.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
|
28 - 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
|
29 - socket.inet_ntoa(packed IP) -> IP address string |
|
11527
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
30 - socket.ssl(socket, keyfile, certfile) -> new ssl object |
| 294 | 31 - an Internet socket address is a pair (hostname, port) |
| 32 where hostname can be anything recognized by gethostbyname() | |
| 33 (including the dd.dd.dd.dd notation) and port is in host byte order | |
| 34 - 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
|
35 - a UNIX domain socket address is a string specifying the pathname |
| 294 | 36 |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
37 Socket methods: |
| 294 | 38 |
|
324
a81020d505bf
Add gethostname() and s.avail().
Guido van Rossum <guido@python.org>
parents:
309
diff
changeset
|
39 - s.accept() --> new socket object, sockaddr |
|
13278
3370edad08ce
Restore strict checking of socket address values; addresses passed to
Fred Drake <fdrake@acm.org>
parents:
13256
diff
changeset
|
40 - s.bind(sockaddr) --> None |
|
2565
912813d573b4
fixed up comments describing interface
Guido van Rossum <guido@python.org>
parents:
2532
diff
changeset
|
41 - s.close() --> None |
|
13278
3370edad08ce
Restore strict checking of socket address values; addresses passed to
Fred Drake <fdrake@acm.org>
parents:
13256
diff
changeset
|
42 - s.connect(sockaddr) --> None |
|
3370edad08ce
Restore strict checking of socket address values; addresses passed to
Fred Drake <fdrake@acm.org>
parents:
13256
diff
changeset
|
43 - s.connect_ex(sockaddr) --> 0 or errno (handy for e.g. async connect) |
|
2565
912813d573b4
fixed up comments describing interface
Guido van Rossum <guido@python.org>
parents:
2532
diff
changeset
|
44 - s.fileno() --> file descriptor |
|
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
|
45 - s.dup() --> same as socket.fromfd(os.dup(s.fileno(), ...) |
|
2565
912813d573b4
fixed up comments describing interface
Guido van Rossum <guido@python.org>
parents:
2532
diff
changeset
|
46 - s.getpeername() --> sockaddr |
|
1094
d2af6bdcb6d0
* config.c: Added audioop to lists.
Guido van Rossum <guido@python.org>
parents:
1039
diff
changeset
|
47 - s.getsockname() --> sockaddr |
|
2565
912813d573b4
fixed up comments describing interface
Guido van Rossum <guido@python.org>
parents:
2532
diff
changeset
|
48 - s.getsockopt(level, optname[, buflen]) --> int or string |
|
912813d573b4
fixed up comments describing interface
Guido van Rossum <guido@python.org>
parents:
2532
diff
changeset
|
49 - s.listen(backlog) --> None |
|
2532
9e5a09841781
mode and optional bufsize for makefile()
Guido van Rossum <guido@python.org>
parents:
2369
diff
changeset
|
50 - s.makefile([mode[, bufsize]]) --> file object |
|
2565
912813d573b4
fixed up comments describing interface
Guido van Rossum <guido@python.org>
parents:
2532
diff
changeset
|
51 - s.recv(buflen [,flags]) --> string |
|
912813d573b4
fixed up comments describing interface
Guido van Rossum <guido@python.org>
parents:
2532
diff
changeset
|
52 - s.recvfrom(buflen [,flags]) --> string, sockaddr |
|
1746
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1413
diff
changeset
|
53 - s.send(string [,flags]) --> nbytes |
|
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1413
diff
changeset
|
54 - s.sendto(string, [flags,] sockaddr) --> nbytes |
|
2565
912813d573b4
fixed up comments describing interface
Guido van Rossum <guido@python.org>
parents:
2532
diff
changeset
|
55 - s.setblocking(0 | 1) --> None |
|
912813d573b4
fixed up comments describing interface
Guido van Rossum <guido@python.org>
parents:
2532
diff
changeset
|
56 - s.setsockopt(level, optname, value) --> None |
|
912813d573b4
fixed up comments describing interface
Guido van Rossum <guido@python.org>
parents:
2532
diff
changeset
|
57 - s.shutdown(how) --> None |
|
2055
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
58 - repr(s) --> "<socket object, fd=%d, family=%d, type=%d, protocol=%d>" |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
59 |
| 294 | 60 */ |
| 61 | |
| 1970 | 62 #include "Python.h" |
|
10442
9184c9e108f9
Clean up pass for the previous patches.
Guido van Rossum <guido@python.org>
parents:
10441
diff
changeset
|
63 |
|
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
|
64 /* 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
|
65 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
|
66 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
|
67 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
|
68 |
|
adf87d13a0c1
(1) On Linux, we really need to trust the configure script to select
Guido van Rossum <guido@python.org>
parents:
11268
diff
changeset
|
69 #ifndef linux |
|
10454
dad14ffe1c22
Implement two suggestions by Jonathan Giddy: (1) in AIX, clear the
Guido van Rossum <guido@python.org>
parents:
10453
diff
changeset
|
70 #undef HAVE_GETHOSTBYNAME_R_3_ARG |
|
dad14ffe1c22
Implement two suggestions by Jonathan Giddy: (1) in AIX, clear the
Guido van Rossum <guido@python.org>
parents:
10453
diff
changeset
|
71 #undef HAVE_GETHOSTBYNAME_R_5_ARG |
|
dad14ffe1c22
Implement two suggestions by Jonathan Giddy: (1) in AIX, clear the
Guido van Rossum <guido@python.org>
parents:
10453
diff
changeset
|
72 #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
|
73 #endif |
|
10454
dad14ffe1c22
Implement two suggestions by Jonathan Giddy: (1) in AIX, clear the
Guido van Rossum <guido@python.org>
parents:
10453
diff
changeset
|
74 |
|
10579
1ed1eb5bc6ec
Put back __osf__ support for gethostbyname_r(); the real bug was that
Guido van Rossum <guido@python.org>
parents:
10561
diff
changeset
|
75 #ifndef WITH_THREAD |
|
1ed1eb5bc6ec
Put back __osf__ support for gethostbyname_r(); the real bug was that
Guido van Rossum <guido@python.org>
parents:
10561
diff
changeset
|
76 #undef HAVE_GETHOSTBYNAME_R |
|
1ed1eb5bc6ec
Put back __osf__ support for gethostbyname_r(); the real bug was that
Guido van Rossum <guido@python.org>
parents:
10561
diff
changeset
|
77 #endif |
|
1ed1eb5bc6ec
Put back __osf__ support for gethostbyname_r(); the real bug was that
Guido van Rossum <guido@python.org>
parents:
10561
diff
changeset
|
78 |
|
10454
dad14ffe1c22
Implement two suggestions by Jonathan Giddy: (1) in AIX, clear the
Guido van Rossum <guido@python.org>
parents:
10453
diff
changeset
|
79 #ifdef 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
|
80 #if defined(_AIX) || defined(__osf__) |
|
10454
dad14ffe1c22
Implement two suggestions by Jonathan Giddy: (1) in AIX, clear the
Guido van Rossum <guido@python.org>
parents:
10453
diff
changeset
|
81 #define HAVE_GETHOSTBYNAME_R_3_ARG |
|
dad14ffe1c22
Implement two suggestions by Jonathan Giddy: (1) in AIX, clear the
Guido van Rossum <guido@python.org>
parents:
10453
diff
changeset
|
82 #elif defined(__sun__) || defined(__sgi) |
|
dad14ffe1c22
Implement two suggestions by Jonathan Giddy: (1) in AIX, clear the
Guido van Rossum <guido@python.org>
parents:
10453
diff
changeset
|
83 #define HAVE_GETHOSTBYNAME_R_5_ARG |
|
dad14ffe1c22
Implement two suggestions by Jonathan Giddy: (1) in AIX, clear the
Guido van Rossum <guido@python.org>
parents:
10453
diff
changeset
|
84 #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
|
85 /* Rely on the configure script */ |
|
10454
dad14ffe1c22
Implement two suggestions by Jonathan Giddy: (1) in AIX, clear the
Guido van Rossum <guido@python.org>
parents:
10453
diff
changeset
|
86 #else |
|
dad14ffe1c22
Implement two suggestions by Jonathan Giddy: (1) in AIX, clear the
Guido van Rossum <guido@python.org>
parents:
10453
diff
changeset
|
87 #undef HAVE_GETHOSTBYNAME_R |
|
dad14ffe1c22
Implement two suggestions by Jonathan Giddy: (1) in AIX, clear the
Guido van Rossum <guido@python.org>
parents:
10453
diff
changeset
|
88 #endif |
|
dad14ffe1c22
Implement two suggestions by Jonathan Giddy: (1) in AIX, clear the
Guido van Rossum <guido@python.org>
parents:
10453
diff
changeset
|
89 #endif |
|
dad14ffe1c22
Implement two suggestions by Jonathan Giddy: (1) in AIX, clear the
Guido van Rossum <guido@python.org>
parents:
10453
diff
changeset
|
90 |
|
10442
9184c9e108f9
Clean up pass for the previous patches.
Guido van Rossum <guido@python.org>
parents:
10441
diff
changeset
|
91 #if !defined(HAVE_GETHOSTBYNAME_R) && defined(WITH_THREAD) && !defined(MS_WINDOWS) |
|
9184c9e108f9
Clean up pass for the previous patches.
Guido van Rossum <guido@python.org>
parents:
10441
diff
changeset
|
92 #define USE_GETHOSTBYNAME_LOCK |
|
9184c9e108f9
Clean up pass for the previous patches.
Guido van Rossum <guido@python.org>
parents:
10441
diff
changeset
|
93 #endif |
|
9184c9e108f9
Clean up pass for the previous patches.
Guido van Rossum <guido@python.org>
parents:
10441
diff
changeset
|
94 |
|
9184c9e108f9
Clean up pass for the previous patches.
Guido van Rossum <guido@python.org>
parents:
10441
diff
changeset
|
95 #ifdef USE_GETHOSTBYNAME_LOCK |
|
9203
07dae6fdae79
Renamed thread.h to pythread.h.
Guido van Rossum <guido@python.org>
parents:
9095
diff
changeset
|
96 #include "pythread.h" |
|
7942
ee2aaa2f722a
Threading speedup patches by Christopher Lindblad <cjl@infoseek.com>.
Guido van Rossum <guido@python.org>
parents:
6718
diff
changeset
|
97 #endif |
| 294 | 98 |
| 4600 | 99 #ifdef HAVE_UNISTD_H |
| 100 #include <unistd.h> | |
| 101 #endif | |
| 102 | |
|
6626
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
103 #if defined(PYCC_VACPP) |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
104 #include <types.h> |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
105 #include <io.h> |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
106 #include <sys/ioctl.h> |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
107 #include <utils.h> |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
108 #include <ctype.h> |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
109 #endif |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
110 |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
111 #if defined(PYOS_OS2) |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
112 #define INCL_DOS |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
113 #define INCL_DOSERRORS |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
114 #define INCL_NOPMAPI |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
115 #include <os2.h> |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
116 #endif |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
117 |
|
1746
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1413
diff
changeset
|
118 #include <sys/types.h> |
|
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
|
119 |
|
324
a81020d505bf
Add gethostname() and s.avail().
Guido van Rossum <guido@python.org>
parents:
309
diff
changeset
|
120 #include <signal.h> |
|
3738
ce74bba8a6a6
Slightly different Windows ifdefs
Guido van Rossum <guido@python.org>
parents:
3702
diff
changeset
|
121 #ifndef MS_WINDOWS |
|
1746
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1413
diff
changeset
|
122 #include <netdb.h> |
| 294 | 123 #include <sys/socket.h> |
| 124 #include <netinet/in.h> | |
|
15046
c654b2018403
Norman Vine <nhv@users.sourceforge.net>:
Fred Drake <fdrake@acm.org>
parents:
14008
diff
changeset
|
125 #if !(defined(__BEOS__) || defined(__CYGWIN__)) |
|
12194
4dd8b6a3b9c5
Add '#include <netinet/tcp.h>'
Andrew M. Kuchling <amk@amk.ca>
parents:
12050
diff
changeset
|
126 #include <netinet/tcp.h> |
| 12712 | 127 #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
|
128 |
|
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
|
129 /* Headers needed for inet_ntoa() and inet_addr() */ |
|
adf87d13a0c1
(1) On Linux, we really need to trust the configure script to select
Guido van Rossum <guido@python.org>
parents:
11268
diff
changeset
|
130 #ifdef __BEOS__ |
|
adf87d13a0c1
(1) On Linux, we really need to trust the configure script to select
Guido van Rossum <guido@python.org>
parents:
11268
diff
changeset
|
131 #include <net/netdb.h> |
|
adf87d13a0c1
(1) On Linux, we really need to trust the configure script to select
Guido van Rossum <guido@python.org>
parents:
11268
diff
changeset
|
132 #else |
|
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
|
133 #ifndef USE_GUSI1 |
|
11217
f406e78ec10b
Patch by Ben Gertzfield to add inet_aton() and inet_ntoa() calls.
Guido van Rossum <guido@python.org>
parents:
11182
diff
changeset
|
134 #include <arpa/inet.h> |
|
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
|
135 #endif |
|
11438
be25aaca11f4
Bugfix by Jack Jansen for Macintosh (for the inet_ntoa/aton changes):
Guido van Rossum <guido@python.org>
parents:
11288
diff
changeset
|
136 #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
|
137 |
|
1867
758c1374f303
Setup.in: added tkinter; rearranged the definition of PYTHONPATH so
Guido van Rossum <guido@python.org>
parents:
1792
diff
changeset
|
138 #include <fcntl.h> |
|
1792
a584b4bbbc59
Changes to make it work and compile on NT, by Mark Hammond.
Guido van Rossum <guido@python.org>
parents:
1760
diff
changeset
|
139 #else |
|
a584b4bbbc59
Changes to make it work and compile on NT, by Mark Hammond.
Guido van Rossum <guido@python.org>
parents:
1760
diff
changeset
|
140 #include <winsock.h> |
|
2736
37c48fde61b8
add setblocking(); NT changes; null-terminate Unix path
Guido van Rossum <guido@python.org>
parents:
2565
diff
changeset
|
141 #include <fcntl.h> |
|
1792
a584b4bbbc59
Changes to make it work and compile on NT, by Mark Hammond.
Guido van Rossum <guido@python.org>
parents:
1760
diff
changeset
|
142 #endif |
|
1746
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1413
diff
changeset
|
143 #ifdef HAVE_SYS_UN_H |
| 294 | 144 #include <sys/un.h> |
|
1746
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1413
diff
changeset
|
145 #else |
|
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1413
diff
changeset
|
146 #undef AF_UNIX |
|
1271
2919b448e385
* Microscopic corrections to make things compile on the Cray APP.
Guido van Rossum <guido@python.org>
parents:
1252
diff
changeset
|
147 #endif |
|
2919b448e385
* Microscopic corrections to make things compile on the Cray APP.
Guido van Rossum <guido@python.org>
parents:
1252
diff
changeset
|
148 |
|
2055
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
149 #ifndef O_NDELAY |
|
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
150 #define O_NDELAY O_NONBLOCK /* For QNX only? */ |
|
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
151 #endif |
|
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
152 |
|
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
|
153 #ifdef USE_GUSI1 |
|
3390
832f26d0e069
Include GUSI.h if using gusi-sockets
Jack Jansen <jack.jansen@cwi.nl>
parents:
3335
diff
changeset
|
154 /* fdopen() isn't declared in stdio.h (sigh) */ |
|
832f26d0e069
Include GUSI.h if using gusi-sockets
Jack Jansen <jack.jansen@cwi.nl>
parents:
3335
diff
changeset
|
155 #include <GUSI.h> |
|
832f26d0e069
Include GUSI.h if using gusi-sockets
Jack Jansen <jack.jansen@cwi.nl>
parents:
3335
diff
changeset
|
156 #endif |
|
832f26d0e069
Include GUSI.h if using gusi-sockets
Jack Jansen <jack.jansen@cwi.nl>
parents:
3335
diff
changeset
|
157 |
|
11527
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
158 #ifdef USE_SSL |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
159 #include "rsa.h" |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
160 #include "crypto.h" |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
161 #include "x509.h" |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
162 #include "pem.h" |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
163 #include "ssl.h" |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
164 #include "err.h" |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
165 #endif /* USE_SSL */ |
|
2055
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
166 |
|
8823
f2a4a2b60860
Changes for BeOS, QNX and long long, by Chris Herborth.
Guido van Rossum <guido@python.org>
parents:
8821
diff
changeset
|
167 #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
|
168 /* 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
|
169 /* 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
|
170 #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
|
171 #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
|
172 #endif |
|
a584b4bbbc59
Changes to make it work and compile on NT, by Mark Hammond.
Guido van Rossum <guido@python.org>
parents:
1760
diff
changeset
|
173 |
|
13171
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
174 /* abstract the socket file descriptor type */ |
|
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
175 #ifdef MS_WINDOWS |
|
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
176 typedef SOCKET SOCKET_T; |
|
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
177 # ifdef MS_WIN64 |
|
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
178 # define SIZEOF_SOCKET_T 8 |
|
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
179 # else |
|
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
180 # define SIZEOF_SOCKET_T 4 |
|
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
181 # endif |
|
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
182 #else |
|
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
183 typedef int SOCKET_T; |
|
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
184 # define SIZEOF_SOCKET_T SIZEOF_INT |
|
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
185 #endif |
|
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
186 |
|
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
187 |
|
6626
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
188 #if defined(PYOS_OS2) |
|
12436
dff7b26116de
Use an explicit macro SOCKETCLOSE which expands to closesocket (on
Guido van Rossum <guido@python.org>
parents:
12319
diff
changeset
|
189 #define SOCKETCLOSE soclose |
|
6626
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
190 #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
|
191 #endif |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
192 |
|
12436
dff7b26116de
Use an explicit macro SOCKETCLOSE which expands to closesocket (on
Guido van Rossum <guido@python.org>
parents:
12319
diff
changeset
|
193 #ifndef SOCKETCLOSE |
|
dff7b26116de
Use an explicit macro SOCKETCLOSE which expands to closesocket (on
Guido van Rossum <guido@python.org>
parents:
12319
diff
changeset
|
194 #define SOCKETCLOSE close |
|
dff7b26116de
Use an explicit macro SOCKETCLOSE which expands to closesocket (on
Guido van Rossum <guido@python.org>
parents:
12319
diff
changeset
|
195 #endif |
|
dff7b26116de
Use an explicit macro SOCKETCLOSE which expands to closesocket (on
Guido van Rossum <guido@python.org>
parents:
12319
diff
changeset
|
196 |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
197 /* 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
|
198 by this module (but not argument type or memory errors, etc.). */ |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
199 |
| 1970 | 200 static PyObject *PySocket_Error; |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
201 |
|
11527
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
202 #ifdef USE_SSL |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
203 static PyObject *SSLErrorObject; |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
204 #endif /* USE_SSL */ |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
205 |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
206 |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
207 /* 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
|
208 and return a NULL pointer from a function. */ |
| 294 | 209 |
| 1970 | 210 static PyObject * |
|
13651
8a063423e0b7
Bunch of minor ANSIfications: 'void initfunc()' -> 'void initfunc(void)',
Thomas Wouters <thomas@python.org>
parents:
13554
diff
changeset
|
211 PySocket_Err(void) |
| 294 | 212 { |
|
3702
3408756ec601
changed windows test symbols; removed debug printf from sockets
Guido van Rossum <guido@python.org>
parents:
3700
diff
changeset
|
213 #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
|
214 int err_no = WSAGetLastError(); |
|
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
|
215 if (err_no) { |
|
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
|
216 static struct { int no; const char *msg; } *msgp, msgs[] = { |
|
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
|
217 { WSAEINTR, "Interrupted system call" }, |
|
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
|
218 { WSAEBADF, "Bad file descriptor" }, |
|
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
|
219 { WSAEACCES, "Permission denied" }, |
|
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
|
220 { WSAEFAULT, "Bad address" }, |
|
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
|
221 { WSAEINVAL, "Invalid argument" }, |
|
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
|
222 { WSAEMFILE, "Too many open files" }, |
|
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
|
223 { WSAEWOULDBLOCK, |
|
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
|
224 "The socket operation could not complete " |
|
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
|
225 "without blocking" }, |
|
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
|
226 { WSAEINPROGRESS, "Operation now in progress" }, |
|
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
|
227 { WSAEALREADY, "Operation already in progress" }, |
|
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
|
228 { WSAENOTSOCK, "Socket operation on non-socket" }, |
|
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
|
229 { WSAEDESTADDRREQ, "Destination address required" }, |
|
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
|
230 { WSAEMSGSIZE, "Message too long" }, |
|
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
|
231 { WSAEPROTOTYPE, "Protocol wrong type for socket" }, |
|
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
|
232 { WSAENOPROTOOPT, "Protocol not available" }, |
|
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
|
233 { WSAEPROTONOSUPPORT, "Protocol not supported" }, |
|
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
|
234 { WSAESOCKTNOSUPPORT, "Socket type not supported" }, |
|
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
|
235 { WSAEOPNOTSUPP, "Operation not supported" }, |
|
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
|
236 { WSAEPFNOSUPPORT, "Protocol family not supported" }, |
|
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
|
237 { WSAEAFNOSUPPORT, "Address family not supported" }, |
|
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
|
238 { WSAEADDRINUSE, "Address already in use" }, |
|
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
|
239 { WSAEADDRNOTAVAIL, |
|
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
|
240 "Can't assign requested address" }, |
|
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
|
241 { WSAENETDOWN, "Network is down" }, |
|
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
|
242 { WSAENETUNREACH, "Network is unreachable" }, |
|
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
|
243 { WSAENETRESET, |
|
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
|
244 "Network dropped connection on reset" }, |
|
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
|
245 { WSAECONNABORTED, |
|
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
|
246 "Software caused connection abort" }, |
|
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
|
247 { WSAECONNRESET, "Connection reset by peer" }, |
|
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
|
248 { WSAENOBUFS, "No buffer space available" }, |
|
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
|
249 { WSAEISCONN, "Socket is already connected" }, |
|
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
|
250 { WSAENOTCONN, "Socket is not connected" }, |
|
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
|
251 { WSAESHUTDOWN, "Can't send after socket shutdown" }, |
|
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
|
252 { WSAETOOMANYREFS, |
|
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
|
253 "Too many references: can't splice" }, |
|
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
|
254 { WSAETIMEDOUT, "Operation timed out" }, |
|
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
|
255 { WSAECONNREFUSED, "Connection refused" }, |
|
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
|
256 { WSAELOOP, "Too many levels of symbolic links" }, |
|
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
|
257 { WSAENAMETOOLONG, "File name too long" }, |
|
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
|
258 { WSAEHOSTDOWN, "Host is down" }, |
|
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
|
259 { WSAEHOSTUNREACH, "No route to host" }, |
|
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
|
260 { WSAENOTEMPTY, "Directory not empty" }, |
|
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
|
261 { WSAEPROCLIM, "Too many processes" }, |
|
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
|
262 { WSAEUSERS, "Too many users" }, |
|
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
|
263 { WSAEDQUOT, "Disc quota exceeded" }, |
|
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
|
264 { WSAESTALE, "Stale NFS file handle" }, |
|
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
|
265 { WSAEREMOTE, "Too many levels of remote in path" }, |
|
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
|
266 { WSASYSNOTREADY, |
|
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
|
267 "Network subsystem is unvailable" }, |
|
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
|
268 { WSAVERNOTSUPPORTED, |
|
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
|
269 "WinSock version is not supported" }, |
|
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
|
270 { WSANOTINITIALISED, |
|
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
|
271 "Successful WSAStartup() not yet performed" }, |
|
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
|
272 { WSAEDISCON, "Graceful shutdown in progress" }, |
|
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
|
273 /* Resolver errors */ |
|
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
|
274 { WSAHOST_NOT_FOUND, "No such host is known" }, |
|
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
|
275 { WSATRY_AGAIN, "Host not found, or server failed" }, |
|
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
|
276 { WSANO_RECOVERY, |
|
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
|
277 "Unexpected server error encountered" }, |
|
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
|
278 { WSANO_DATA, "Valid name without requested data" }, |
|
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
|
279 { WSANO_ADDRESS, "No address, look for MX record" }, |
|
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
|
280 { 0, NULL } |
|
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
|
281 }; |
| 1970 | 282 PyObject *v; |
|
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
|
283 const char *msg = "winsock error"; |
|
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
|
284 |
|
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
|
285 for (msgp = msgs; msgp->msg; msgp++) { |
|
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
|
286 if (err_no == msgp->no) { |
|
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
|
287 msg = msgp->msg; |
|
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
|
288 break; |
|
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
|
289 } |
|
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
|
290 } |
|
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
|
291 |
|
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
|
292 v = Py_BuildValue("(is)", err_no, msg); |
|
1915
80818c106e3e
* Modules/xxmodule.c: integrated with xxobject.c by Jack
Guido van Rossum <guido@python.org>
parents:
1867
diff
changeset
|
293 if (v != NULL) { |
| 1970 | 294 PyErr_SetObject(PySocket_Error, v); |
| 295 Py_DECREF(v); | |
|
1915
80818c106e3e
* Modules/xxmodule.c: integrated with xxobject.c by Jack
Guido van Rossum <guido@python.org>
parents:
1867
diff
changeset
|
296 } |
|
80818c106e3e
* Modules/xxmodule.c: integrated with xxobject.c by Jack
Guido van Rossum <guido@python.org>
parents:
1867
diff
changeset
|
297 return NULL; |
|
80818c106e3e
* Modules/xxmodule.c: integrated with xxobject.c by Jack
Guido van Rossum <guido@python.org>
parents:
1867
diff
changeset
|
298 } |
|
80818c106e3e
* Modules/xxmodule.c: integrated with xxobject.c by Jack
Guido van Rossum <guido@python.org>
parents:
1867
diff
changeset
|
299 else |
|
80818c106e3e
* Modules/xxmodule.c: integrated with xxobject.c by Jack
Guido van Rossum <guido@python.org>
parents:
1867
diff
changeset
|
300 #endif |
|
6626
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
301 |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
302 #if defined(PYOS_OS2) |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
303 if (sock_errno() != NO_ERROR) { |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
304 APIRET rc; |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
305 ULONG msglen; |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
306 char outbuf[100]; |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
307 int myerrorcode = sock_errno(); |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
308 |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
309 /* Retrieve Socket-Related Error Message from MPTN.MSG File */ |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
310 rc = DosGetMessage(NULL, 0, outbuf, sizeof(outbuf), |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
311 myerrorcode - SOCBASEERR + 26, "mptn.msg", &msglen); |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
312 if (rc == NO_ERROR) { |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
313 PyObject *v; |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
314 |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
315 outbuf[msglen] = '\0'; /* OS/2 Doesn't Guarantee a Terminator */ |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
316 if (strlen(outbuf) > 0) { /* If Non-Empty Msg, Trim CRLF */ |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
317 char *lastc = &outbuf[ strlen(outbuf)-1 ]; |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
318 while (lastc > outbuf && isspace(*lastc)) |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
319 *lastc-- = '\0'; /* Trim Trailing Whitespace (CRLF) */ |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
320 } |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
321 v = Py_BuildValue("(is)", myerrorcode, outbuf); |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
322 if (v != NULL) { |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
323 PyErr_SetObject(PySocket_Error, v); |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
324 Py_DECREF(v); |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
325 } |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
326 return NULL; |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
327 } |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
328 } |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
329 #endif |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
330 |
| 1970 | 331 return PyErr_SetFromErrno(PySocket_Error); |
| 294 | 332 } |
| 333 | |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
334 |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
335 /* The object holding a socket. It holds some extra information, |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
336 like the address family, which is used to decode socket address |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
337 arguments properly. */ |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
338 |
| 294 | 339 typedef struct { |
| 1970 | 340 PyObject_HEAD |
|
13171
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
341 SOCKET_T sock_fd; /* Socket file descriptor */ |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
342 int sock_family; /* Address family, e.g., AF_INET */ |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
343 int sock_type; /* Socket type, e.g., SOCK_STREAM */ |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
344 int sock_proto; /* Protocol type, usually 0 */ |
|
2055
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
345 union sock_addr { |
|
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
346 struct sockaddr_in in; |
|
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
347 #ifdef AF_UNIX |
|
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
348 struct sockaddr_un un; |
|
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
349 #endif |
|
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
350 } sock_addr; |
| 1970 | 351 } PySocketSockObject; |
| 294 | 352 |
|
11527
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
353 #ifdef USE_SSL |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
354 |
|
11527
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
355 typedef struct { |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
356 PyObject_HEAD |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
357 PySocketSockObject *Socket; /* Socket on which we're layered */ |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
358 PyObject *x_attr; /* Attributes dictionary */ |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
359 SSL_CTX* ctx; |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
360 SSL* ssl; |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
361 X509* server_cert; |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
362 BIO* sbio; |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
363 char server[256]; |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
364 char issuer[256]; |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
365 |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
366 } SSLObject; |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
367 |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
368 staticforward PyTypeObject SSL_Type; |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
369 staticforward PyObject *SSL_SSLwrite(SSLObject *self, PyObject *args); |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
370 staticforward PyObject *SSL_SSLread(SSLObject *self, PyObject *args); |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
371 |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
372 #define SSLObject_Check(v) ((v)->ob_type == &SSL_Type) |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
373 |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
374 #endif /* USE_SSL */ |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
375 |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
376 /* A forward reference to the Socktype type object. |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
377 The Socktype variable contains pointers to various functions, |
| 1970 | 378 some of which call newsockobject(), which uses Socktype, so |
|
374
70a18a6689d4
Make Socktype global so old and new compilers will like it.
Guido van Rossum <guido@python.org>
parents:
324
diff
changeset
|
379 there has to be a circular reference. */ |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
380 |
| 1970 | 381 staticforward PyTypeObject PySocketSock_Type; |
| 294 | 382 |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
383 |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
384 /* Create a new socket object. |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
385 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
|
386 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
|
387 in NEWOBJ()). */ |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
388 |
| 1970 | 389 static PySocketSockObject * |
| 13470 | 390 PySocketSock_New(SOCKET_T fd, int family, int type, int proto) |
| 294 | 391 { |
| 1970 | 392 PySocketSockObject *s; |
| 3594 | 393 PySocketSock_Type.ob_type = &PyType_Type; |
|
12576
1c7c2dd1beb1
Vladimir Marangozov's long-awaited malloc restructuring.
Guido van Rossum <guido@python.org>
parents:
12493
diff
changeset
|
394 s = PyObject_New(PySocketSockObject, &PySocketSock_Type); |
| 294 | 395 if (s != NULL) { |
| 396 s->sock_fd = fd; | |
| 397 s->sock_family = family; | |
| 398 s->sock_type = type; | |
| 399 s->sock_proto = proto; | |
| 400 } | |
| 401 return s; | |
| 402 } | |
| 403 | |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
404 |
|
7942
ee2aaa2f722a
Threading speedup patches by Christopher Lindblad <cjl@infoseek.com>.
Guido van Rossum <guido@python.org>
parents:
6718
diff
changeset
|
405 /* Lock to allow python interpreter to continue, but only allow one |
|
ee2aaa2f722a
Threading speedup patches by Christopher Lindblad <cjl@infoseek.com>.
Guido van Rossum <guido@python.org>
parents:
6718
diff
changeset
|
406 thread to be in gethostbyname */ |
|
10442
9184c9e108f9
Clean up pass for the previous patches.
Guido van Rossum <guido@python.org>
parents:
10441
diff
changeset
|
407 #ifdef USE_GETHOSTBYNAME_LOCK |
|
9679
877d23bd5bdc
Thanks to Chris Herborth, the thread primitives now have proper Py*
Guido van Rossum <guido@python.org>
parents:
9588
diff
changeset
|
408 PyThread_type_lock gethostbyname_lock; |
|
7942
ee2aaa2f722a
Threading speedup patches by Christopher Lindblad <cjl@infoseek.com>.
Guido van Rossum <guido@python.org>
parents:
6718
diff
changeset
|
409 #endif |
|
ee2aaa2f722a
Threading speedup patches by Christopher Lindblad <cjl@infoseek.com>.
Guido van Rossum <guido@python.org>
parents:
6718
diff
changeset
|
410 |
|
ee2aaa2f722a
Threading speedup patches by Christopher Lindblad <cjl@infoseek.com>.
Guido van Rossum <guido@python.org>
parents:
6718
diff
changeset
|
411 |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
412 /* 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
|
413 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
|
414 to do the work; the names "" and "<broadcast>" are special. |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
415 Return the length (should always be 4 bytes), or negative if |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
416 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
|
417 |
| 294 | 418 static int |
| 13470 | 419 setipaddr(char* name, struct sockaddr_in * addr_ret) |
| 294 | 420 { |
| 421 struct hostent *hp; | |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
422 int d1, d2, d3, d4; |
|
10441
9ba5dffccb1b
Jonathan Giddy writes:
Guido van Rossum <guido@python.org>
parents:
10401
diff
changeset
|
423 int h_length; |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
424 char ch; |
|
2055
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
425 #ifdef HAVE_GETHOSTBYNAME_R |
|
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
426 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
|
427 #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
|
428 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
|
429 #else |
|
2055
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
430 char buf[1001]; |
|
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
431 int buf_len = (sizeof buf) - 1; |
|
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
432 int errnop; |
|
10453
5b54fa775e55
Vladimir Marangozov implements the AIX 3-arg gethostbyname_r code.
Guido van Rossum <guido@python.org>
parents:
10442
diff
changeset
|
433 #endif |
|
5b54fa775e55
Vladimir Marangozov implements the AIX 3-arg gethostbyname_r code.
Guido van Rossum <guido@python.org>
parents:
10442
diff
changeset
|
434 #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
|
435 int result; |
|
f81db738abd9
Patch by Rob Riggs for Linux -- glibc2 has a different argument
Guido van Rossum <guido@python.org>
parents:
9679
diff
changeset
|
436 #endif |
|
2055
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
437 #endif /* HAVE_GETHOSTBYNAME_R */ |
| 294 | 438 |
| 4600 | 439 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
|
440 if (name[0] == '\0') { |
| 294 | 441 addr_ret->sin_addr.s_addr = INADDR_ANY; |
| 442 return 4; | |
| 443 } | |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
444 if (name[0] == '<' && strcmp(name, "<broadcast>") == 0) { |
| 294 | 445 addr_ret->sin_addr.s_addr = INADDR_BROADCAST; |
| 446 return 4; | |
| 447 } | |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
448 if (sscanf(name, "%d.%d.%d.%d%c", &d1, &d2, &d3, &d4, &ch) == 4 && |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
449 0 <= d1 && d1 <= 255 && 0 <= d2 && d2 <= 255 && |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
450 0 <= d3 && d3 <= 255 && 0 <= d4 && d4 <= 255) { |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
451 addr_ret->sin_addr.s_addr = htonl( |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
452 ((long) d1 << 24) | ((long) d2 << 16) | |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
453 ((long) d3 << 8) | ((long) d4 << 0)); |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
454 return 4; |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
455 } |
|
7942
ee2aaa2f722a
Threading speedup patches by Christopher Lindblad <cjl@infoseek.com>.
Guido van Rossum <guido@python.org>
parents:
6718
diff
changeset
|
456 Py_BEGIN_ALLOW_THREADS |
|
2055
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
457 #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
|
458 #if 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
|
459 result = gethostbyname_r(name, &hp_allocated, buf, buf_len, &hp, &errnop); |
|
10453
5b54fa775e55
Vladimir Marangozov implements the AIX 3-arg gethostbyname_r code.
Guido van Rossum <guido@python.org>
parents:
10442
diff
changeset
|
460 #elif defined(HAVE_GETHOSTBYNAME_R_5_ARG) |
|
2055
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
461 hp = 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
|
462 #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
|
463 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
|
464 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
|
465 hp = (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
|
466 #endif |
|
7942
ee2aaa2f722a
Threading speedup patches by Christopher Lindblad <cjl@infoseek.com>.
Guido van Rossum <guido@python.org>
parents:
6718
diff
changeset
|
467 #else /* not HAVE_GETHOSTBYNAME_R */ |
|
10442
9184c9e108f9
Clean up pass for the previous patches.
Guido van Rossum <guido@python.org>
parents:
10441
diff
changeset
|
468 #ifdef USE_GETHOSTBYNAME_LOCK |
|
9184c9e108f9
Clean up pass for the previous patches.
Guido van Rossum <guido@python.org>
parents:
10441
diff
changeset
|
469 PyThread_acquire_lock(gethostbyname_lock, 1); |
|
7942
ee2aaa2f722a
Threading speedup patches by Christopher Lindblad <cjl@infoseek.com>.
Guido van Rossum <guido@python.org>
parents:
6718
diff
changeset
|
470 #endif |
|
ee2aaa2f722a
Threading speedup patches by Christopher Lindblad <cjl@infoseek.com>.
Guido van Rossum <guido@python.org>
parents:
6718
diff
changeset
|
471 hp = gethostbyname(name); |
|
ee2aaa2f722a
Threading speedup patches by Christopher Lindblad <cjl@infoseek.com>.
Guido van Rossum <guido@python.org>
parents:
6718
diff
changeset
|
472 #endif /* HAVE_GETHOSTBYNAME_R */ |
| 1970 | 473 Py_END_ALLOW_THREADS |
|
2055
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
474 |
| 294 | 475 if (hp == NULL) { |
|
2115
7ea369d05c2e
better test for existence of hstrerror()
Guido van Rossum <guido@python.org>
parents:
2061
diff
changeset
|
476 #ifdef HAVE_HSTRERROR |
|
2055
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
477 /* Let's get real error message to return */ |
|
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
478 extern int h_errno; |
|
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
479 PyErr_SetString(PySocket_Error, (char *)hstrerror(h_errno)); |
|
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
480 #else |
| 1970 | 481 PyErr_SetString(PySocket_Error, "host not found"); |
|
2055
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
482 #endif |
|
10442
9184c9e108f9
Clean up pass for the previous patches.
Guido van Rossum <guido@python.org>
parents:
10441
diff
changeset
|
483 #ifdef USE_GETHOSTBYNAME_LOCK |
|
10441
9ba5dffccb1b
Jonathan Giddy writes:
Guido van Rossum <guido@python.org>
parents:
10401
diff
changeset
|
484 PyThread_release_lock(gethostbyname_lock); |
|
9ba5dffccb1b
Jonathan Giddy writes:
Guido van Rossum <guido@python.org>
parents:
10401
diff
changeset
|
485 #endif |
| 294 | 486 return -1; |
| 487 } | |
| 488 memcpy((char *) &addr_ret->sin_addr, hp->h_addr, hp->h_length); | |
|
10441
9ba5dffccb1b
Jonathan Giddy writes:
Guido van Rossum <guido@python.org>
parents:
10401
diff
changeset
|
489 h_length = hp->h_length; |
|
10442
9184c9e108f9
Clean up pass for the previous patches.
Guido van Rossum <guido@python.org>
parents:
10441
diff
changeset
|
490 #ifdef USE_GETHOSTBYNAME_LOCK |
|
10441
9ba5dffccb1b
Jonathan Giddy writes:
Guido van Rossum <guido@python.org>
parents:
10401
diff
changeset
|
491 PyThread_release_lock(gethostbyname_lock); |
|
9ba5dffccb1b
Jonathan Giddy writes:
Guido van Rossum <guido@python.org>
parents:
10401
diff
changeset
|
492 #endif |
|
9ba5dffccb1b
Jonathan Giddy writes:
Guido van Rossum <guido@python.org>
parents:
10401
diff
changeset
|
493 return h_length; |
| 294 | 494 } |
| 495 | |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
496 |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
497 /* 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
|
498 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
|
499 size numbers). */ |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
500 |
| 1970 | 501 static PyObject * |
| 13470 | 502 makeipaddr(struct sockaddr_in *addr) |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
503 { |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
504 long x = ntohl(addr->sin_addr.s_addr); |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
505 char buf[100]; |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
506 sprintf(buf, "%d.%d.%d.%d", |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
507 (int) (x>>24) & 0xff, (int) (x>>16) & 0xff, |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
508 (int) (x>> 8) & 0xff, (int) (x>> 0) & 0xff); |
| 1970 | 509 return PyString_FromString(buf); |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
510 } |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
511 |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
512 |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
513 /* 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
|
514 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
|
515 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
|
516 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
|
517 |
| 294 | 518 /*ARGSUSED*/ |
| 1970 | 519 static PyObject * |
| 13470 | 520 makesockaddr(struct sockaddr *addr, int addrlen) |
| 294 | 521 { |
|
925
61143bf03b44
Sometimes, recvfrom() returns an empty address; this is not an error.
Guido van Rossum <guido@python.org>
parents:
902
diff
changeset
|
522 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
|
523 /* No address -- may be recvfrom() from known socket */ |
| 1970 | 524 Py_INCREF(Py_None); |
| 525 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
|
526 } |
|
61143bf03b44
Sometimes, recvfrom() returns an empty address; this is not an error.
Guido van Rossum <guido@python.org>
parents:
902
diff
changeset
|
527 |
|
8823
f2a4a2b60860
Changes for BeOS, QNX and long long, by Chris Herborth.
Guido van Rossum <guido@python.org>
parents:
8821
diff
changeset
|
528 #ifdef __BEOS__ |
|
12492
1725e802e3eb
Patch by Charles G Waldman:
Guido van Rossum <guido@python.org>
parents:
12479
diff
changeset
|
529 /* 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
|
530 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
|
531 #endif |
|
f2a4a2b60860
Changes for BeOS, QNX and long long, by Chris Herborth.
Guido van Rossum <guido@python.org>
parents:
8821
diff
changeset
|
532 |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
533 switch (addr->sa_family) { |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
534 |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
535 case AF_INET: |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
536 { |
| 294 | 537 struct sockaddr_in *a = (struct sockaddr_in *) addr; |
|
4871
a7159ba0e45d
Check of return values and proper error handling.
Barry Warsaw <barry@python.org>
parents:
4783
diff
changeset
|
538 PyObject *addrobj = makeipaddr(a); |
|
a7159ba0e45d
Check of return values and proper error handling.
Barry Warsaw <barry@python.org>
parents:
4783
diff
changeset
|
539 PyObject *ret = NULL; |
|
a7159ba0e45d
Check of return values and proper error handling.
Barry Warsaw <barry@python.org>
parents:
4783
diff
changeset
|
540 if (addrobj) { |
|
a7159ba0e45d
Check of return values and proper error handling.
Barry Warsaw <barry@python.org>
parents:
4783
diff
changeset
|
541 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
|
542 Py_DECREF(addrobj); |
|
a7159ba0e45d
Check of return values and proper error handling.
Barry Warsaw <barry@python.org>
parents:
4783
diff
changeset
|
543 } |
|
1207
b564bd4e57e1
* ceval.c: ifdef out the last argument passing compat hack.
Guido van Rossum <guido@python.org>
parents:
1132
diff
changeset
|
544 return ret; |
| 294 | 545 } |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
546 |
|
1746
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1413
diff
changeset
|
547 #ifdef AF_UNIX |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
548 case AF_UNIX: |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
549 { |
| 294 | 550 struct sockaddr_un *a = (struct sockaddr_un *) addr; |
| 1970 | 551 return PyString_FromString(a->sun_path); |
| 294 | 552 } |
|
1746
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1413
diff
changeset
|
553 #endif /* AF_UNIX */ |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
554 |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
555 /* More cases here... */ |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
556 |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
557 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
|
558 /* 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
|
559 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
|
560 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
|
561 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
|
562 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
|
563 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
|
564 |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
565 } |
| 294 | 566 } |
| 567 | |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
568 |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
569 /* 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
|
570 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
|
571 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
|
572 through len_ret. */ |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
573 |
| 294 | 574 static int |
| 13470 | 575 getsockaddrarg(PySocketSockObject *s, PyObject *args, struct sockaddr **addr_ret, int *len_ret) |
| 294 | 576 { |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
577 switch (s->sock_family) { |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
578 |
|
1746
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1413
diff
changeset
|
579 #ifdef AF_UNIX |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
580 case AF_UNIX: |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
581 { |
|
2055
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
582 struct sockaddr_un* addr; |
| 926 | 583 char *path; |
| 294 | 584 int len; |
|
2055
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
585 addr = (struct sockaddr_un* )&(s->sock_addr).un; |
|
9307
928ea5a409e5
Use the t# format where appropriate. Greg Stein.
Guido van Rossum <guido@python.org>
parents:
9203
diff
changeset
|
586 if (!PyArg_Parse(args, "t#", &path, &len)) |
| 294 | 587 return 0; |
|
2055
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
588 if (len > sizeof addr->sun_path) { |
|
4871
a7159ba0e45d
Check of return values and proper error handling.
Barry Warsaw <barry@python.org>
parents:
4783
diff
changeset
|
589 PyErr_SetString(PySocket_Error, |
|
a7159ba0e45d
Check of return values and proper error handling.
Barry Warsaw <barry@python.org>
parents:
4783
diff
changeset
|
590 "AF_UNIX path too long"); |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
591 return 0; |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
592 } |
|
2055
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
593 addr->sun_family = AF_UNIX; |
|
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
594 memcpy(addr->sun_path, path, len); |
|
2736
37c48fde61b8
add setblocking(); NT changes; null-terminate Unix path
Guido van Rossum <guido@python.org>
parents:
2565
diff
changeset
|
595 addr->sun_path[len] = 0; |
|
2055
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
596 *addr_ret = (struct sockaddr *) addr; |
|
3666
556ec82f4d93
Calculate length of AF_UNIX addr struct portably in getsockaddrarg().
Guido van Rossum <guido@python.org>
parents:
3665
diff
changeset
|
597 *len_ret = len + sizeof(*addr) - sizeof(addr->sun_path); |
| 294 | 598 return 1; |
| 599 } | |
|
1746
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1413
diff
changeset
|
600 #endif /* AF_UNIX */ |
| 294 | 601 |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
602 case AF_INET: |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
603 { |
|
2055
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
604 struct sockaddr_in* addr; |
| 926 | 605 char *host; |
| 294 | 606 int port; |
|
2055
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
607 addr=(struct sockaddr_in*)&(s->sock_addr).in; |
|
15466
9731bbb52fb4
Patch by Michael Hudson to clarify the error message from
Guido van Rossum <guido@python.org>
parents:
15046
diff
changeset
|
608 if (!PyTuple_Check(args)) { |
|
9731bbb52fb4
Patch by Michael Hudson to clarify the error message from
Guido van Rossum <guido@python.org>
parents:
15046
diff
changeset
|
609 PyErr_Format(PyExc_TypeError, |
|
9731bbb52fb4
Patch by Michael Hudson to clarify the error message from
Guido van Rossum <guido@python.org>
parents:
15046
diff
changeset
|
610 "getsockaddrarg: AF_INET address must be tuple, not %.500s", |
|
9731bbb52fb4
Patch by Michael Hudson to clarify the error message from
Guido van Rossum <guido@python.org>
parents:
15046
diff
changeset
|
611 args->ob_type->tp_name); |
|
9731bbb52fb4
Patch by Michael Hudson to clarify the error message from
Guido van Rossum <guido@python.org>
parents:
15046
diff
changeset
|
612 return 0; |
|
9731bbb52fb4
Patch by Michael Hudson to clarify the error message from
Guido van Rossum <guido@python.org>
parents:
15046
diff
changeset
|
613 } |
|
9731bbb52fb4
Patch by Michael Hudson to clarify the error message from
Guido van Rossum <guido@python.org>
parents:
15046
diff
changeset
|
614 if (!PyArg_ParseTuple(args, "si:getsockaddrarg", &host, &port)) |
| 294 | 615 return 0; |
|
2055
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
616 if (setipaddr(host, addr) < 0) |
| 294 | 617 return 0; |
|
2055
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
618 addr->sin_family = AF_INET; |
|
5287
5af766a1b531
Tweaks to keep the Microsoft compiler quier.
Guido van Rossum <guido@python.org>
parents:
4871
diff
changeset
|
619 addr->sin_port = htons((short)port); |
|
2055
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
620 *addr_ret = (struct sockaddr *) addr; |
|
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
621 *len_ret = sizeof *addr; |
| 294 | 622 return 1; |
| 623 } | |
| 624 | |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
625 /* More cases here... */ |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
626 |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
627 default: |
| 1970 | 628 PyErr_SetString(PySocket_Error, "getsockaddrarg: bad family"); |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
629 return 0; |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
630 |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
631 } |
| 294 | 632 } |
| 633 | |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
634 |
|
900
58a7438c2e7e
Some UNIX types want the exact size of the address structure
Guido van Rossum <guido@python.org>
parents:
896
diff
changeset
|
635 /* Get the address length according to the socket object's address family. |
|
58a7438c2e7e
Some UNIX types want the exact size of the address structure
Guido van Rossum <guido@python.org>
parents:
896
diff
changeset
|
636 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
|
637 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
|
638 |
|
58a7438c2e7e
Some UNIX types want the exact size of the address structure
Guido van Rossum <guido@python.org>
parents:
896
diff
changeset
|
639 static int |
|
13554
906efc1da247
Errare humanum est.
Peter Schneider-Kamp <nowonder@nowonder.de>
parents:
13538
diff
changeset
|
640 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
|
641 { |
|
58a7438c2e7e
Some UNIX types want the exact size of the address structure
Guido van Rossum <guido@python.org>
parents:
896
diff
changeset
|
642 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
|
643 |
|
1746
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1413
diff
changeset
|
644 #ifdef 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
|
645 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
|
646 { |
|
58a7438c2e7e
Some UNIX types want the exact size of the address structure
Guido van Rossum <guido@python.org>
parents:
896
diff
changeset
|
647 *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
|
648 return 1; |
|
58a7438c2e7e
Some UNIX types want the exact size of the address structure
Guido van Rossum <guido@python.org>
parents:
896
diff
changeset
|
649 } |
|
1746
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1413
diff
changeset
|
650 #endif /* 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
|
651 |
|
58a7438c2e7e
Some UNIX types want the exact size of the address structure
Guido van Rossum <guido@python.org>
parents:
896
diff
changeset
|
652 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
|
653 { |
|
58a7438c2e7e
Some UNIX types want the exact size of the address structure
Guido van Rossum <guido@python.org>
parents:
896
diff
changeset
|
654 *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
|
655 return 1; |
|
58a7438c2e7e
Some UNIX types want the exact size of the address structure
Guido van Rossum <guido@python.org>
parents:
896
diff
changeset
|
656 } |
|
58a7438c2e7e
Some UNIX types want the exact size of the address structure
Guido van Rossum <guido@python.org>
parents:
896
diff
changeset
|
657 |
|
58a7438c2e7e
Some UNIX types want the exact size of the address structure
Guido van Rossum <guido@python.org>
parents:
896
diff
changeset
|
658 /* 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
|
659 |
|
58a7438c2e7e
Some UNIX types want the exact size of the address structure
Guido van Rossum <guido@python.org>
parents:
896
diff
changeset
|
660 default: |
|
12050
b90880c0e5eb
Fix all routines to use PyArg_ParseTuple(), and add ":name" to the
Guido van Rossum <guido@python.org>
parents:
11937
diff
changeset
|
661 PyErr_SetString(PySocket_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
|
662 return 0; |
|
58a7438c2e7e
Some UNIX types want the exact size of the address structure
Guido van Rossum <guido@python.org>
parents:
896
diff
changeset
|
663 |
|
58a7438c2e7e
Some UNIX types want the exact size of the address structure
Guido van Rossum <guido@python.org>
parents:
896
diff
changeset
|
664 } |
|
58a7438c2e7e
Some UNIX types want the exact size of the address structure
Guido van Rossum <guido@python.org>
parents:
896
diff
changeset
|
665 } |
|
58a7438c2e7e
Some UNIX types want the exact size of the address structure
Guido van Rossum <guido@python.org>
parents:
896
diff
changeset
|
666 |
|
58a7438c2e7e
Some UNIX types want the exact size of the address structure
Guido van Rossum <guido@python.org>
parents:
896
diff
changeset
|
667 |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
668 /* s.accept() method */ |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
669 |
| 1970 | 670 static PyObject * |
| 13470 | 671 PySocketSock_accept(PySocketSockObject *s, PyObject *args) |
| 294 | 672 { |
| 673 char addrbuf[256]; | |
|
13171
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
674 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
|
675 socklen_t addrlen; |
|
4871
a7159ba0e45d
Check of return values and proper error handling.
Barry Warsaw <barry@python.org>
parents:
4783
diff
changeset
|
676 PyObject *sock = NULL; |
|
a7159ba0e45d
Check of return values and proper error handling.
Barry Warsaw <barry@python.org>
parents:
4783
diff
changeset
|
677 PyObject *addr = NULL; |
|
a7159ba0e45d
Check of return values and proper error handling.
Barry Warsaw <barry@python.org>
parents:
4783
diff
changeset
|
678 PyObject *res = NULL; |
|
a7159ba0e45d
Check of return values and proper error handling.
Barry Warsaw <barry@python.org>
parents:
4783
diff
changeset
|
679 |
|
12050
b90880c0e5eb
Fix all routines to use PyArg_ParseTuple(), and add ":name" to the
Guido van Rossum <guido@python.org>
parents:
11937
diff
changeset
|
680 if (!PyArg_ParseTuple(args, ":accept")) |
| 294 | 681 return NULL; |
|
900
58a7438c2e7e
Some UNIX types want the exact size of the address structure
Guido van Rossum <guido@python.org>
parents:
896
diff
changeset
|
682 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
|
683 return NULL; |
| 1970 | 684 Py_BEGIN_ALLOW_THREADS |
| 294 | 685 newfd = accept(s->sock_fd, (struct sockaddr *) addrbuf, &addrlen); |
| 1970 | 686 Py_END_ALLOW_THREADS |
|
13171
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
687 #ifdef MS_WINDOWS |
|
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
688 if (newfd == INVALID_SOCKET) |
|
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
689 #else |
| 294 | 690 if (newfd < 0) |
|
13171
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
691 #endif |
| 1970 | 692 return PySocket_Err(); |
|
4871
a7159ba0e45d
Check of return values and proper error handling.
Barry Warsaw <barry@python.org>
parents:
4783
diff
changeset
|
693 |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
694 /* 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
|
695 to avoid calls to bind() etc. on it. */ |
| 1970 | 696 sock = (PyObject *) PySocketSock_New(newfd, |
|
1207
b564bd4e57e1
* ceval.c: ifdef out the last argument passing compat hack.
Guido van Rossum <guido@python.org>
parents:
1132
diff
changeset
|
697 s->sock_family, |
|
b564bd4e57e1
* ceval.c: ifdef out the last argument passing compat hack.
Guido van Rossum <guido@python.org>
parents:
1132
diff
changeset
|
698 s->sock_type, |
|
b564bd4e57e1
* ceval.c: ifdef out the last argument passing compat hack.
Guido van Rossum <guido@python.org>
parents:
1132
diff
changeset
|
699 s->sock_proto); |
|
4871
a7159ba0e45d
Check of return values and proper error handling.
Barry Warsaw <barry@python.org>
parents:
4783
diff
changeset
|
700 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
|
701 SOCKETCLOSE(newfd); |
|
4871
a7159ba0e45d
Check of return values and proper error handling.
Barry Warsaw <barry@python.org>
parents:
4783
diff
changeset
|
702 goto finally; |
|
a7159ba0e45d
Check of return values and proper error handling.
Barry Warsaw <barry@python.org>
parents:
4783
diff
changeset
|
703 } |
|
a7159ba0e45d
Check of return values and proper error handling.
Barry Warsaw <barry@python.org>
parents:
4783
diff
changeset
|
704 if (!(addr = makesockaddr((struct sockaddr *) addrbuf, addrlen))) |
|
a7159ba0e45d
Check of return values and proper error handling.
Barry Warsaw <barry@python.org>
parents:
4783
diff
changeset
|
705 goto finally; |
|
a7159ba0e45d
Check of return values and proper error handling.
Barry Warsaw <barry@python.org>
parents:
4783
diff
changeset
|
706 |
|
a7159ba0e45d
Check of return values and proper error handling.
Barry Warsaw <barry@python.org>
parents:
4783
diff
changeset
|
707 if (!(res = Py_BuildValue("OO", sock, addr))) |
|
a7159ba0e45d
Check of return values and proper error handling.
Barry Warsaw <barry@python.org>
parents:
4783
diff
changeset
|
708 goto finally; |
|
a7159ba0e45d
Check of return values and proper error handling.
Barry Warsaw <barry@python.org>
parents:
4783
diff
changeset
|
709 |
|
a7159ba0e45d
Check of return values and proper error handling.
Barry Warsaw <barry@python.org>
parents:
4783
diff
changeset
|
710 finally: |
| 1970 | 711 Py_XDECREF(sock); |
| 712 Py_XDECREF(addr); | |
| 294 | 713 return res; |
| 714 } | |
| 715 | |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
716 static char accept_doc[] = |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
717 "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
|
718 \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
719 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
|
720 connection, and the address of the client. For IP sockets, the address\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
721 info is a pair (hostaddr, port)."; |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
722 |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
723 |
|
1867
758c1374f303
Setup.in: added tkinter; rearranged the definition of PYTHONPATH so
Guido van Rossum <guido@python.org>
parents:
1792
diff
changeset
|
724 /* s.setblocking(1 | 0) method */ |
|
758c1374f303
Setup.in: added tkinter; rearranged the definition of PYTHONPATH so
Guido van Rossum <guido@python.org>
parents:
1792
diff
changeset
|
725 |
| 1970 | 726 static PyObject * |
| 13470 | 727 PySocketSock_setblocking(PySocketSockObject *s, PyObject *args) |
|
1867
758c1374f303
Setup.in: added tkinter; rearranged the definition of PYTHONPATH so
Guido van Rossum <guido@python.org>
parents:
1792
diff
changeset
|
728 { |
|
758c1374f303
Setup.in: added tkinter; rearranged the definition of PYTHONPATH so
Guido van Rossum <guido@python.org>
parents:
1792
diff
changeset
|
729 int block; |
|
5287
5af766a1b531
Tweaks to keep the Microsoft compiler quier.
Guido van Rossum <guido@python.org>
parents:
4871
diff
changeset
|
730 #ifndef MS_WINDOWS |
|
1867
758c1374f303
Setup.in: added tkinter; rearranged the definition of PYTHONPATH so
Guido van Rossum <guido@python.org>
parents:
1792
diff
changeset
|
731 int delay_flag; |
|
5287
5af766a1b531
Tweaks to keep the Microsoft compiler quier.
Guido van Rossum <guido@python.org>
parents:
4871
diff
changeset
|
732 #endif |
|
12050
b90880c0e5eb
Fix all routines to use PyArg_ParseTuple(), and add ":name" to the
Guido van Rossum <guido@python.org>
parents:
11937
diff
changeset
|
733 if (!PyArg_ParseTuple(args, "i:setblocking", &block)) |
|
1867
758c1374f303
Setup.in: added tkinter; rearranged the definition of PYTHONPATH so
Guido van Rossum <guido@python.org>
parents:
1792
diff
changeset
|
734 return NULL; |
| 1970 | 735 Py_BEGIN_ALLOW_THREADS |
|
8823
f2a4a2b60860
Changes for BeOS, QNX and long long, by Chris Herborth.
Guido van Rossum <guido@python.org>
parents:
8821
diff
changeset
|
736 #ifdef __BEOS__ |
|
f2a4a2b60860
Changes for BeOS, QNX and long long, by Chris Herborth.
Guido van Rossum <guido@python.org>
parents:
8821
diff
changeset
|
737 block = !block; |
|
f2a4a2b60860
Changes for BeOS, QNX and long long, by Chris Herborth.
Guido van Rossum <guido@python.org>
parents:
8821
diff
changeset
|
738 setsockopt( s->sock_fd, SOL_SOCKET, SO_NONBLOCK, |
|
f2a4a2b60860
Changes for BeOS, QNX and long long, by Chris Herborth.
Guido van Rossum <guido@python.org>
parents:
8821
diff
changeset
|
739 (void *)(&block), sizeof( int ) ); |
|
f2a4a2b60860
Changes for BeOS, QNX and long long, by Chris Herborth.
Guido van Rossum <guido@python.org>
parents:
8821
diff
changeset
|
740 #else |
|
3738
ce74bba8a6a6
Slightly different Windows ifdefs
Guido van Rossum <guido@python.org>
parents:
3702
diff
changeset
|
741 #ifndef MS_WINDOWS |
|
6626
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
742 #ifdef PYOS_OS2 |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
743 block = !block; |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
744 ioctl(s->sock_fd, FIONBIO, (caddr_t)&block, sizeof(block)); |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
745 #else /* !PYOS_OS2 */ |
|
1867
758c1374f303
Setup.in: added tkinter; rearranged the definition of PYTHONPATH so
Guido van Rossum <guido@python.org>
parents:
1792
diff
changeset
|
746 delay_flag = fcntl (s->sock_fd, F_GETFL, 0); |
|
758c1374f303
Setup.in: added tkinter; rearranged the definition of PYTHONPATH so
Guido van Rossum <guido@python.org>
parents:
1792
diff
changeset
|
747 if (block) |
|
758c1374f303
Setup.in: added tkinter; rearranged the definition of PYTHONPATH so
Guido van Rossum <guido@python.org>
parents:
1792
diff
changeset
|
748 delay_flag &= (~O_NDELAY); |
|
758c1374f303
Setup.in: added tkinter; rearranged the definition of PYTHONPATH so
Guido van Rossum <guido@python.org>
parents:
1792
diff
changeset
|
749 else |
|
758c1374f303
Setup.in: added tkinter; rearranged the definition of PYTHONPATH so
Guido van Rossum <guido@python.org>
parents:
1792
diff
changeset
|
750 delay_flag |= O_NDELAY; |
|
758c1374f303
Setup.in: added tkinter; rearranged the definition of PYTHONPATH so
Guido van Rossum <guido@python.org>
parents:
1792
diff
changeset
|
751 fcntl (s->sock_fd, F_SETFL, delay_flag); |
|
6626
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
752 #endif /* !PYOS_OS2 */ |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
753 #else /* MS_WINDOWS */ |
|
2736
37c48fde61b8
add setblocking(); NT changes; null-terminate Unix path
Guido van Rossum <guido@python.org>
parents:
2565
diff
changeset
|
754 block = !block; |
|
37c48fde61b8
add setblocking(); NT changes; null-terminate Unix path
Guido van Rossum <guido@python.org>
parents:
2565
diff
changeset
|
755 ioctlsocket(s->sock_fd, FIONBIO, (u_long*)&block); |
|
6626
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
756 #endif /* MS_WINDOWS */ |
|
8823
f2a4a2b60860
Changes for BeOS, QNX and long long, by Chris Herborth.
Guido van Rossum <guido@python.org>
parents:
8821
diff
changeset
|
757 #endif /* __BEOS__ */ |
| 1970 | 758 Py_END_ALLOW_THREADS |
|
1867
758c1374f303
Setup.in: added tkinter; rearranged the definition of PYTHONPATH so
Guido van Rossum <guido@python.org>
parents:
1792
diff
changeset
|
759 |
| 1970 | 760 Py_INCREF(Py_None); |
| 761 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
|
762 } |
|
758c1374f303
Setup.in: added tkinter; rearranged the definition of PYTHONPATH so
Guido van Rossum <guido@python.org>
parents:
1792
diff
changeset
|
763 |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
764 static char setblocking_doc[] = |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
765 "setblocking(flag)\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
766 \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
767 Set the socket to blocking (flag is true) or non-blocking (false).\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
768 This uses the FIONBIO ioctl with the O_NDELAY flag."; |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
769 |
|
1867
758c1374f303
Setup.in: added tkinter; rearranged the definition of PYTHONPATH so
Guido van Rossum <guido@python.org>
parents:
1792
diff
changeset
|
770 |
|
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
|
771 /* 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
|
772 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
|
773 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
|
774 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
|
775 |
| 1970 | 776 static PyObject * |
| 13470 | 777 PySocketSock_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
|
778 { |
|
6459e2f21bf6
Added {get,set}sockopt(). allowbroadcast is now obsolete.
Guido van Rossum <guido@python.org>
parents:
795
diff
changeset
|
779 int level; |
|
6459e2f21bf6
Added {get,set}sockopt(). allowbroadcast is now obsolete.
Guido van Rossum <guido@python.org>
parents:
795
diff
changeset
|
780 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
|
781 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
|
782 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
|
783 int buflen; |
|
896
6459e2f21bf6
Added {get,set}sockopt(). allowbroadcast is now obsolete.
Guido van Rossum <guido@python.org>
parents:
795
diff
changeset
|
784 int flag; |
|
6459e2f21bf6
Added {get,set}sockopt(). allowbroadcast is now obsolete.
Guido van Rossum <guido@python.org>
parents:
795
diff
changeset
|
785 |
|
12050
b90880c0e5eb
Fix all routines to use PyArg_ParseTuple(), and add ":name" to the
Guido van Rossum <guido@python.org>
parents:
11937
diff
changeset
|
786 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
|
787 &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
|
788 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
|
789 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
|
790 } |
|
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
|
791 else { |
| 1970 | 792 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
|
793 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
|
794 &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
|
795 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
|
796 } |
|
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
|
797 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
|
798 if (res < 0) |
| 1970 | 799 return PySocket_Err(); |
| 800 Py_INCREF(Py_None); | |
| 801 return Py_None; | |
|
896
6459e2f21bf6
Added {get,set}sockopt(). allowbroadcast is now obsolete.
Guido van Rossum <guido@python.org>
parents:
795
diff
changeset
|
802 } |
|
6459e2f21bf6
Added {get,set}sockopt(). allowbroadcast is now obsolete.
Guido van Rossum <guido@python.org>
parents:
795
diff
changeset
|
803 |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
804 static char setsockopt_doc[] = |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
805 "setsockopt(level, option, value)\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
806 \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
807 Set 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
|
808 The value argument can either be an integer or a string."; |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
809 |
|
896
6459e2f21bf6
Added {get,set}sockopt(). allowbroadcast is now obsolete.
Guido van Rossum <guido@python.org>
parents:
795
diff
changeset
|
810 |
|
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
|
811 /* 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
|
812 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
|
813 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
|
814 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
|
815 |
| 1970 | 816 static PyObject * |
| 13470 | 817 PySocketSock_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
|
818 { |
|
6459e2f21bf6
Added {get,set}sockopt(). allowbroadcast is now obsolete.
Guido van Rossum <guido@python.org>
parents:
795
diff
changeset
|
819 int level; |
|
6459e2f21bf6
Added {get,set}sockopt(). allowbroadcast is now obsolete.
Guido van Rossum <guido@python.org>
parents:
795
diff
changeset
|
820 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
|
821 int res; |
| 1970 | 822 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
|
823 socklen_t buflen = 0; |
|
896
6459e2f21bf6
Added {get,set}sockopt(). allowbroadcast is now obsolete.
Guido van Rossum <guido@python.org>
parents:
795
diff
changeset
|
824 |
|
8823
f2a4a2b60860
Changes for BeOS, QNX and long long, by Chris Herborth.
Guido van Rossum <guido@python.org>
parents:
8821
diff
changeset
|
825 #ifdef __BEOS__ |
|
f2a4a2b60860
Changes for BeOS, QNX and long long, by Chris Herborth.
Guido van Rossum <guido@python.org>
parents:
8821
diff
changeset
|
826 /* We have incomplete socket support. */ |
|
f2a4a2b60860
Changes for BeOS, QNX and long long, by Chris Herborth.
Guido van Rossum <guido@python.org>
parents:
8821
diff
changeset
|
827 PyErr_SetString( PySocket_Error, "getsockopt not supported" ); |
|
f2a4a2b60860
Changes for BeOS, QNX and long long, by Chris Herborth.
Guido van Rossum <guido@python.org>
parents:
8821
diff
changeset
|
828 return NULL; |
|
f2a4a2b60860
Changes for BeOS, QNX and long long, by Chris Herborth.
Guido van Rossum <guido@python.org>
parents:
8821
diff
changeset
|
829 #else |
|
f2a4a2b60860
Changes for BeOS, QNX and long long, by Chris Herborth.
Guido van Rossum <guido@python.org>
parents:
8821
diff
changeset
|
830 |
|
12050
b90880c0e5eb
Fix all routines to use PyArg_ParseTuple(), and add ":name" to the
Guido van Rossum <guido@python.org>
parents:
11937
diff
changeset
|
831 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
|
832 &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
|
833 return NULL; |
|
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
|
834 |
|
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
|
835 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
|
836 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
|
837 socklen_t flagsize = sizeof flag; |
|
1413
c914b10bf2ed
* timemodule.c: Add hack for Solaris 2.
Guido van Rossum <guido@python.org>
parents:
1313
diff
changeset
|
838 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
|
839 (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
|
840 if (res < 0) |
| 1970 | 841 return PySocket_Err(); |
| 842 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
|
843 } |
|
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
|
844 if (buflen <= 0 || buflen > 1024) { |
|
4871
a7159ba0e45d
Check of return values and proper error handling.
Barry Warsaw <barry@python.org>
parents:
4783
diff
changeset
|
845 PyErr_SetString(PySocket_Error, |
|
a7159ba0e45d
Check of return values and proper error handling.
Barry Warsaw <barry@python.org>
parents:
4783
diff
changeset
|
846 "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
|
847 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
|
848 } |
| 1970 | 849 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
|
850 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
|
851 return NULL; |
|
1413
c914b10bf2ed
* timemodule.c: Add hack for Solaris 2.
Guido van Rossum <guido@python.org>
parents:
1313
diff
changeset
|
852 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
|
853 (void *)PyString_AsString(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
|
854 if (res < 0) { |
| 1970 | 855 Py_DECREF(buf); |
| 856 return PySocket_Err(); | |
|
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
|
857 } |
| 1970 | 858 _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
|
859 return buf; |
|
8823
f2a4a2b60860
Changes for BeOS, QNX and long long, by Chris Herborth.
Guido van Rossum <guido@python.org>
parents:
8821
diff
changeset
|
860 #endif /* __BEOS__ */ |
|
896
6459e2f21bf6
Added {get,set}sockopt(). allowbroadcast is now obsolete.
Guido van Rossum <guido@python.org>
parents:
795
diff
changeset
|
861 } |
|
6459e2f21bf6
Added {get,set}sockopt(). allowbroadcast is now obsolete.
Guido van Rossum <guido@python.org>
parents:
795
diff
changeset
|
862 |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
863 static char getsockopt_doc[] = |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
864 "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
|
865 \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
866 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
|
867 If a nonzero buffersize argument is given, the return value is a\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
868 string of that length; otherwise it is an integer."; |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
869 |
|
896
6459e2f21bf6
Added {get,set}sockopt(). allowbroadcast is now obsolete.
Guido van Rossum <guido@python.org>
parents:
795
diff
changeset
|
870 |
|
13278
3370edad08ce
Restore strict checking of socket address values; addresses passed to
Fred Drake <fdrake@acm.org>
parents:
13256
diff
changeset
|
871 /* s.bind(sockaddr) method */ |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
872 |
| 1970 | 873 static PyObject * |
| 13470 | 874 PySocketSock_bind(PySocketSockObject *s, PyObject *args) |
| 294 | 875 { |
| 876 struct sockaddr *addr; | |
| 877 int addrlen; | |
| 926 | 878 int res; |
|
13278
3370edad08ce
Restore strict checking of socket address values; addresses passed to
Fred Drake <fdrake@acm.org>
parents:
13256
diff
changeset
|
879 PyObject *addro; |
|
3370edad08ce
Restore strict checking of socket address values; addresses passed to
Fred Drake <fdrake@acm.org>
parents:
13256
diff
changeset
|
880 if (!PyArg_ParseTuple(args, "O:bind", &addro)) |
|
3370edad08ce
Restore strict checking of socket address values; addresses passed to
Fred Drake <fdrake@acm.org>
parents:
13256
diff
changeset
|
881 return NULL; |
|
3370edad08ce
Restore strict checking of socket address values; addresses passed to
Fred Drake <fdrake@acm.org>
parents:
13256
diff
changeset
|
882 if (!getsockaddrarg(s, addro, &addr, &addrlen)) |
| 294 | 883 return NULL; |
| 1970 | 884 Py_BEGIN_ALLOW_THREADS |
| 926 | 885 res = bind(s->sock_fd, addr, addrlen); |
| 1970 | 886 Py_END_ALLOW_THREADS |
| 926 | 887 if (res < 0) |
| 1970 | 888 return PySocket_Err(); |
| 889 Py_INCREF(Py_None); | |
| 890 return Py_None; | |
| 294 | 891 } |
| 892 | |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
893 static char bind_doc[] = |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
894 "bind(address)\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
895 \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
896 Bind the socket to a local address. For IP sockets, the address is a\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
897 pair (host, port); the host must refer to the local host."; |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
898 |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
899 |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
900 /* s.close() method. |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
901 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
|
902 will surely fail. */ |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
903 |
| 1970 | 904 static PyObject * |
| 13470 | 905 PySocketSock_close(PySocketSockObject *s, PyObject *args) |
| 294 | 906 { |
|
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
|
907 SOCKET_T fd; |
|
12050
b90880c0e5eb
Fix all routines to use PyArg_ParseTuple(), and add ":name" to the
Guido van Rossum <guido@python.org>
parents:
11937
diff
changeset
|
908 if (!PyArg_ParseTuple(args, ":close")) |
| 294 | 909 return NULL; |
|
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
|
910 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
|
911 s->sock_fd = -1; |
|
4407
7ddd8b3f6802
Don't close an already closed socket.
Guido van Rossum <guido@python.org>
parents:
3738
diff
changeset
|
912 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
|
913 (void) SOCKETCLOSE(fd); |
|
4407
7ddd8b3f6802
Don't close an already closed socket.
Guido van Rossum <guido@python.org>
parents:
3738
diff
changeset
|
914 Py_END_ALLOW_THREADS |
|
7ddd8b3f6802
Don't close an already closed socket.
Guido van Rossum <guido@python.org>
parents:
3738
diff
changeset
|
915 } |
| 1970 | 916 Py_INCREF(Py_None); |
| 917 return Py_None; | |
| 294 | 918 } |
| 919 | |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
920 static char close_doc[] = |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
921 "close()\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
922 \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
923 Close the socket. It cannot be used after this call."; |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
924 |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
925 |
|
13278
3370edad08ce
Restore strict checking of socket address values; addresses passed to
Fred Drake <fdrake@acm.org>
parents:
13256
diff
changeset
|
926 /* s.connect(sockaddr) method */ |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
927 |
| 1970 | 928 static PyObject * |
| 13470 | 929 PySocketSock_connect(PySocketSockObject *s, PyObject *args) |
| 294 | 930 { |
| 931 struct sockaddr *addr; | |
| 932 int addrlen; | |
| 926 | 933 int res; |
|
13278
3370edad08ce
Restore strict checking of socket address values; addresses passed to
Fred Drake <fdrake@acm.org>
parents:
13256
diff
changeset
|
934 PyObject *addro; |
|
3370edad08ce
Restore strict checking of socket address values; addresses passed to
Fred Drake <fdrake@acm.org>
parents:
13256
diff
changeset
|
935 if (!PyArg_ParseTuple(args, "O:connect", &addro)) |
|
3370edad08ce
Restore strict checking of socket address values; addresses passed to
Fred Drake <fdrake@acm.org>
parents:
13256
diff
changeset
|
936 return NULL; |
|
3370edad08ce
Restore strict checking of socket address values; addresses passed to
Fred Drake <fdrake@acm.org>
parents:
13256
diff
changeset
|
937 if (!getsockaddrarg(s, addro, &addr, &addrlen)) |
| 294 | 938 return NULL; |
| 1970 | 939 Py_BEGIN_ALLOW_THREADS |
| 926 | 940 res = connect(s->sock_fd, addr, addrlen); |
| 1970 | 941 Py_END_ALLOW_THREADS |
| 926 | 942 if (res < 0) |
| 1970 | 943 return PySocket_Err(); |
| 944 Py_INCREF(Py_None); | |
| 945 return Py_None; | |
| 294 | 946 } |
| 947 | |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
948 static char connect_doc[] = |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
949 "connect(address)\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
950 \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
951 Connect the socket to a remote address. For IP sockets, the address\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
952 is a pair (host, port)."; |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
953 |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
954 |
|
13278
3370edad08ce
Restore strict checking of socket address values; addresses passed to
Fred Drake <fdrake@acm.org>
parents:
13256
diff
changeset
|
955 /* 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
|
956 |
|
f67a6339ede7
Add s.connect_ex() which returns errno instead of raising an exception.
Guido van Rossum <guido@python.org>
parents:
6367
diff
changeset
|
957 static PyObject * |
| 13470 | 958 PySocketSock_connect_ex(PySocketSockObject *s, PyObject *args) |
|
6604
f67a6339ede7
Add s.connect_ex() which returns errno instead of raising an exception.
Guido van Rossum <guido@python.org>
parents:
6367
diff
changeset
|
959 { |
|
f67a6339ede7
Add s.connect_ex() which returns errno instead of raising an exception.
Guido van Rossum <guido@python.org>
parents:
6367
diff
changeset
|
960 struct sockaddr *addr; |
|
f67a6339ede7
Add s.connect_ex() which returns errno instead of raising an exception.
Guido van Rossum <guido@python.org>
parents:
6367
diff
changeset
|
961 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
|
962 int res; |
|
13278
3370edad08ce
Restore strict checking of socket address values; addresses passed to
Fred Drake <fdrake@acm.org>
parents:
13256
diff
changeset
|
963 PyObject *addro; |
|
3370edad08ce
Restore strict checking of socket address values; addresses passed to
Fred Drake <fdrake@acm.org>
parents:
13256
diff
changeset
|
964 if (!PyArg_ParseTuple(args, "O:connect_ex", &addro)) |
|
3370edad08ce
Restore strict checking of socket address values; addresses passed to
Fred Drake <fdrake@acm.org>
parents:
13256
diff
changeset
|
965 return NULL; |
|
3370edad08ce
Restore strict checking of socket address values; addresses passed to
Fred Drake <fdrake@acm.org>
parents:
13256
diff
changeset
|
966 if (!getsockaddrarg(s, addro, &addr, &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
|
967 return NULL; |
|
f67a6339ede7
Add s.connect_ex() which returns errno instead of raising an exception.
Guido van Rossum <guido@python.org>
parents:
6367
diff
changeset
|
968 Py_BEGIN_ALLOW_THREADS |
|
f67a6339ede7
Add s.connect_ex() which returns errno instead of raising an exception.
Guido van Rossum <guido@python.org>
parents:
6367
diff
changeset
|
969 res = connect(s->sock_fd, addr, addrlen); |
|
f67a6339ede7
Add s.connect_ex() which returns errno instead of raising an exception.
Guido van Rossum <guido@python.org>
parents:
6367
diff
changeset
|
970 Py_END_ALLOW_THREADS |
|
f67a6339ede7
Add s.connect_ex() which returns errno instead of raising an exception.
Guido van Rossum <guido@python.org>
parents:
6367
diff
changeset
|
971 if (res != 0) |
|
f67a6339ede7
Add s.connect_ex() which returns errno instead of raising an exception.
Guido van Rossum <guido@python.org>
parents:
6367
diff
changeset
|
972 res = errno; |
|
f67a6339ede7
Add s.connect_ex() which returns errno instead of raising an exception.
Guido van Rossum <guido@python.org>
parents:
6367
diff
changeset
|
973 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
|
974 } |
|
f67a6339ede7
Add s.connect_ex() which returns errno instead of raising an exception.
Guido van Rossum <guido@python.org>
parents:
6367
diff
changeset
|
975 |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
976 static char connect_ex_doc[] = |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
977 "connect_ex(address)\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
978 \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
979 This is like connect(address), but returns an error code (the errno value)\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
980 instead of raising an exception when an error occurs."; |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
981 |
|
6604
f67a6339ede7
Add s.connect_ex() which returns errno instead of raising an exception.
Guido van Rossum <guido@python.org>
parents:
6367
diff
changeset
|
982 |
|
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
|
983 /* 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
|
984 |
| 1970 | 985 static PyObject * |
| 13470 | 986 PySocketSock_fileno(PySocketSockObject *s, PyObject *args) |
|
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
|
987 { |
|
12050
b90880c0e5eb
Fix all routines to use PyArg_ParseTuple(), and add ":name" to the
Guido van Rossum <guido@python.org>
parents:
11937
diff
changeset
|
988 if (!PyArg_ParseTuple(args, ":fileno")) |
|
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
|
989 return NULL; |
|
13171
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
990 #if SIZEOF_SOCKET_T <= SIZEOF_LONG |
| 1970 | 991 return PyInt_FromLong((long) s->sock_fd); |
|
13171
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
992 #else |
|
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
993 return PyLong_FromLongLong((LONG_LONG)s->sock_fd); |
|
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
994 #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
|
995 } |
|
a4793ae26682
Changes for new UNIX-specific built-in module 'select' and new header for
Guido van Rossum <guido@python.org>
parents:
900
diff
changeset
|
996 |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
997 static char fileno_doc[] = |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
998 "fileno() -> integer\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
999 \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1000 Return the integer file descriptor of the socket."; |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1001 |
|
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
|
1002 |
|
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
|
1003 #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
|
1004 /* 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
|
1005 |
|
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
|
1006 static PyObject * |
| 13470 | 1007 PySocketSock_dup(PySocketSockObject *s, PyObject *args) |
|
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
|
1008 { |
|
13171
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
1009 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
|
1010 PyObject *sock; |
|
12050
b90880c0e5eb
Fix all routines to use PyArg_ParseTuple(), and add ":name" to the
Guido van Rossum <guido@python.org>
parents:
11937
diff
changeset
|
1011 if (!PyArg_ParseTuple(args, ":dup")) |
|
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
|
1012 return NULL; |
|
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
|
1013 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
|
1014 if (newfd < 0) |
|
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
|
1015 return PySocket_Err(); |
|
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
|
1016 sock = (PyObject *) PySocketSock_New(newfd, |
|
4871
a7159ba0e45d
Check of return values and proper error handling.
Barry Warsaw <barry@python.org>
parents:
4783
diff
changeset
|
1017 s->sock_family, |
|
a7159ba0e45d
Check of return values and proper error handling.
Barry Warsaw <barry@python.org>
parents:
4783
diff
changeset
|
1018 s->sock_type, |
|
a7159ba0e45d
Check of return values and proper error handling.
Barry Warsaw <barry@python.org>
parents:
4783
diff
changeset
|
1019 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
|
1020 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
|
1021 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
|
1022 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
|
1023 } |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1024 |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1025 static char dup_doc[] = |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1026 "dup() -> socket object\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1027 \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1028 Return a new socket object connected to the same system resource."; |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1029 |
|
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
|
1030 #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
|
1031 |
|
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
|
1032 |
|
1094
d2af6bdcb6d0
* config.c: Added audioop to lists.
Guido van Rossum <guido@python.org>
parents:
1039
diff
changeset
|
1033 /* s.getsockname() method */ |
|
d2af6bdcb6d0
* config.c: Added audioop to lists.
Guido van Rossum <guido@python.org>
parents:
1039
diff
changeset
|
1034 |
| 1970 | 1035 static PyObject * |
| 13470 | 1036 PySocketSock_getsockname(PySocketSockObject *s, PyObject *args) |
|
1094
d2af6bdcb6d0
* config.c: Added audioop to lists.
Guido van Rossum <guido@python.org>
parents:
1039
diff
changeset
|
1037 { |
|
d2af6bdcb6d0
* config.c: Added audioop to lists.
Guido van Rossum <guido@python.org>
parents:
1039
diff
changeset
|
1038 char addrbuf[256]; |
|
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
|
1039 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
|
1040 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
|
1041 |
|
12050
b90880c0e5eb
Fix all routines to use PyArg_ParseTuple(), and add ":name" to the
Guido van Rossum <guido@python.org>
parents:
11937
diff
changeset
|
1042 if (!PyArg_ParseTuple(args, ":getsockname")) |
|
1094
d2af6bdcb6d0
* config.c: Added audioop to lists.
Guido van Rossum <guido@python.org>
parents:
1039
diff
changeset
|
1043 return NULL; |
|
d2af6bdcb6d0
* config.c: Added audioop to lists.
Guido van Rossum <guido@python.org>
parents:
1039
diff
changeset
|
1044 if (!getsockaddrlen(s, &addrlen)) |
|
d2af6bdcb6d0
* config.c: Added audioop to lists.
Guido van Rossum <guido@python.org>
parents:
1039
diff
changeset
|
1045 return NULL; |
|
3335
9bd1e41d6b11
clear addr buffer before calling getsockname
Guido van Rossum <guido@python.org>
parents:
3091
diff
changeset
|
1046 memset(addrbuf, 0, addrlen); |
| 1970 | 1047 Py_BEGIN_ALLOW_THREADS |
|
1094
d2af6bdcb6d0
* config.c: Added audioop to lists.
Guido van Rossum <guido@python.org>
parents:
1039
diff
changeset
|
1048 res = getsockname(s->sock_fd, (struct sockaddr *) addrbuf, &addrlen); |
| 1970 | 1049 Py_END_ALLOW_THREADS |
|
1094
d2af6bdcb6d0
* config.c: Added audioop to lists.
Guido van Rossum <guido@python.org>
parents:
1039
diff
changeset
|
1050 if (res < 0) |
| 1970 | 1051 return PySocket_Err(); |
|
1094
d2af6bdcb6d0
* config.c: Added audioop to lists.
Guido van Rossum <guido@python.org>
parents:
1039
diff
changeset
|
1052 return makesockaddr((struct sockaddr *) addrbuf, addrlen); |
|
d2af6bdcb6d0
* config.c: Added audioop to lists.
Guido van Rossum <guido@python.org>
parents:
1039
diff
changeset
|
1053 } |
|
d2af6bdcb6d0
* config.c: Added audioop to lists.
Guido van Rossum <guido@python.org>
parents:
1039
diff
changeset
|
1054 |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1055 static char getsockname_doc[] = |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1056 "getsockname() -> address info\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1057 \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1058 Return the address of the local endpoint. For IP sockets, the address\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1059 info is a pair (hostaddr, port)."; |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1060 |
|
1094
d2af6bdcb6d0
* config.c: Added audioop to lists.
Guido van Rossum <guido@python.org>
parents:
1039
diff
changeset
|
1061 |
|
1746
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1413
diff
changeset
|
1062 #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
|
1063 /* s.getpeername() method */ |
|
d2af6bdcb6d0
* config.c: Added audioop to lists.
Guido van Rossum <guido@python.org>
parents:
1039
diff
changeset
|
1064 |
| 1970 | 1065 static PyObject * |
| 13470 | 1066 PySocketSock_getpeername(PySocketSockObject *s, PyObject *args) |
|
1094
d2af6bdcb6d0
* config.c: Added audioop to lists.
Guido van Rossum <guido@python.org>
parents:
1039
diff
changeset
|
1067 { |
|
d2af6bdcb6d0
* config.c: Added audioop to lists.
Guido van Rossum <guido@python.org>
parents:
1039
diff
changeset
|
1068 char addrbuf[256]; |
|
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
|
1069 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
|
1070 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
|
1071 |
|
12050
b90880c0e5eb
Fix all routines to use PyArg_ParseTuple(), and add ":name" to the
Guido van Rossum <guido@python.org>
parents:
11937
diff
changeset
|
1072 if (!PyArg_ParseTuple(args, ":getpeername")) |
|
1094
d2af6bdcb6d0
* config.c: Added audioop to lists.
Guido van Rossum <guido@python.org>
parents:
1039
diff
changeset
|
1073 return NULL; |
|
d2af6bdcb6d0
* config.c: Added audioop to lists.
Guido van Rossum <guido@python.org>
parents:
1039
diff
changeset
|
1074 if (!getsockaddrlen(s, &addrlen)) |
|
d2af6bdcb6d0
* config.c: Added audioop to lists.
Guido van Rossum <guido@python.org>
parents:
1039
diff
changeset
|
1075 return NULL; |
| 1970 | 1076 Py_BEGIN_ALLOW_THREADS |
|
1094
d2af6bdcb6d0
* config.c: Added audioop to lists.
Guido van Rossum <guido@python.org>
parents:
1039
diff
changeset
|
1077 res = getpeername(s->sock_fd, (struct sockaddr *) addrbuf, &addrlen); |
| 1970 | 1078 Py_END_ALLOW_THREADS |
|
1094
d2af6bdcb6d0
* config.c: Added audioop to lists.
Guido van Rossum <guido@python.org>
parents:
1039
diff
changeset
|
1079 if (res < 0) |
| 1970 | 1080 return PySocket_Err(); |
|
1094
d2af6bdcb6d0
* config.c: Added audioop to lists.
Guido van Rossum <guido@python.org>
parents:
1039
diff
changeset
|
1081 return makesockaddr((struct sockaddr *) addrbuf, addrlen); |
|
d2af6bdcb6d0
* config.c: Added audioop to lists.
Guido van Rossum <guido@python.org>
parents:
1039
diff
changeset
|
1082 } |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1083 |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1084 static char getpeername_doc[] = |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1085 "getpeername() -> address info\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1086 \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1087 Return the address of the remote endpoint. For IP sockets, the address\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1088 info is a pair (hostaddr, port)."; |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1089 |
|
1746
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1413
diff
changeset
|
1090 #endif /* HAVE_GETPEERNAME */ |
|
1094
d2af6bdcb6d0
* config.c: Added audioop to lists.
Guido van Rossum <guido@python.org>
parents:
1039
diff
changeset
|
1091 |
|
d2af6bdcb6d0
* config.c: Added audioop to lists.
Guido van Rossum <guido@python.org>
parents:
1039
diff
changeset
|
1092 |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1093 /* s.listen(n) method */ |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1094 |
| 1970 | 1095 static PyObject * |
| 13470 | 1096 PySocketSock_listen(PySocketSockObject *s, PyObject *args) |
| 294 | 1097 { |
| 1098 int backlog; | |
| 926 | 1099 int res; |
|
12050
b90880c0e5eb
Fix all routines to use PyArg_ParseTuple(), and add ":name" to the
Guido van Rossum <guido@python.org>
parents:
11937
diff
changeset
|
1100 if (!PyArg_ParseTuple(args, "i:listen", &backlog)) |
| 294 | 1101 return NULL; |
| 1970 | 1102 Py_BEGIN_ALLOW_THREADS |
|
1746
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1413
diff
changeset
|
1103 if (backlog < 1) |
|
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1413
diff
changeset
|
1104 backlog = 1; |
| 926 | 1105 res = listen(s->sock_fd, backlog); |
| 1970 | 1106 Py_END_ALLOW_THREADS |
| 926 | 1107 if (res < 0) |
| 1970 | 1108 return PySocket_Err(); |
| 1109 Py_INCREF(Py_None); | |
| 1110 return Py_None; | |
| 294 | 1111 } |
| 1112 | |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1113 static char listen_doc[] = |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1114 "listen(backlog)\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1115 \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1116 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
|
1117 least 1; it specifies the number of unaccepted connection that the system\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1118 will allow before refusing new connections."; |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1119 |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1120 |
|
1792
a584b4bbbc59
Changes to make it work and compile on NT, by Mark Hammond.
Guido van Rossum <guido@python.org>
parents:
1760
diff
changeset
|
1121 #ifndef NO_DUP |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1122 /* s.makefile(mode) method. |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1123 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
|
1124 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
|
1125 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
|
1126 of each other.) |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1127 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
|
1128 |
| 1970 | 1129 static PyObject * |
| 13470 | 1130 PySocketSock_makefile(PySocketSockObject *s, PyObject *args) |
| 294 | 1131 { |
|
13447
a89f7f268de4
Nuke all remaining occurrences of Py_PROTO and Py_FPROTO.
Tim Peters <tim.peters@gmail.com>
parents:
13403
diff
changeset
|
1132 extern int fclose(FILE *); |
|
2532
9e5a09841781
mode and optional bufsize for makefile()
Guido van Rossum <guido@python.org>
parents:
2369
diff
changeset
|
1133 char *mode = "r"; |
|
9e5a09841781
mode and optional bufsize for makefile()
Guido van Rossum <guido@python.org>
parents:
2369
diff
changeset
|
1134 int bufsize = -1; |
|
13171
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
1135 #ifdef MS_WIN32 |
|
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
1136 intptr_t fd; |
|
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
1137 #else |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1138 int fd; |
|
13171
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
1139 #endif |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1140 FILE *fp; |
|
2532
9e5a09841781
mode and optional bufsize for makefile()
Guido van Rossum <guido@python.org>
parents:
2369
diff
changeset
|
1141 PyObject *f; |
|
9e5a09841781
mode and optional bufsize for makefile()
Guido van Rossum <guido@python.org>
parents:
2369
diff
changeset
|
1142 |
|
11882
dc65c5f6ad7c
Massive patch by Skip Montanaro to add ":name" to as many
Guido van Rossum <guido@python.org>
parents:
11527
diff
changeset
|
1143 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
|
1144 return NULL; |
|
3702
3408756ec601
changed windows test symbols; removed debug printf from sockets
Guido van Rossum <guido@python.org>
parents:
3700
diff
changeset
|
1145 #ifdef MS_WIN32 |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1146 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
|
1147 ((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
|
1148 #else |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1149 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
|
1150 #endif |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1151 { |
|
2532
9e5a09841781
mode and optional bufsize for makefile()
Guido van Rossum <guido@python.org>
parents:
2369
diff
changeset
|
1152 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
|
1153 SOCKETCLOSE(fd); |
| 1970 | 1154 return PySocket_Err(); |
|
2532
9e5a09841781
mode and optional bufsize for makefile()
Guido van Rossum <guido@python.org>
parents:
2369
diff
changeset
|
1155 } |
|
9e5a09841781
mode and optional bufsize for makefile()
Guido van Rossum <guido@python.org>
parents:
2369
diff
changeset
|
1156 f = PyFile_FromFile(fp, "<socket>", mode, fclose); |
|
9e5a09841781
mode and optional bufsize for makefile()
Guido van Rossum <guido@python.org>
parents:
2369
diff
changeset
|
1157 if (f != NULL) |
|
9e5a09841781
mode and optional bufsize for makefile()
Guido van Rossum <guido@python.org>
parents:
2369
diff
changeset
|
1158 PyFile_SetBufSize(f, bufsize); |
|
9e5a09841781
mode and optional bufsize for makefile()
Guido van Rossum <guido@python.org>
parents:
2369
diff
changeset
|
1159 return f; |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1160 } |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1161 |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1162 static char makefile_doc[] = |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1163 "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
|
1164 \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1165 Return a regular file object corresponding to the socket.\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1166 The mode and buffersize arguments are as for the built-in open() function."; |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1167 |
|
1792
a584b4bbbc59
Changes to make it work and compile on NT, by Mark Hammond.
Guido van Rossum <guido@python.org>
parents:
1760
diff
changeset
|
1168 #endif /* NO_DUP */ |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1169 |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1170 |
|
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
|
1171 /* 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
|
1172 |
| 1970 | 1173 static PyObject * |
| 13470 | 1174 PySocketSock_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
|
1175 { |
|
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
|
1176 int len, n, flags = 0; |
| 1970 | 1177 PyObject *buf; |
|
11882
dc65c5f6ad7c
Massive patch by Skip Montanaro to add ":name" to as many
Guido van Rossum <guido@python.org>
parents:
11527
diff
changeset
|
1178 if (!PyArg_ParseTuple(args, "i|i:recv", &len, &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
|
1179 return NULL; |
| 1970 | 1180 buf = PyString_FromStringAndSize((char *) 0, len); |
| 294 | 1181 if (buf == NULL) |
| 1182 return NULL; | |
| 1970 | 1183 Py_BEGIN_ALLOW_THREADS |
|
2123
fd5ab7e828fc
cosmetic changes so these modules will work with the strict new naming scheme
Guido van Rossum <guido@python.org>
parents:
2115
diff
changeset
|
1184 n = recv(s->sock_fd, PyString_AsString(buf), len, flags); |
| 1970 | 1185 Py_END_ALLOW_THREADS |
| 3091 | 1186 if (n < 0) { |
| 1187 Py_DECREF(buf); | |
| 1970 | 1188 return PySocket_Err(); |
| 3091 | 1189 } |
|
3665
5188374377ae
Get rid of obsolete allowbroadcast().
Guido van Rossum <guido@python.org>
parents:
3594
diff
changeset
|
1190 if (n != len && _PyString_Resize(&buf, n) < 0) |
| 294 | 1191 return NULL; |
| 1192 return buf; | |
| 1193 } | |
| 1194 | |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1195 static char recv_doc[] = |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1196 "recv(buffersize[, flags]) -> data\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1197 \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1198 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
|
1199 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
|
1200 at least one byte is available or until the remote end is closed. When\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1201 the remote end is closed and all data is read, return the empty string."; |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1202 |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1203 |
|
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
|
1204 /* s.recvfrom(nbytes [,flags]) method */ |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1205 |
| 1970 | 1206 static PyObject * |
| 13470 | 1207 PySocketSock_recvfrom(PySocketSockObject *s, PyObject *args) |
| 294 | 1208 { |
| 1209 char addrbuf[256]; | |
|
4871
a7159ba0e45d
Check of return values and proper error handling.
Barry Warsaw <barry@python.org>
parents:
4783
diff
changeset
|
1210 PyObject *buf = NULL; |
|
a7159ba0e45d
Check of return values and proper error handling.
Barry Warsaw <barry@python.org>
parents:
4783
diff
changeset
|
1211 PyObject *addr = NULL; |
|
a7159ba0e45d
Check of return values and proper error handling.
Barry Warsaw <barry@python.org>
parents:
4783
diff
changeset
|
1212 PyObject *ret = NULL; |
|
a7159ba0e45d
Check of return values and proper error handling.
Barry Warsaw <barry@python.org>
parents:
4783
diff
changeset
|
1213 |
|
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
|
1214 int len, n, flags = 0; |
|
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
|
1215 socklen_t addrlen; |
|
11882
dc65c5f6ad7c
Massive patch by Skip Montanaro to add ":name" to as many
Guido van Rossum <guido@python.org>
parents:
11527
diff
changeset
|
1216 if (!PyArg_ParseTuple(args, "i|i:recvfrom", &len, &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
|
1217 return NULL; |
|
1295
4773d5c3b5a4
* socketmodule.c: fix long-standing bug in recvfrom() -- addrlen
Guido van Rossum <guido@python.org>
parents:
1293
diff
changeset
|
1218 if (!getsockaddrlen(s, &addrlen)) |
|
4773d5c3b5a4
* socketmodule.c: fix long-standing bug in recvfrom() -- addrlen
Guido van Rossum <guido@python.org>
parents:
1293
diff
changeset
|
1219 return NULL; |
| 1970 | 1220 buf = PyString_FromStringAndSize((char *) 0, len); |
|
1295
4773d5c3b5a4
* socketmodule.c: fix long-standing bug in recvfrom() -- addrlen
Guido van Rossum <guido@python.org>
parents:
1293
diff
changeset
|
1221 if (buf == NULL) |
|
4773d5c3b5a4
* socketmodule.c: fix long-standing bug in recvfrom() -- addrlen
Guido van Rossum <guido@python.org>
parents:
1293
diff
changeset
|
1222 return NULL; |
| 1970 | 1223 Py_BEGIN_ALLOW_THREADS |
| 1224 n = recvfrom(s->sock_fd, PyString_AsString(buf), len, flags, | |
|
3702
3408756ec601
changed windows test symbols; removed debug printf from sockets
Guido van Rossum <guido@python.org>
parents:
3700
diff
changeset
|
1225 #ifndef MS_WINDOWS |
|
6718
32f2eda2946c
Left-aligned preprocessor directives and changed C++ comments to C
Guido van Rossum <guido@python.org>
parents:
6626
diff
changeset
|
1226 #if defined(PYOS_OS2) |
|
6626
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
1227 (struct sockaddr *)addrbuf, &addrlen |
|
6718
32f2eda2946c
Left-aligned preprocessor directives and changed C++ comments to C
Guido van Rossum <guido@python.org>
parents:
6626
diff
changeset
|
1228 #else |
|
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
|
1229 (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
|
1230 #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
|
1231 #else |
|
4871
a7159ba0e45d
Check of return values and proper error handling.
Barry Warsaw <barry@python.org>
parents:
4783
diff
changeset
|
1232 (struct sockaddr *)addrbuf, &addrlen |
|
1792
a584b4bbbc59
Changes to make it work and compile on NT, by Mark Hammond.
Guido van Rossum <guido@python.org>
parents:
1760
diff
changeset
|
1233 #endif |
|
4871
a7159ba0e45d
Check of return values and proper error handling.
Barry Warsaw <barry@python.org>
parents:
4783
diff
changeset
|
1234 ); |
| 1970 | 1235 Py_END_ALLOW_THREADS |
| 3091 | 1236 if (n < 0) { |
| 1237 Py_DECREF(buf); | |
| 1970 | 1238 return PySocket_Err(); |
| 3091 | 1239 } |
|
3665
5188374377ae
Get rid of obsolete allowbroadcast().
Guido van Rossum <guido@python.org>
parents:
3594
diff
changeset
|
1240 if (n != len && _PyString_Resize(&buf, n) < 0) |
| 294 | 1241 return NULL; |
|
4871
a7159ba0e45d
Check of return values and proper error handling.
Barry Warsaw <barry@python.org>
parents:
4783
diff
changeset
|
1242 |
|
a7159ba0e45d
Check of return values and proper error handling.
Barry Warsaw <barry@python.org>
parents:
4783
diff
changeset
|
1243 if (!(addr = makesockaddr((struct sockaddr *)addrbuf, addrlen))) |
|
a7159ba0e45d
Check of return values and proper error handling.
Barry Warsaw <barry@python.org>
parents:
4783
diff
changeset
|
1244 goto finally; |
|
a7159ba0e45d
Check of return values and proper error handling.
Barry Warsaw <barry@python.org>
parents:
4783
diff
changeset
|
1245 |
| 1970 | 1246 ret = Py_BuildValue("OO", buf, addr); |
|
4871
a7159ba0e45d
Check of return values and proper error handling.
Barry Warsaw <barry@python.org>
parents:
4783
diff
changeset
|
1247 finally: |
| 1970 | 1248 Py_XDECREF(addr); |
| 1249 Py_XDECREF(buf); | |
|
1207
b564bd4e57e1
* ceval.c: ifdef out the last argument passing compat hack.
Guido van Rossum <guido@python.org>
parents:
1132
diff
changeset
|
1250 return ret; |
| 294 | 1251 } |
| 1252 | |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1253 static char recvfrom_doc[] = |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1254 "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
|
1255 \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1256 Like recv(buffersize, flags) but also return the sender's address info."; |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1257 |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1258 |
|
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
|
1259 /* 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
|
1260 |
| 1970 | 1261 static PyObject * |
| 13470 | 1262 PySocketSock_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
|
1263 { |
| 926 | 1264 char *buf; |
|
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
|
1265 int len, n, flags = 0; |
|
11882
dc65c5f6ad7c
Massive patch by Skip Montanaro to add ":name" to as many
Guido van Rossum <guido@python.org>
parents:
11527
diff
changeset
|
1266 if (!PyArg_ParseTuple(args, "s#|i:send", &buf, &len, &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
|
1267 return NULL; |
| 1970 | 1268 Py_BEGIN_ALLOW_THREADS |
| 926 | 1269 n = send(s->sock_fd, buf, len, flags); |
| 1970 | 1270 Py_END_ALLOW_THREADS |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1271 if (n < 0) |
| 1970 | 1272 return PySocket_Err(); |
| 1273 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
|
1274 } |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1275 |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1276 static char send_doc[] = |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1277 "send(data[, flags])\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1278 \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1279 Send a data string to 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
|
1280 argument, see the Unix manual."; |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1281 |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1282 |
|
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
|
1283 /* 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
|
1284 |
| 1970 | 1285 static PyObject * |
| 13470 | 1286 PySocketSock_sendto(PySocketSockObject *s, PyObject *args) |
| 294 | 1287 { |
| 1970 | 1288 PyObject *addro; |
| 926 | 1289 char *buf; |
| 294 | 1290 struct sockaddr *addr; |
|
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
|
1291 int addrlen, len, n, flags; |
|
ac3c80abbf43
* classobject.c: in instance_getattr, don't make a method out of a
Guido van Rossum <guido@python.org>
parents:
1271
diff
changeset
|
1292 flags = 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
|
1293 if (!PyArg_ParseTuple(args, "s#O:sendto", &buf, &len, &addro)) { |
| 1970 | 1294 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
|
1295 if (!PyArg_ParseTuple(args, "s#iO:sendto", |
|
b90880c0e5eb
Fix all routines to use PyArg_ParseTuple(), and add ":name" to the
Guido van Rossum <guido@python.org>
parents:
11937
diff
changeset
|
1296 &buf, &len, &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
|
1297 return NULL; |
| 294 | 1298 } |
|
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
|
1299 if (!getsockaddrarg(s, addro, &addr, &addrlen)) |
| 294 | 1300 return NULL; |
| 1970 | 1301 Py_BEGIN_ALLOW_THREADS |
|
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
|
1302 n = sendto(s->sock_fd, buf, len, flags, addr, addrlen); |
| 1970 | 1303 Py_END_ALLOW_THREADS |
| 294 | 1304 if (n < 0) |
| 1970 | 1305 return PySocket_Err(); |
| 1306 return PyInt_FromLong((long)n); | |
| 294 | 1307 } |
| 1308 | |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1309 static char sendto_doc[] = |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1310 "sendto(data[, flags], address)\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1311 \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1312 Like send(data, flags) but allows specifying the destination address.\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1313 For IP sockets, the address is a pair (hostaddr, port)."; |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1314 |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1315 |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1316 /* s.shutdown(how) method */ |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1317 |
| 1970 | 1318 static PyObject * |
| 13470 | 1319 PySocketSock_shutdown(PySocketSockObject *s, PyObject *args) |
| 294 | 1320 { |
| 1321 int how; | |
| 926 | 1322 int res; |
|
12050
b90880c0e5eb
Fix all routines to use PyArg_ParseTuple(), and add ":name" to the
Guido van Rossum <guido@python.org>
parents:
11937
diff
changeset
|
1323 if (!PyArg_ParseTuple(args, "i:shutdown", &how)) |
| 294 | 1324 return NULL; |
| 1970 | 1325 Py_BEGIN_ALLOW_THREADS |
| 926 | 1326 res = shutdown(s->sock_fd, how); |
| 1970 | 1327 Py_END_ALLOW_THREADS |
| 926 | 1328 if (res < 0) |
| 1970 | 1329 return PySocket_Err(); |
| 1330 Py_INCREF(Py_None); | |
| 1331 return Py_None; | |
| 294 | 1332 } |
| 1333 | |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1334 static char shutdown_doc[] = |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1335 "shutdown(flag)\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1336 \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1337 Shut down the reading side of the socket (flag == 0), the writing side\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1338 of the socket (flag == 1), or both ends (flag == 2)."; |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1339 |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1340 |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1341 /* List of methods for socket objects */ |
| 294 | 1342 |
| 1970 | 1343 static PyMethodDef PySocketSock_methods[] = { |
|
13817
3c0f75a2198f
Use METH_VARARGS instead of numeric constant 1 in method def. tables
Andrew M. Kuchling <amk@amk.ca>
parents:
13761
diff
changeset
|
1344 {"accept", (PyCFunction)PySocketSock_accept, METH_VARARGS, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1345 accept_doc}, |
|
13817
3c0f75a2198f
Use METH_VARARGS instead of numeric constant 1 in method def. tables
Andrew M. Kuchling <amk@amk.ca>
parents:
13761
diff
changeset
|
1346 {"bind", (PyCFunction)PySocketSock_bind, METH_VARARGS, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1347 bind_doc}, |
|
13817
3c0f75a2198f
Use METH_VARARGS instead of numeric constant 1 in method def. tables
Andrew M. Kuchling <amk@amk.ca>
parents:
13761
diff
changeset
|
1348 {"close", (PyCFunction)PySocketSock_close, METH_VARARGS, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1349 close_doc}, |
|
13817
3c0f75a2198f
Use METH_VARARGS instead of numeric constant 1 in method def. tables
Andrew M. Kuchling <amk@amk.ca>
parents:
13761
diff
changeset
|
1350 {"connect", (PyCFunction)PySocketSock_connect, METH_VARARGS, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1351 connect_doc}, |
|
13817
3c0f75a2198f
Use METH_VARARGS instead of numeric constant 1 in method def. tables
Andrew M. Kuchling <amk@amk.ca>
parents:
13761
diff
changeset
|
1352 {"connect_ex", (PyCFunction)PySocketSock_connect_ex, METH_VARARGS, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1353 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
|
1354 #ifndef NO_DUP |
|
13817
3c0f75a2198f
Use METH_VARARGS instead of numeric constant 1 in method def. tables
Andrew M. Kuchling <amk@amk.ca>
parents:
13761
diff
changeset
|
1355 {"dup", (PyCFunction)PySocketSock_dup, METH_VARARGS, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1356 dup_doc}, |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1357 #endif |
|
13817
3c0f75a2198f
Use METH_VARARGS instead of numeric constant 1 in method def. tables
Andrew M. Kuchling <amk@amk.ca>
parents:
13761
diff
changeset
|
1358 {"fileno", (PyCFunction)PySocketSock_fileno, METH_VARARGS, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1359 fileno_doc}, |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1360 #ifdef HAVE_GETPEERNAME |
|
13817
3c0f75a2198f
Use METH_VARARGS instead of numeric constant 1 in method def. tables
Andrew M. Kuchling <amk@amk.ca>
parents:
13761
diff
changeset
|
1361 {"getpeername", (PyCFunction)PySocketSock_getpeername, METH_VARARGS, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1362 getpeername_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
|
1363 #endif |
|
13817
3c0f75a2198f
Use METH_VARARGS instead of numeric constant 1 in method def. tables
Andrew M. Kuchling <amk@amk.ca>
parents:
13761
diff
changeset
|
1364 {"getsockname", (PyCFunction)PySocketSock_getsockname, METH_VARARGS, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1365 getsockname_doc}, |
|
13817
3c0f75a2198f
Use METH_VARARGS instead of numeric constant 1 in method def. tables
Andrew M. Kuchling <amk@amk.ca>
parents:
13761
diff
changeset
|
1366 {"getsockopt", (PyCFunction)PySocketSock_getsockopt, METH_VARARGS, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1367 getsockopt_doc}, |
|
13817
3c0f75a2198f
Use METH_VARARGS instead of numeric constant 1 in method def. tables
Andrew M. Kuchling <amk@amk.ca>
parents:
13761
diff
changeset
|
1368 {"listen", (PyCFunction)PySocketSock_listen, METH_VARARGS, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1369 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
|
1370 #ifndef NO_DUP |
|
13817
3c0f75a2198f
Use METH_VARARGS instead of numeric constant 1 in method def. tables
Andrew M. Kuchling <amk@amk.ca>
parents:
13761
diff
changeset
|
1371 {"makefile", (PyCFunction)PySocketSock_makefile, METH_VARARGS, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1372 makefile_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
|
1373 #endif |
|
13817
3c0f75a2198f
Use METH_VARARGS instead of numeric constant 1 in method def. tables
Andrew M. Kuchling <amk@amk.ca>
parents:
13761
diff
changeset
|
1374 {"recv", (PyCFunction)PySocketSock_recv, METH_VARARGS, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1375 recv_doc}, |
|
13817
3c0f75a2198f
Use METH_VARARGS instead of numeric constant 1 in method def. tables
Andrew M. Kuchling <amk@amk.ca>
parents:
13761
diff
changeset
|
1376 {"recvfrom", (PyCFunction)PySocketSock_recvfrom, METH_VARARGS, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1377 recvfrom_doc}, |
|
13817
3c0f75a2198f
Use METH_VARARGS instead of numeric constant 1 in method def. tables
Andrew M. Kuchling <amk@amk.ca>
parents:
13761
diff
changeset
|
1378 {"send", (PyCFunction)PySocketSock_send, METH_VARARGS, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1379 send_doc}, |
|
13817
3c0f75a2198f
Use METH_VARARGS instead of numeric constant 1 in method def. tables
Andrew M. Kuchling <amk@amk.ca>
parents:
13761
diff
changeset
|
1380 {"sendto", (PyCFunction)PySocketSock_sendto, METH_VARARGS, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1381 sendto_doc}, |
|
13817
3c0f75a2198f
Use METH_VARARGS instead of numeric constant 1 in method def. tables
Andrew M. Kuchling <amk@amk.ca>
parents:
13761
diff
changeset
|
1382 {"setblocking", (PyCFunction)PySocketSock_setblocking, METH_VARARGS, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1383 setblocking_doc}, |
|
13817
3c0f75a2198f
Use METH_VARARGS instead of numeric constant 1 in method def. tables
Andrew M. Kuchling <amk@amk.ca>
parents:
13761
diff
changeset
|
1384 {"setsockopt", (PyCFunction)PySocketSock_setsockopt, METH_VARARGS, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1385 setsockopt_doc}, |
|
13817
3c0f75a2198f
Use METH_VARARGS instead of numeric constant 1 in method def. tables
Andrew M. Kuchling <amk@amk.ca>
parents:
13761
diff
changeset
|
1386 {"shutdown", (PyCFunction)PySocketSock_shutdown, METH_VARARGS, |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1387 shutdown_doc}, |
|
1746
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1413
diff
changeset
|
1388 {NULL, NULL} /* sentinel */ |
| 294 | 1389 }; |
| 1390 | |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1391 |
| 1970 | 1392 /* 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
|
1393 First close the file description. */ |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1394 |
| 294 | 1395 static void |
| 13470 | 1396 PySocketSock_dealloc(PySocketSockObject *s) |
| 294 | 1397 { |
|
12319
57f34e162e67
In dealloc(), only close the socket if fd != -1.
Guido van Rossum <guido@python.org>
parents:
12229
diff
changeset
|
1398 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
|
1399 (void) SOCKETCLOSE(s->sock_fd); |
|
12576
1c7c2dd1beb1
Vladimir Marangozov's long-awaited malloc restructuring.
Guido van Rossum <guido@python.org>
parents:
12493
diff
changeset
|
1400 PyObject_Del(s); |
| 294 | 1401 } |
| 1402 | |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1403 |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1404 /* Return a socket object's named attribute. */ |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1405 |
| 1970 | 1406 static PyObject * |
| 13470 | 1407 PySocketSock_getattr(PySocketSockObject *s, char *name) |
| 294 | 1408 { |
| 1970 | 1409 return Py_FindMethod(PySocketSock_methods, (PyObject *) s, name); |
| 294 | 1410 } |
| 1411 | |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1412 |
|
2055
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
1413 static PyObject * |
| 13470 | 1414 PySocketSock_repr(PySocketSockObject *s) |
|
2055
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
1415 { |
|
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
1416 char buf[512]; |
|
13171
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
1417 #if SIZEOF_SOCKET_T > SIZEOF_LONG |
|
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
1418 if (s->sock_fd > LONG_MAX) { |
|
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
1419 /* 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
|
1420 ugly printf formatter for decimal pointer length integer |
|
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
1421 printing, only bother if necessary*/ |
|
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
1422 PyErr_SetString(PyExc_OverflowError, |
|
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
1423 "no printf formatter to display the socket descriptor in decimal"); |
|
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
1424 return NULL; |
|
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
1425 } |
|
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
1426 #endif |
|
2055
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
1427 sprintf(buf, |
|
13171
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
1428 "<socket object, fd=%ld, family=%d, type=%d, protocol=%d>", |
|
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
1429 (long)s->sock_fd, s->sock_family, s->sock_type, s->sock_proto); |
|
3421
90b54312661a
remove unused variables
Guido van Rossum <guido@python.org>
parents:
3390
diff
changeset
|
1430 return PyString_FromString(buf); |
|
2055
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
1431 } |
|
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
1432 |
|
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
1433 |
|
1746
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1413
diff
changeset
|
1434 /* 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
|
1435 |
| 1970 | 1436 static PyTypeObject PySocketSock_Type = { |
| 3594 | 1437 PyObject_HEAD_INIT(0) /* Must fill in type value later */ |
| 294 | 1438 0, |
| 1439 "socket", | |
| 1970 | 1440 sizeof(PySocketSockObject), |
| 294 | 1441 0, |
| 1970 | 1442 (destructor)PySocketSock_dealloc, /*tp_dealloc*/ |
| 294 | 1443 0, /*tp_print*/ |
| 1970 | 1444 (getattrfunc)PySocketSock_getattr, /*tp_getattr*/ |
| 294 | 1445 0, /*tp_setattr*/ |
| 1446 0, /*tp_compare*/ | |
|
2055
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
1447 (reprfunc)PySocketSock_repr, /*tp_repr*/ |
| 294 | 1448 0, /*tp_as_number*/ |
| 1449 0, /*tp_as_sequence*/ | |
| 1450 0, /*tp_as_mapping*/ | |
| 1451 }; | |
| 1452 | |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1453 |
|
324
a81020d505bf
Add gethostname() and s.avail().
Guido van Rossum <guido@python.org>
parents:
309
diff
changeset
|
1454 /* Python interface to gethostname(). */ |
|
a81020d505bf
Add gethostname() and s.avail().
Guido van Rossum <guido@python.org>
parents:
309
diff
changeset
|
1455 |
|
a81020d505bf
Add gethostname() and s.avail().
Guido van Rossum <guido@python.org>
parents:
309
diff
changeset
|
1456 /*ARGSUSED*/ |
| 1970 | 1457 static PyObject * |
| 13470 | 1458 PySocket_gethostname(PyObject *self, PyObject *args) |
|
324
a81020d505bf
Add gethostname() and s.avail().
Guido van Rossum <guido@python.org>
parents:
309
diff
changeset
|
1459 { |
|
a81020d505bf
Add gethostname() and s.avail().
Guido van Rossum <guido@python.org>
parents:
309
diff
changeset
|
1460 char buf[1024]; |
| 926 | 1461 int res; |
|
12050
b90880c0e5eb
Fix all routines to use PyArg_ParseTuple(), and add ":name" to the
Guido van Rossum <guido@python.org>
parents:
11937
diff
changeset
|
1462 if (!PyArg_ParseTuple(args, ":gethostname")) |
|
324
a81020d505bf
Add gethostname() and s.avail().
Guido van Rossum <guido@python.org>
parents:
309
diff
changeset
|
1463 return NULL; |
| 1970 | 1464 Py_BEGIN_ALLOW_THREADS |
| 926 | 1465 res = gethostname(buf, (int) sizeof buf - 1); |
| 1970 | 1466 Py_END_ALLOW_THREADS |
| 926 | 1467 if (res < 0) |
| 1970 | 1468 return PySocket_Err(); |
|
324
a81020d505bf
Add gethostname() and s.avail().
Guido van Rossum <guido@python.org>
parents:
309
diff
changeset
|
1469 buf[sizeof buf - 1] = '\0'; |
| 1970 | 1470 return PyString_FromString(buf); |
|
324
a81020d505bf
Add gethostname() and s.avail().
Guido van Rossum <guido@python.org>
parents:
309
diff
changeset
|
1471 } |
| 926 | 1472 |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1473 static char gethostname_doc[] = |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1474 "gethostname() -> string\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1475 \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1476 Return the current host name."; |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1477 |
| 926 | 1478 |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1479 /* Python interface to gethostbyname(name). */ |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1480 |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1481 /*ARGSUSED*/ |
| 1970 | 1482 static PyObject * |
| 13470 | 1483 PySocket_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
|
1484 { |
|
1792
a584b4bbbc59
Changes to make it work and compile on NT, by Mark Hammond.
Guido van Rossum <guido@python.org>
parents:
1760
diff
changeset
|
1485 char *name; |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1486 struct sockaddr_in addrbuf; |
|
12050
b90880c0e5eb
Fix all routines to use PyArg_ParseTuple(), and add ":name" to the
Guido van Rossum <guido@python.org>
parents:
11937
diff
changeset
|
1487 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
|
1488 return NULL; |
| 926 | 1489 if (setipaddr(name, &addrbuf) < 0) |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1490 return NULL; |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1491 return makeipaddr(&addrbuf); |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1492 } |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1493 |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1494 static char gethostbyname_doc[] = |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1495 "gethostbyname(host) -> address\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1496 \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1497 Return the IP address (a string of the form '255.255.255.255') for a host."; |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1498 |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1499 |
|
8821
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
1500 /* 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
|
1501 |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
1502 static PyObject * |
|
13651
8a063423e0b7
Bunch of minor ANSIfications: 'void initfunc()' -> 'void initfunc(void)',
Thomas Wouters <thomas@python.org>
parents:
13554
diff
changeset
|
1503 gethost_common(struct hostent *h, struct sockaddr_in *addr) |
|
8821
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
1504 { |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
1505 char **pch; |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
1506 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
|
1507 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
|
1508 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
|
1509 PyObject *tmp; |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
1510 if (h == NULL) { |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
1511 #ifdef HAVE_HSTRERROR |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
1512 /* Let's get real error message to return */ |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
1513 extern int h_errno; |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
1514 PyErr_SetString(PySocket_Error, (char *)hstrerror(h_errno)); |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
1515 #else |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
1516 PyErr_SetString(PySocket_Error, "host not found"); |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
1517 #endif |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
1518 return NULL; |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
1519 } |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
1520 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
|
1521 goto err; |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
1522 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
|
1523 goto err; |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
1524 for (pch = h->h_aliases; *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
|
1525 int status; |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
1526 tmp = PyString_FromString(*pch); |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
1527 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
|
1528 goto err; |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
1529 status = PyList_Append(name_list, tmp); |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
1530 Py_DECREF(tmp); |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
1531 if (status) |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
1532 goto err; |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
1533 } |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
1534 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
|
1535 int status; |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
1536 memcpy((char *) &addr->sin_addr, *pch, h->h_length); |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
1537 tmp = makeipaddr(addr); |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
1538 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
|
1539 goto err; |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
1540 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
|
1541 Py_DECREF(tmp); |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
1542 if (status) |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
1543 goto err; |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
1544 } |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
1545 rtn_tuple = Py_BuildValue("sOO", h->h_name, name_list, addr_list); |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
1546 err: |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
1547 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
|
1548 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
|
1549 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
|
1550 } |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
1551 |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
1552 |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
1553 /* 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
|
1554 |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
1555 /*ARGSUSED*/ |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
1556 static PyObject * |
| 13470 | 1557 PySocket_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
|
1558 { |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
1559 char *name; |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
1560 struct hostent *h; |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
1561 struct sockaddr_in addr; |
|
10441
9ba5dffccb1b
Jonathan Giddy writes:
Guido van Rossum <guido@python.org>
parents:
10401
diff
changeset
|
1562 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
|
1563 #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
|
1564 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
|
1565 #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
|
1566 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
|
1567 #else |
|
8821
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
1568 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
|
1569 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
|
1570 int errnop; |
|
10453
5b54fa775e55
Vladimir Marangozov implements the AIX 3-arg gethostbyname_r code.
Guido van Rossum <guido@python.org>
parents:
10442
diff
changeset
|
1571 #endif |
|
5b54fa775e55
Vladimir Marangozov implements the AIX 3-arg gethostbyname_r code.
Guido van Rossum <guido@python.org>
parents:
10442
diff
changeset
|
1572 #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
|
1573 int result; |
|
f81db738abd9
Patch by Rob Riggs for Linux -- glibc2 has a different argument
Guido van Rossum <guido@python.org>
parents:
9679
diff
changeset
|
1574 #endif |
|
8821
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
1575 #endif /* HAVE_GETHOSTBYNAME_R */ |
|
12050
b90880c0e5eb
Fix all routines to use PyArg_ParseTuple(), and add ":name" to the
Guido van Rossum <guido@python.org>
parents:
11937
diff
changeset
|
1576 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
|
1577 return NULL; |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
1578 if (setipaddr(name, &addr) < 0) |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
1579 return NULL; |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
1580 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
|
1581 #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
|
1582 #if 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
|
1583 result = gethostbyname_r(name, &hp_allocated, buf, buf_len, &h, &errnop); |
|
10453
5b54fa775e55
Vladimir Marangozov implements the AIX 3-arg gethostbyname_r code.
Guido van Rossum <guido@python.org>
parents:
10442
diff
changeset
|
1584 #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
|
1585 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
|
1586 #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
|
1587 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
|
1588 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
|
1589 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
|
1590 #endif |
|
8821
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
1591 #else /* not HAVE_GETHOSTBYNAME_R */ |
|
10442
9184c9e108f9
Clean up pass for the previous patches.
Guido van Rossum <guido@python.org>
parents:
10441
diff
changeset
|
1592 #ifdef USE_GETHOSTBYNAME_LOCK |
|
9184c9e108f9
Clean up pass for the previous patches.
Guido van Rossum <guido@python.org>
parents:
10441
diff
changeset
|
1593 PyThread_acquire_lock(gethostbyname_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
|
1594 #endif |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
1595 h = gethostbyname(name); |
|
10441
9ba5dffccb1b
Jonathan Giddy writes:
Guido van Rossum <guido@python.org>
parents:
10401
diff
changeset
|
1596 #endif /* HAVE_GETHOSTBYNAME_R */ |
|
9ba5dffccb1b
Jonathan Giddy writes:
Guido van Rossum <guido@python.org>
parents:
10401
diff
changeset
|
1597 Py_END_ALLOW_THREADS |
|
10442
9184c9e108f9
Clean up pass for the previous patches.
Guido van Rossum <guido@python.org>
parents:
10441
diff
changeset
|
1598 ret = gethost_common(h, &addr); |
|
9184c9e108f9
Clean up pass for the previous patches.
Guido van Rossum <guido@python.org>
parents:
10441
diff
changeset
|
1599 #ifdef USE_GETHOSTBYNAME_LOCK |
|
9679
877d23bd5bdc
Thanks to Chris Herborth, the thread primitives now have proper Py*
Guido van Rossum <guido@python.org>
parents:
9588
diff
changeset
|
1600 PyThread_release_lock(gethostbyname_lock); |
|
8821
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
1601 #endif |
|
10441
9ba5dffccb1b
Jonathan Giddy writes:
Guido van Rossum <guido@python.org>
parents:
10401
diff
changeset
|
1602 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
|
1603 } |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
1604 |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
1605 static char ghbn_ex_doc[] = |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
1606 "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
|
1607 \n\ |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
1608 Return the true host name, a list of aliases, and a list of IP addresses,\n\ |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
1609 for a host. The host argument is a string giving a host name or IP number."; |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
1610 |
|
a1c16a3fa7db
Added gethostbyname_ex(), which returns the same kind of data as
Guido van Rossum <guido@python.org>
parents:
8631
diff
changeset
|
1611 |
|
2055
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
1612 /* Python interface to gethostbyaddr(IP). */ |
|
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
1613 |
|
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
1614 /*ARGSUSED*/ |
|
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
1615 static PyObject * |
| 13470 | 1616 PySocket_gethostbyaddr(PyObject *self, PyObject *args) |
|
2055
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
1617 { |
|
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
1618 struct sockaddr_in addr; |
|
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
1619 char *ip_num; |
|
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
1620 struct hostent *h; |
|
10442
9184c9e108f9
Clean up pass for the previous patches.
Guido van Rossum <guido@python.org>
parents:
10441
diff
changeset
|
1621 PyObject *ret; |
|
7942
ee2aaa2f722a
Threading speedup patches by Christopher Lindblad <cjl@infoseek.com>.
Guido van Rossum <guido@python.org>
parents:
6718
diff
changeset
|
1622 #ifdef HAVE_GETHOSTBYNAME_R |
|
ee2aaa2f722a
Threading speedup patches by Christopher Lindblad <cjl@infoseek.com>.
Guido van Rossum <guido@python.org>
parents:
6718
diff
changeset
|
1623 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
|
1624 #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
|
1625 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
|
1626 #else |
|
7942
ee2aaa2f722a
Threading speedup patches by Christopher Lindblad <cjl@infoseek.com>.
Guido van Rossum <guido@python.org>
parents:
6718
diff
changeset
|
1627 char buf[16384]; |
|
ee2aaa2f722a
Threading speedup patches by Christopher Lindblad <cjl@infoseek.com>.
Guido van Rossum <guido@python.org>
parents:
6718
diff
changeset
|
1628 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
|
1629 int errnop; |
|
10453
5b54fa775e55
Vladimir Marangozov implements the AIX 3-arg gethostbyname_r code.
Guido van Rossum <guido@python.org>
parents:
10442
diff
changeset
|
1630 #endif |
|
5b54fa775e55
Vladimir Marangozov implements the AIX 3-arg gethostbyname_r code.
Guido van Rossum <guido@python.org>
parents:
10442
diff
changeset
|
1631 #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
|
1632 int result; |
|
f81db738abd9
Patch by Rob Riggs for Linux -- glibc2 has a different argument
Guido van Rossum <guido@python.org>
parents:
9679
diff
changeset
|
1633 #endif |
|
7942
ee2aaa2f722a
Threading speedup patches by Christopher Lindblad <cjl@infoseek.com>.
Guido van Rossum <guido@python.org>
parents:
6718
diff
changeset
|
1634 #endif /* HAVE_GETHOSTBYNAME_R */ |
|
2055
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
1635 |
|
12050
b90880c0e5eb
Fix all routines to use PyArg_ParseTuple(), and add ":name" to the
Guido van Rossum <guido@python.org>
parents:
11937
diff
changeset
|
1636 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
|
1637 return NULL; |
|
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
1638 if (setipaddr(ip_num, &addr) < 0) |
|
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
1639 return NULL; |
|
7942
ee2aaa2f722a
Threading speedup patches by Christopher Lindblad <cjl@infoseek.com>.
Guido van Rossum <guido@python.org>
parents:
6718
diff
changeset
|
1640 Py_BEGIN_ALLOW_THREADS |
|
ee2aaa2f722a
Threading speedup patches by Christopher Lindblad <cjl@infoseek.com>.
Guido van Rossum <guido@python.org>
parents:
6718
diff
changeset
|
1641 #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
|
1642 #if 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
|
1643 result = gethostbyaddr_r((char *)&addr.sin_addr, |
|
f81db738abd9
Patch by Rob Riggs for Linux -- glibc2 has a different argument
Guido van Rossum <guido@python.org>
parents:
9679
diff
changeset
|
1644 sizeof(addr.sin_addr), |
|
f81db738abd9
Patch by Rob Riggs for Linux -- glibc2 has a different argument
Guido van Rossum <guido@python.org>
parents:
9679
diff
changeset
|
1645 AF_INET, &hp_allocated, buf, buf_len, |
|
f81db738abd9
Patch by Rob Riggs for Linux -- glibc2 has a different argument
Guido van Rossum <guido@python.org>
parents:
9679
diff
changeset
|
1646 &h, &errnop); |
|
10453
5b54fa775e55
Vladimir Marangozov implements the AIX 3-arg gethostbyname_r code.
Guido van Rossum <guido@python.org>
parents:
10442
diff
changeset
|
1647 #elif defined(HAVE_GETHOSTBYNAME_R_5_ARG) |
|
7942
ee2aaa2f722a
Threading speedup patches by Christopher Lindblad <cjl@infoseek.com>.
Guido van Rossum <guido@python.org>
parents:
6718
diff
changeset
|
1648 h = gethostbyaddr_r((char *)&addr.sin_addr, |
|
ee2aaa2f722a
Threading speedup patches by Christopher Lindblad <cjl@infoseek.com>.
Guido van Rossum <guido@python.org>
parents:
6718
diff
changeset
|
1649 sizeof(addr.sin_addr), |
|
ee2aaa2f722a
Threading speedup patches by Christopher Lindblad <cjl@infoseek.com>.
Guido van Rossum <guido@python.org>
parents:
6718
diff
changeset
|
1650 AF_INET, |
|
ee2aaa2f722a
Threading speedup patches by Christopher Lindblad <cjl@infoseek.com>.
Guido van Rossum <guido@python.org>
parents:
6718
diff
changeset
|
1651 &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
|
1652 #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
|
1653 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
|
1654 result = gethostbyaddr_r((char *)&addr.sin_addr, |
|
5b54fa775e55
Vladimir Marangozov implements the AIX 3-arg gethostbyname_r code.
Guido van Rossum <guido@python.org>
parents:
10442
diff
changeset
|
1655 sizeof(addr.sin_addr), |
|
5b54fa775e55
Vladimir Marangozov implements the AIX 3-arg gethostbyname_r code.
Guido van Rossum <guido@python.org>
parents:
10442
diff
changeset
|
1656 AF_INET, &hp_allocated, &data); |
|
5b54fa775e55
Vladimir Marangozov implements the AIX 3-arg gethostbyname_r code.
Guido van Rossum <guido@python.org>
parents:
10442
diff
changeset
|
1657 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
|
1658 #endif |
|
7942
ee2aaa2f722a
Threading speedup patches by Christopher Lindblad <cjl@infoseek.com>.
Guido van Rossum <guido@python.org>
parents:
6718
diff
changeset
|
1659 #else /* not HAVE_GETHOSTBYNAME_R */ |
|
10442
9184c9e108f9
Clean up pass for the previous patches.
Guido van Rossum <guido@python.org>
parents:
10441
diff
changeset
|
1660 #ifdef USE_GETHOSTBYNAME_LOCK |
|
9184c9e108f9
Clean up pass for the previous patches.
Guido van Rossum <guido@python.org>
parents:
10441
diff
changeset
|
1661 PyThread_acquire_lock(gethostbyname_lock, 1); |
|
7942
ee2aaa2f722a
Threading speedup patches by Christopher Lindblad <cjl@infoseek.com>.
Guido van Rossum <guido@python.org>
parents:
6718
diff
changeset
|
1662 #endif |
|
2055
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
1663 h = gethostbyaddr((char *)&addr.sin_addr, |
|
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
1664 sizeof(addr.sin_addr), |
|
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
1665 AF_INET); |
|
10442
9184c9e108f9
Clean up pass for the previous patches.
Guido van Rossum <guido@python.org>
parents:
10441
diff
changeset
|
1666 #endif /* HAVE_GETHOSTBYNAME_R */ |
|
9184c9e108f9
Clean up pass for the previous patches.
Guido van Rossum <guido@python.org>
parents:
10441
diff
changeset
|
1667 Py_END_ALLOW_THREADS |
|
9184c9e108f9
Clean up pass for the previous patches.
Guido van Rossum <guido@python.org>
parents:
10441
diff
changeset
|
1668 ret = gethost_common(h, &addr); |
|
9184c9e108f9
Clean up pass for the previous patches.
Guido van Rossum <guido@python.org>
parents:
10441
diff
changeset
|
1669 #ifdef USE_GETHOSTBYNAME_LOCK |
|
9679
877d23bd5bdc
Thanks to Chris Herborth, the thread primitives now have proper Py*
Guido van Rossum <guido@python.org>
parents:
9588
diff
changeset
|
1670 PyThread_release_lock(gethostbyname_lock); |
|
7942
ee2aaa2f722a
Threading speedup patches by Christopher Lindblad <cjl@infoseek.com>.
Guido van Rossum <guido@python.org>
parents:
6718
diff
changeset
|
1671 #endif |
|
10442
9184c9e108f9
Clean up pass for the previous patches.
Guido van Rossum <guido@python.org>
parents:
10441
diff
changeset
|
1672 return ret; |
|
2055
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
1673 } |
|
cf31eab6ab5a
Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents:
1970
diff
changeset
|
1674 |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1675 static char gethostbyaddr_doc[] = |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1676 "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
|
1677 \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1678 Return the true host name, a list of aliases, and a list of IP addresses,\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1679 for a host. The host argument is a string giving a host name or IP number."; |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1680 |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1681 |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1682 /* Python interface to getservbyname(name). |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1683 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
|
1684 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
|
1685 |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1686 /*ARGSUSED*/ |
| 1970 | 1687 static PyObject * |
| 13470 | 1688 PySocket_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
|
1689 { |
| 926 | 1690 char *name, *proto; |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1691 struct servent *sp; |
|
12050
b90880c0e5eb
Fix all routines to use PyArg_ParseTuple(), and add ":name" to the
Guido van Rossum <guido@python.org>
parents:
11937
diff
changeset
|
1692 if (!PyArg_ParseTuple(args, "ss:getservbyname", &name, &proto)) |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1693 return NULL; |
| 1970 | 1694 Py_BEGIN_ALLOW_THREADS |
| 926 | 1695 sp = getservbyname(name, proto); |
| 1970 | 1696 Py_END_ALLOW_THREADS |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1697 if (sp == NULL) { |
| 1970 | 1698 PyErr_SetString(PySocket_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
|
1699 return NULL; |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1700 } |
| 1970 | 1701 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
|
1702 } |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1703 |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1704 static char getservbyname_doc[] = |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1705 "getservbyname(servicename, protocolname) -> integer\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1706 \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1707 Return a port number from a service name and protocol name.\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1708 The protocol name should be 'tcp' or 'udp'."; |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1709 |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1710 |
|
4782
2426a220664b
Added getprotobyname() interface.
Guido van Rossum <guido@python.org>
parents:
4651
diff
changeset
|
1711 /* Python interface to getprotobyname(name). |
|
2426a220664b
Added getprotobyname() interface.
Guido van Rossum <guido@python.org>
parents:
4651
diff
changeset
|
1712 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
|
1713 already known or not useful (like the list of aliases). */ |
|
2426a220664b
Added getprotobyname() interface.
Guido van Rossum <guido@python.org>
parents:
4651
diff
changeset
|
1714 |
|
2426a220664b
Added getprotobyname() interface.
Guido van Rossum <guido@python.org>
parents:
4651
diff
changeset
|
1715 /*ARGSUSED*/ |
|
2426a220664b
Added getprotobyname() interface.
Guido van Rossum <guido@python.org>
parents:
4651
diff
changeset
|
1716 static PyObject * |
| 13470 | 1717 PySocket_getprotobyname(PyObject *self, PyObject *args) |
|
4782
2426a220664b
Added getprotobyname() interface.
Guido van Rossum <guido@python.org>
parents:
4651
diff
changeset
|
1718 { |
|
2426a220664b
Added getprotobyname() interface.
Guido van Rossum <guido@python.org>
parents:
4651
diff
changeset
|
1719 char *name; |
|
2426a220664b
Added getprotobyname() interface.
Guido van Rossum <guido@python.org>
parents:
4651
diff
changeset
|
1720 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
|
1721 #ifdef __BEOS__ |
|
f2a4a2b60860
Changes for BeOS, QNX and long long, by Chris Herborth.
Guido van Rossum <guido@python.org>
parents:
8821
diff
changeset
|
1722 /* Not available in BeOS yet. - [cjh] */ |
|
f2a4a2b60860
Changes for BeOS, QNX and long long, by Chris Herborth.
Guido van Rossum <guido@python.org>
parents:
8821
diff
changeset
|
1723 PyErr_SetString( PySocket_Error, "getprotobyname not supported" ); |
|
f2a4a2b60860
Changes for BeOS, QNX and long long, by Chris Herborth.
Guido van Rossum <guido@python.org>
parents:
8821
diff
changeset
|
1724 return NULL; |
|
f2a4a2b60860
Changes for BeOS, QNX and long long, by Chris Herborth.
Guido van Rossum <guido@python.org>
parents:
8821
diff
changeset
|
1725 #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
|
1726 if (!PyArg_ParseTuple(args, "s:getprotobyname", &name)) |
|
4782
2426a220664b
Added getprotobyname() interface.
Guido van Rossum <guido@python.org>
parents:
4651
diff
changeset
|
1727 return NULL; |
|
2426a220664b
Added getprotobyname() interface.
Guido van Rossum <guido@python.org>
parents:
4651
diff
changeset
|
1728 Py_BEGIN_ALLOW_THREADS |
|
2426a220664b
Added getprotobyname() interface.
Guido van Rossum <guido@python.org>
parents:
4651
diff
changeset
|
1729 sp = getprotobyname(name); |
|
2426a220664b
Added getprotobyname() interface.
Guido van Rossum <guido@python.org>
parents:
4651
diff
changeset
|
1730 Py_END_ALLOW_THREADS |
|
2426a220664b
Added getprotobyname() interface.
Guido van Rossum <guido@python.org>
parents:
4651
diff
changeset
|
1731 if (sp == NULL) { |
|
2426a220664b
Added getprotobyname() interface.
Guido van Rossum <guido@python.org>
parents:
4651
diff
changeset
|
1732 PyErr_SetString(PySocket_Error, "protocol not found"); |
|
2426a220664b
Added getprotobyname() interface.
Guido van Rossum <guido@python.org>
parents:
4651
diff
changeset
|
1733 return NULL; |
|
2426a220664b
Added getprotobyname() interface.
Guido van Rossum <guido@python.org>
parents:
4651
diff
changeset
|
1734 } |
|
2426a220664b
Added getprotobyname() interface.
Guido van Rossum <guido@python.org>
parents:
4651
diff
changeset
|
1735 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
|
1736 #endif |
|
4782
2426a220664b
Added getprotobyname() interface.
Guido van Rossum <guido@python.org>
parents:
4651
diff
changeset
|
1737 } |
|
2426a220664b
Added getprotobyname() interface.
Guido van Rossum <guido@python.org>
parents:
4651
diff
changeset
|
1738 |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1739 static char getprotobyname_doc[] = |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1740 "getprotobyname(name) -> integer\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1741 \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1742 Return the protocol number for the named protocol. (Rarely used.)"; |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1743 |
|
4782
2426a220664b
Added getprotobyname() interface.
Guido van Rossum <guido@python.org>
parents:
4651
diff
changeset
|
1744 |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1745 /* Python interface to socket(family, type, proto). |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1746 The third (protocol) argument is optional. |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1747 Return a new socket object. */ |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1748 |
| 294 | 1749 /*ARGSUSED*/ |
| 1970 | 1750 static PyObject * |
| 13470 | 1751 PySocket_socket(PyObject *self, PyObject *args) |
| 294 | 1752 { |
| 1970 | 1753 PySocketSockObject *s; |
|
13171
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
1754 SOCKET_T fd; |
|
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
|
1755 int family, type, proto = 0; |
|
11882
dc65c5f6ad7c
Massive patch by Skip Montanaro to add ":name" to as many
Guido van Rossum <guido@python.org>
parents:
11527
diff
changeset
|
1756 if (!PyArg_ParseTuple(args, "ii|i:socket", &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
|
1757 return NULL; |
| 1970 | 1758 Py_BEGIN_ALLOW_THREADS |
| 294 | 1759 fd = socket(family, type, proto); |
| 1970 | 1760 Py_END_ALLOW_THREADS |
|
3738
ce74bba8a6a6
Slightly different Windows ifdefs
Guido van Rossum <guido@python.org>
parents:
3702
diff
changeset
|
1761 #ifdef MS_WINDOWS |
|
3672
cec27c93b5cb
more changes for Windows, sigh
Guido van Rossum <guido@python.org>
parents:
3666
diff
changeset
|
1762 if (fd == INVALID_SOCKET) |
|
cec27c93b5cb
more changes for Windows, sigh
Guido van Rossum <guido@python.org>
parents:
3666
diff
changeset
|
1763 #else |
| 294 | 1764 if (fd < 0) |
|
3672
cec27c93b5cb
more changes for Windows, sigh
Guido van Rossum <guido@python.org>
parents:
3666
diff
changeset
|
1765 #endif |
| 1970 | 1766 return PySocket_Err(); |
| 1767 s = PySocketSock_New(fd, family, type, proto); | |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1768 /* If the object can't be created, don't forget to close the |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
1769 file descriptor again! */ |
| 294 | 1770 if (s == NULL) |
|
12436
dff7b26116de
Use an explicit macro SOCKETCLOSE which expands to closesocket (on
Guido van Rossum <guido@python.org>
parents:
12319
diff
changeset
|
1771 (void) SOCKETCLOSE(fd); |
|
324
a81020d505bf
Add gethostname() and s.avail().
Guido van Rossum <guido@python.org>
parents:
309
diff
changeset
|
1772 /* From now on, ignore SIGPIPE and let the error checking |
|
a81020d505bf
Add gethostname() and s.avail().
Guido van Rossum <guido@python.org>
parents:
309
diff
changeset
|
1773 do the work. */ |
|
1792
a584b4bbbc59
Changes to make it work and compile on NT, by Mark Hammond.
Guido van Rossum <guido@python.org>
parents:
1760
diff
changeset
|
1774 #ifdef SIGPIPE |
|
324
a81020d505bf
Add gethostname() and s.avail().
Guido van Rossum <guido@python.org>
parents:
309
diff
changeset
|
1775 (void) signal(SIGPIPE, SIG_IGN); |
|
1792
a584b4bbbc59
Changes to make it work and compile on NT, by Mark Hammond.
Guido van Rossum <guido@python.org>
parents:
1760
diff
changeset
|
1776 #endif |
| 1970 | 1777 return (PyObject *) s; |
| 294 | 1778 } |
| 1779 | |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1780 static char socket_doc[] = |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1781 "socket(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
|
1782 \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1783 Open a socket of the given type. The family argument specifies the\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1784 address family; it is normally AF_INET, sometimes AF_UNIX.\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1785 The type argument specifies whether this is a stream (SOCK_STREAM)\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1786 or datagram (SOCK_DGRAM) socket. The protocol argument defaults to 0,\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1787 specifying the default protocol."; |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1788 |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1789 |
|
1792
a584b4bbbc59
Changes to make it work and compile on NT, by Mark Hammond.
Guido van Rossum <guido@python.org>
parents:
1760
diff
changeset
|
1790 #ifndef NO_DUP |
|
1099
3dd7b8255619
socketmodule.c: added socket.fromfd(fd, family, type, [proto]);
Guido van Rossum <guido@python.org>
parents:
1094
diff
changeset
|
1791 /* 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
|
1792 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
|
1793 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
|
1794 |
|
3dd7b8255619
socketmodule.c: added socket.fromfd(fd, family, type, [proto]);
Guido van Rossum <guido@python.org>
parents:
1094
diff
changeset
|
1795 /*ARGSUSED*/ |
| 1970 | 1796 static PyObject * |
| 13470 | 1797 PySocket_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
|
1798 { |
| 1970 | 1799 PySocketSockObject *s; |
|
13171
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
1800 SOCKET_T fd; |
|
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
1801 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
|
1802 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
|
1803 &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
|
1804 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
|
1805 /* 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
|
1806 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
|
1807 if (fd < 0) |
| 1970 | 1808 return PySocket_Err(); |
| 1809 s = PySocketSock_New(fd, family, type, proto); | |
|
1099
3dd7b8255619
socketmodule.c: added socket.fromfd(fd, family, type, [proto]);
Guido van Rossum <guido@python.org>
parents:
1094
diff
changeset
|
1810 /* From now on, ignore SIGPIPE and let the error checking |
|
3dd7b8255619
socketmodule.c: added socket.fromfd(fd, family, type, [proto]);
Guido van Rossum <guido@python.org>
parents:
1094
diff
changeset
|
1811 do the work. */ |
|
1792
a584b4bbbc59
Changes to make it work and compile on NT, by Mark Hammond.
Guido van Rossum <guido@python.org>
parents:
1760
diff
changeset
|
1812 #ifdef SIGPIPE |
|
1099
3dd7b8255619
socketmodule.c: added socket.fromfd(fd, family, type, [proto]);
Guido van Rossum <guido@python.org>
parents:
1094
diff
changeset
|
1813 (void) signal(SIGPIPE, SIG_IGN); |
|
1792
a584b4bbbc59
Changes to make it work and compile on NT, by Mark Hammond.
Guido van Rossum <guido@python.org>
parents:
1760
diff
changeset
|
1814 #endif |
| 1970 | 1815 return (PyObject *) s; |
|
1099
3dd7b8255619
socketmodule.c: added socket.fromfd(fd, family, type, [proto]);
Guido van Rossum <guido@python.org>
parents:
1094
diff
changeset
|
1816 } |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1817 |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1818 static char fromfd_doc[] = |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1819 "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
|
1820 \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1821 Create a socket object from the given file descriptor.\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1822 The remaining arguments are the same as for socket()."; |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1823 |
|
1792
a584b4bbbc59
Changes to make it work and compile on NT, by Mark Hammond.
Guido van Rossum <guido@python.org>
parents:
1760
diff
changeset
|
1824 #endif /* NO_DUP */ |
|
1099
3dd7b8255619
socketmodule.c: added socket.fromfd(fd, family, type, [proto]);
Guido van Rossum <guido@python.org>
parents:
1094
diff
changeset
|
1825 |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1826 |
|
3673
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
1827 static PyObject * |
| 13470 | 1828 PySocket_ntohs(PyObject *self, PyObject *args) |
|
3673
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
1829 { |
|
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
1830 int x1, x2; |
|
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
1831 |
|
12050
b90880c0e5eb
Fix all routines to use PyArg_ParseTuple(), and add ":name" to the
Guido van Rossum <guido@python.org>
parents:
11937
diff
changeset
|
1832 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
|
1833 return NULL; |
|
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
1834 } |
|
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
1835 x2 = (int)ntohs((short)x1); |
|
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
1836 return PyInt_FromLong(x2); |
|
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
1837 } |
|
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
1838 |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1839 static char ntohs_doc[] = |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1840 "ntohs(integer) -> integer\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1841 \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1842 Convert a 16-bit integer from network to host byte order."; |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1843 |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1844 |
|
3673
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
1845 static PyObject * |
| 13470 | 1846 PySocket_ntohl(PyObject *self, PyObject *args) |
|
3673
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
1847 { |
|
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
1848 int x1, x2; |
|
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
1849 |
|
12050
b90880c0e5eb
Fix all routines to use PyArg_ParseTuple(), and add ":name" to the
Guido van Rossum <guido@python.org>
parents:
11937
diff
changeset
|
1850 if (!PyArg_ParseTuple(args, "i:ntohl", &x1)) { |
|
3673
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
1851 return NULL; |
|
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
1852 } |
|
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
1853 x2 = ntohl(x1); |
|
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
1854 return PyInt_FromLong(x2); |
|
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
1855 } |
|
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
1856 |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1857 static char ntohl_doc[] = |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1858 "ntohl(integer) -> integer\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1859 \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1860 Convert a 32-bit integer from network to host byte order."; |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1861 |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1862 |
|
3673
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
1863 static PyObject * |
| 13470 | 1864 PySocket_htons(PyObject *self, PyObject *args) |
|
3673
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
1865 { |
|
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
1866 int x1, x2; |
|
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
1867 |
|
12050
b90880c0e5eb
Fix all routines to use PyArg_ParseTuple(), and add ":name" to the
Guido van Rossum <guido@python.org>
parents:
11937
diff
changeset
|
1868 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
|
1869 return NULL; |
|
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
1870 } |
|
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
1871 x2 = (int)htons((short)x1); |
|
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
1872 return PyInt_FromLong(x2); |
|
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
1873 } |
|
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
1874 |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1875 static char htons_doc[] = |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1876 "htons(integer) -> integer\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1877 \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1878 Convert a 16-bit integer from host to network byte order."; |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1879 |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1880 |
|
3673
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
1881 static PyObject * |
| 13470 | 1882 PySocket_htonl(PyObject *self, PyObject *args) |
|
3673
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
1883 { |
|
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
1884 int x1, x2; |
|
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
1885 |
|
12050
b90880c0e5eb
Fix all routines to use PyArg_ParseTuple(), and add ":name" to the
Guido van Rossum <guido@python.org>
parents:
11937
diff
changeset
|
1886 if (!PyArg_ParseTuple(args, "i:htonl", &x1)) { |
|
3673
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
1887 return NULL; |
|
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
1888 } |
|
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
1889 x2 = htonl(x1); |
|
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
1890 return PyInt_FromLong(x2); |
|
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
1891 } |
|
f6ace61c3dfe
ntohs, ntohl, htons, htonl -- thanks to Lance
Guido van Rossum <guido@python.org>
parents:
3672
diff
changeset
|
1892 |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1893 static char htonl_doc[] = |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1894 "htonl(integer) -> integer\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 Convert a 32-bit integer from host to network byte order."; |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1897 |
|
11217
f406e78ec10b
Patch by Ben Gertzfield to add inet_aton() and inet_ntoa() calls.
Guido van Rossum <guido@python.org>
parents:
11182
diff
changeset
|
1898 /* |
|
f406e78ec10b
Patch by Ben Gertzfield to add inet_aton() and inet_ntoa() calls.
Guido van Rossum <guido@python.org>
parents:
11182
diff
changeset
|
1899 * socket.inet_aton() and socket.inet_ntoa() functions |
|
f406e78ec10b
Patch by Ben Gertzfield to add inet_aton() and inet_ntoa() calls.
Guido van Rossum <guido@python.org>
parents:
11182
diff
changeset
|
1900 * |
|
f406e78ec10b
Patch by Ben Gertzfield to add inet_aton() and inet_ntoa() calls.
Guido van Rossum <guido@python.org>
parents:
11182
diff
changeset
|
1901 * written 20 Aug 1999 by Ben Gertzfield <che@debian.org> <- blame him! |
|
f406e78ec10b
Patch by Ben Gertzfield to add inet_aton() and inet_ntoa() calls.
Guido van Rossum <guido@python.org>
parents:
11182
diff
changeset
|
1902 * |
|
f406e78ec10b
Patch by Ben Gertzfield to add inet_aton() and inet_ntoa() calls.
Guido van Rossum <guido@python.org>
parents:
11182
diff
changeset
|
1903 */ |
|
f406e78ec10b
Patch by Ben Gertzfield to add inet_aton() and inet_ntoa() calls.
Guido van Rossum <guido@python.org>
parents:
11182
diff
changeset
|
1904 |
|
f406e78ec10b
Patch by Ben Gertzfield to add inet_aton() and inet_ntoa() calls.
Guido van Rossum <guido@python.org>
parents:
11182
diff
changeset
|
1905 static char inet_aton_doc[] = |
|
f406e78ec10b
Patch by Ben Gertzfield to add inet_aton() and inet_ntoa() calls.
Guido van Rossum <guido@python.org>
parents:
11182
diff
changeset
|
1906 "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
|
1907 \n\ |
|
11219
2d7331f4dfe3
Port inet_ntoa and inet_aton to Windows:
Guido van Rossum <guido@python.org>
parents:
11217
diff
changeset
|
1908 Convert an IP address in string format (123.45.67.89) to the 32-bit packed\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
|
1909 binary format used in low-level network functions."; |
|
f406e78ec10b
Patch by Ben Gertzfield to add inet_aton() and inet_ntoa() calls.
Guido van Rossum <guido@python.org>
parents:
11182
diff
changeset
|
1910 |
|
f406e78ec10b
Patch by Ben Gertzfield to add inet_aton() and inet_ntoa() calls.
Guido van Rossum <guido@python.org>
parents:
11182
diff
changeset
|
1911 static PyObject* |
| 13470 | 1912 PySocket_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
|
1913 { |
|
11268
3fe8d13328c8
It appears that inet_aton() doesn't really exist except in libresolv;
Guido van Rossum <guido@python.org>
parents:
11219
diff
changeset
|
1914 #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
|
1915 #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
|
1916 #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
|
1917 |
|
11219
2d7331f4dfe3
Port inet_ntoa and inet_aton to Windows:
Guido van Rossum <guido@python.org>
parents:
11217
diff
changeset
|
1918 /* Have to use inet_addr() instead */ |
|
2d7331f4dfe3
Port inet_ntoa and inet_aton to Windows:
Guido van Rossum <guido@python.org>
parents:
11217
diff
changeset
|
1919 char *ip_addr; |
|
2d7331f4dfe3
Port inet_ntoa and inet_aton to Windows:
Guido van Rossum <guido@python.org>
parents:
11217
diff
changeset
|
1920 long packed_addr; |
|
2d7331f4dfe3
Port inet_ntoa and inet_aton to Windows:
Guido van Rossum <guido@python.org>
parents:
11217
diff
changeset
|
1921 |
|
12050
b90880c0e5eb
Fix all routines to use PyArg_ParseTuple(), and add ":name" to the
Guido van Rossum <guido@python.org>
parents:
11937
diff
changeset
|
1922 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
|
1923 return NULL; |
|
2d7331f4dfe3
Port inet_ntoa and inet_aton to Windows:
Guido van Rossum <guido@python.org>
parents:
11217
diff
changeset
|
1924 } |
|
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
|
1925 #ifdef USE_GUSI1 |
|
11438
be25aaca11f4
Bugfix by Jack Jansen for Macintosh (for the inet_ntoa/aton changes):
Guido van Rossum <guido@python.org>
parents:
11288
diff
changeset
|
1926 packed_addr = (long)inet_addr(ip_addr).s_addr; |
|
be25aaca11f4
Bugfix by Jack Jansen for Macintosh (for the inet_ntoa/aton changes):
Guido van Rossum <guido@python.org>
parents:
11288
diff
changeset
|
1927 #else |
|
11219
2d7331f4dfe3
Port inet_ntoa and inet_aton to Windows:
Guido van Rossum <guido@python.org>
parents:
11217
diff
changeset
|
1928 packed_addr = inet_addr(ip_addr); |
|
11438
be25aaca11f4
Bugfix by Jack Jansen for Macintosh (for the inet_ntoa/aton changes):
Guido van Rossum <guido@python.org>
parents:
11288
diff
changeset
|
1929 #endif |
|
11219
2d7331f4dfe3
Port inet_ntoa and inet_aton to Windows:
Guido van Rossum <guido@python.org>
parents:
11217
diff
changeset
|
1930 |
|
2d7331f4dfe3
Port inet_ntoa and inet_aton to Windows:
Guido van Rossum <guido@python.org>
parents:
11217
diff
changeset
|
1931 if (packed_addr == INADDR_NONE) { /* invalid address */ |
|
2d7331f4dfe3
Port inet_ntoa and inet_aton to Windows:
Guido van Rossum <guido@python.org>
parents:
11217
diff
changeset
|
1932 PyErr_SetString(PySocket_Error, |
|
2d7331f4dfe3
Port inet_ntoa and inet_aton to Windows:
Guido van Rossum <guido@python.org>
parents:
11217
diff
changeset
|
1933 "illegal IP address string passed to inet_aton"); |
|
2d7331f4dfe3
Port inet_ntoa and inet_aton to Windows:
Guido van Rossum <guido@python.org>
parents:
11217
diff
changeset
|
1934 return NULL; |
|
2d7331f4dfe3
Port inet_ntoa and inet_aton to Windows:
Guido van Rossum <guido@python.org>
parents:
11217
diff
changeset
|
1935 } |
|
2d7331f4dfe3
Port inet_ntoa and inet_aton to Windows:
Guido van Rossum <guido@python.org>
parents:
11217
diff
changeset
|
1936 |
|
2d7331f4dfe3
Port inet_ntoa and inet_aton to Windows:
Guido van Rossum <guido@python.org>
parents:
11217
diff
changeset
|
1937 return PyString_FromStringAndSize((char *) &packed_addr, |
|
2d7331f4dfe3
Port inet_ntoa and inet_aton to Windows:
Guido van Rossum <guido@python.org>
parents:
11217
diff
changeset
|
1938 sizeof(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
|
1939 } |
|
f406e78ec10b
Patch by Ben Gertzfield to add inet_aton() and inet_ntoa() calls.
Guido van Rossum <guido@python.org>
parents:
11182
diff
changeset
|
1940 |
|
f406e78ec10b
Patch by Ben Gertzfield to add inet_aton() and inet_ntoa() calls.
Guido van Rossum <guido@python.org>
parents:
11182
diff
changeset
|
1941 static char inet_ntoa_doc[] = |
| 11937 | 1942 "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
|
1943 \n\ |
|
f406e78ec10b
Patch by Ben Gertzfield to add inet_aton() and inet_ntoa() calls.
Guido van Rossum <guido@python.org>
parents:
11182
diff
changeset
|
1944 Convert an IP address from 32-bit packed binary format to string format"; |
|
f406e78ec10b
Patch by Ben Gertzfield to add inet_aton() and inet_ntoa() calls.
Guido van Rossum <guido@python.org>
parents:
11182
diff
changeset
|
1945 |
|
f406e78ec10b
Patch by Ben Gertzfield to add inet_aton() and inet_ntoa() calls.
Guido van Rossum <guido@python.org>
parents:
11182
diff
changeset
|
1946 static PyObject* |
| 13470 | 1947 PySocket_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
|
1948 { |
|
f406e78ec10b
Patch by Ben Gertzfield to add inet_aton() and inet_ntoa() calls.
Guido van Rossum <guido@python.org>
parents:
11182
diff
changeset
|
1949 char *packed_str; |
|
11219
2d7331f4dfe3
Port inet_ntoa and inet_aton to Windows:
Guido van Rossum <guido@python.org>
parents:
11217
diff
changeset
|
1950 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
|
1951 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
|
1952 |
|
12050
b90880c0e5eb
Fix all routines to use PyArg_ParseTuple(), and add ":name" to the
Guido van Rossum <guido@python.org>
parents:
11937
diff
changeset
|
1953 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
|
1954 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
|
1955 } |
|
f406e78ec10b
Patch by Ben Gertzfield to add inet_aton() and inet_ntoa() calls.
Guido van Rossum <guido@python.org>
parents:
11182
diff
changeset
|
1956 |
|
f406e78ec10b
Patch by Ben Gertzfield to add inet_aton() and inet_ntoa() calls.
Guido van Rossum <guido@python.org>
parents:
11182
diff
changeset
|
1957 if (addr_len != sizeof(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
|
1958 PyErr_SetString(PySocket_Error, |
|
f406e78ec10b
Patch by Ben Gertzfield to add inet_aton() and inet_ntoa() calls.
Guido van Rossum <guido@python.org>
parents:
11182
diff
changeset
|
1959 "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
|
1960 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
|
1961 } |
|
f406e78ec10b
Patch by Ben Gertzfield to add inet_aton() and inet_ntoa() calls.
Guido van Rossum <guido@python.org>
parents:
11182
diff
changeset
|
1962 |
|
f406e78ec10b
Patch by Ben Gertzfield to add inet_aton() and inet_ntoa() calls.
Guido van Rossum <guido@python.org>
parents:
11182
diff
changeset
|
1963 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
|
1964 |
|
f406e78ec10b
Patch by Ben Gertzfield to add inet_aton() and inet_ntoa() calls.
Guido van Rossum <guido@python.org>
parents:
11182
diff
changeset
|
1965 return PyString_FromString(inet_ntoa(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
|
1966 } |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
1967 |
|
11527
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
1968 |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
1969 #ifdef USE_SSL |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
1970 |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
1971 /* This is a C function to be called for new object initialization */ |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
1972 static SSLObject * |
| 13470 | 1973 newSSLObject(PySocketSockObject *Sock, char *key_file, char *cert_file) |
|
11527
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
1974 { |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
1975 SSLObject *self; |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
1976 |
|
12576
1c7c2dd1beb1
Vladimir Marangozov's long-awaited malloc restructuring.
Guido van Rossum <guido@python.org>
parents:
12493
diff
changeset
|
1977 self = PyObject_New(SSLObject, &SSL_Type); /* Create new object */ |
|
11527
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
1978 if (self == NULL){ |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
1979 PyErr_SetObject(SSLErrorObject, |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
1980 PyString_FromString("newSSLObject error")); |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
1981 return NULL; |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
1982 } |
|
12436
dff7b26116de
Use an explicit macro SOCKETCLOSE which expands to closesocket (on
Guido van Rossum <guido@python.org>
parents:
12319
diff
changeset
|
1983 memset(self->server, '\0', sizeof(char) * 256); |
|
dff7b26116de
Use an explicit macro SOCKETCLOSE which expands to closesocket (on
Guido van Rossum <guido@python.org>
parents:
12319
diff
changeset
|
1984 memset(self->issuer, '\0', sizeof(char) * 256); |
|
11527
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
1985 |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
1986 self->x_attr = PyDict_New(); |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
1987 self->ctx = SSL_CTX_new(SSLv23_method()); /* Set up context */ |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
1988 if (self->ctx == NULL) { |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
1989 PyErr_SetObject(SSLErrorObject, |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
1990 PyString_FromString("SSL_CTX_new error")); |
|
12576
1c7c2dd1beb1
Vladimir Marangozov's long-awaited malloc restructuring.
Guido van Rossum <guido@python.org>
parents:
12493
diff
changeset
|
1991 PyObject_Del(self); |
|
11527
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
1992 return NULL; |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
1993 } |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
1994 |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
1995 if ( (key_file && !cert_file) || (!key_file && cert_file) ) |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
1996 { |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
1997 PyErr_SetObject(SSLErrorObject, |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
1998 PyString_FromString( |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
1999 "Both the key & certificate files must be specified")); |
|
12576
1c7c2dd1beb1
Vladimir Marangozov's long-awaited malloc restructuring.
Guido van Rossum <guido@python.org>
parents:
12493
diff
changeset
|
2000 PyObject_Del(self); |
|
11527
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2001 return NULL; |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2002 } |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2003 |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2004 if (key_file && cert_file) |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2005 { |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2006 if (SSL_CTX_use_PrivateKey_file(self->ctx, key_file, |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2007 SSL_FILETYPE_PEM) < 1) |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2008 { |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2009 PyErr_SetObject(SSLErrorObject, |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2010 PyString_FromString( |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2011 "SSL_CTX_use_PrivateKey_file error")); |
|
12576
1c7c2dd1beb1
Vladimir Marangozov's long-awaited malloc restructuring.
Guido van Rossum <guido@python.org>
parents:
12493
diff
changeset
|
2012 PyObject_Del(self); |
|
11527
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2013 return NULL; |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2014 } |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2015 |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2016 if (SSL_CTX_use_certificate_chain_file(self->ctx, |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2017 cert_file) < 1) |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2018 { |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2019 PyErr_SetObject(SSLErrorObject, |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2020 PyString_FromString( |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2021 "SSL_CTX_use_certificate_chain_file error")); |
|
12576
1c7c2dd1beb1
Vladimir Marangozov's long-awaited malloc restructuring.
Guido van Rossum <guido@python.org>
parents:
12493
diff
changeset
|
2022 PyObject_Del(self); |
|
11527
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2023 return NULL; |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2024 } |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2025 } |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2026 |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2027 SSL_CTX_set_verify(self->ctx, |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2028 SSL_VERIFY_NONE, NULL); /* set verify lvl */ |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2029 self->ssl = SSL_new(self->ctx); /* New ssl struct */ |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2030 SSL_set_fd(self->ssl, Sock->sock_fd); /* Set the socket for SSL */ |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2031 SSL_set_connect_state(self->ssl); |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2032 |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2033 if ((SSL_connect(self->ssl)) == -1) { |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2034 /* Actually negotiate SSL connection */ |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2035 PyErr_SetObject(SSLErrorObject, |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2036 PyString_FromString("SSL_connect error")); |
|
12576
1c7c2dd1beb1
Vladimir Marangozov's long-awaited malloc restructuring.
Guido van Rossum <guido@python.org>
parents:
12493
diff
changeset
|
2037 PyObject_Del(self); |
|
11527
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2038 return NULL; |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2039 } |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2040 self->ssl->debug = 1; |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2041 |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2042 if ((self->server_cert = SSL_get_peer_certificate(self->ssl))) { |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2043 X509_NAME_oneline(X509_get_subject_name(self->server_cert), |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2044 self->server, 256); |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2045 X509_NAME_oneline(X509_get_issuer_name(self->server_cert), |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2046 self->issuer, 256); |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2047 } |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2048 self->x_attr = NULL; |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2049 self->Socket = Sock; |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2050 Py_INCREF(self->Socket); |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2051 return self; |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2052 } |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2053 |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2054 /* This is the Python function called for new object initialization */ |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2055 static PyObject * |
| 13470 | 2056 PySocket_ssl(PyObject *self, PyObject *args) |
|
11527
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2057 { |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2058 SSLObject *rv; |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2059 PySocketSockObject *Sock; |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2060 char *key_file; |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2061 char *cert_file; |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2062 |
|
11882
dc65c5f6ad7c
Massive patch by Skip Montanaro to add ":name" to as many
Guido van Rossum <guido@python.org>
parents:
11527
diff
changeset
|
2063 if (!PyArg_ParseTuple(args, "O!zz:ssl", |
|
11527
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2064 &PySocketSock_Type, (PyObject*)&Sock, |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2065 &key_file, &cert_file) ) |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2066 return NULL; |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2067 |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2068 rv = newSSLObject(Sock, key_file, cert_file); |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2069 if ( rv == NULL ) |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2070 return NULL; |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2071 return (PyObject *)rv; |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2072 } |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2073 |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2074 static char ssl_doc[] = |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2075 "ssl(socket, keyfile, certfile) -> sslobject"; |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2076 |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2077 static PyObject * |
| 13470 | 2078 SSL_server(SSLObject *self, PyObject *args) |
|
11527
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2079 { |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2080 return PyString_FromString(self->server); |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2081 } |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2082 |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2083 static PyObject * |
| 13470 | 2084 SSL_issuer(SSLObject *self, PyObject *args) |
|
11527
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2085 { |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2086 return PyString_FromString(self->issuer); |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2087 } |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2088 |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2089 |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2090 /* SSL object methods */ |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2091 |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2092 static PyMethodDef SSLMethods[] = { |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2093 { "write", (PyCFunction)SSL_SSLwrite, 1 }, |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2094 { "read", (PyCFunction)SSL_SSLread, 1 }, |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2095 { "server", (PyCFunction)SSL_server, 1 }, |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2096 { "issuer", (PyCFunction)SSL_issuer, 1 }, |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2097 { NULL, NULL} |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2098 }; |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2099 |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2100 static void SSL_dealloc(SSLObject *self) |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2101 { |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2102 if (self->server_cert) /* Possible not to have one? */ |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2103 X509_free (self->server_cert); |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2104 SSL_CTX_free(self->ctx); |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2105 SSL_free(self->ssl); |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2106 Py_XDECREF(self->x_attr); |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2107 Py_XDECREF(self->Socket); |
|
12576
1c7c2dd1beb1
Vladimir Marangozov's long-awaited malloc restructuring.
Guido van Rossum <guido@python.org>
parents:
12493
diff
changeset
|
2108 PyObject_Del(self); |
|
11527
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2109 } |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2110 |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2111 static PyObject *SSL_getattr(SSLObject *self, char *name) |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2112 { |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2113 return Py_FindMethod(SSLMethods, (PyObject *)self, name); |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2114 } |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2115 |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2116 staticforward PyTypeObject SSL_Type = { |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2117 PyObject_HEAD_INIT(&PyType_Type) |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2118 0, /*ob_size*/ |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2119 "SSL", /*tp_name*/ |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2120 sizeof(SSLObject), /*tp_basicsize*/ |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2121 0, /*tp_itemsize*/ |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2122 /* methods */ |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2123 (destructor)SSL_dealloc, /*tp_dealloc*/ |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2124 0, /*tp_print*/ |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2125 (getattrfunc)SSL_getattr, /*tp_getattr*/ |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2126 0, /*tp_setattr*/ |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2127 0, /*tp_compare*/ |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2128 0, /*tp_repr*/ |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2129 0, /*tp_as_number*/ |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2130 0, /*tp_as_sequence*/ |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2131 0, /*tp_as_mapping*/ |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2132 0, /*tp_hash*/ |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2133 }; |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2134 |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2135 |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2136 |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2137 static PyObject *SSL_SSLwrite(SSLObject *self, PyObject *args) |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2138 { |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2139 char *data; |
|
13171
c17fd2ca6659
Trent Mick <trentm@activestate.com>:
Fred Drake <fdrake@acm.org>
parents:
12712
diff
changeset
|
2140 size_t len = 0; |
|
11527
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2141 |
|
11882
dc65c5f6ad7c
Massive patch by Skip Montanaro to add ":name" to as many
Guido van Rossum <guido@python.org>
parents:
11527
diff
changeset
|
2142 if (!PyArg_ParseTuple(args, "s|i:write", &data, &len)) |
|
11527
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2143 return NULL; |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2144 |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2145 if (!len) |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2146 len = strlen(data); |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2147 |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2148 len = SSL_write(self->ssl, data, len); |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2149 return PyInt_FromLong((long)len); |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2150 } |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2151 |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2152 static PyObject *SSL_SSLread(SSLObject *self, PyObject *args) |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2153 { |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2154 PyObject *buf; |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2155 int count = 0; |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2156 int len = 1024; |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2157 int res; |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2158 |
|
11882
dc65c5f6ad7c
Massive patch by Skip Montanaro to add ":name" to as many
Guido van Rossum <guido@python.org>
parents:
11527
diff
changeset
|
2159 PyArg_ParseTuple(args, "|i:read", &len); |
|
11527
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2160 |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2161 if (!(buf = PyString_FromStringAndSize((char *) 0, len))) |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2162 return NULL; /* Error object should already be set */ |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2163 |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2164 count = SSL_read(self->ssl, PyString_AsString(buf), len); |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2165 res = SSL_get_error(self->ssl, count); |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2166 |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2167 switch (res) { |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2168 case 0: /* Good return value! */ |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2169 break; |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2170 case 6: |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2171 PyErr_SetString(SSLErrorObject, "EOF"); |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2172 Py_DECREF(buf); |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2173 return NULL; |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2174 break; |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2175 case 5: |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2176 default: |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2177 return PyErr_SetFromErrno(SSLErrorObject); |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2178 break; |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2179 } |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2180 |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2181 fflush(stderr); |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2182 |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2183 if (count < 0) { |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2184 Py_DECREF(buf); |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2185 return PyErr_SetFromErrno(SSLErrorObject); |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2186 } |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2187 |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2188 if (count != len && _PyString_Resize(&buf, count) < 0) |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2189 return NULL; |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2190 return buf; |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2191 } |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2192 |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2193 #endif /* USE_SSL */ |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2194 |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2195 |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2196 /* 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
|
2197 |
| 1970 | 2198 static PyMethodDef PySocket_methods[] = { |
|
13817
3c0f75a2198f
Use METH_VARARGS instead of numeric constant 1 in method def. tables
Andrew M. Kuchling <amk@amk.ca>
parents:
13761
diff
changeset
|
2199 {"gethostbyname", PySocket_gethostbyname, |
|
3c0f75a2198f
Use METH_VARARGS instead of numeric constant 1 in method def. tables
Andrew M. Kuchling <amk@amk.ca>
parents:
13761
diff
changeset
|
2200 METH_VARARGS, gethostbyname_doc}, |
|
3c0f75a2198f
Use METH_VARARGS instead of numeric constant 1 in method def. tables
Andrew M. Kuchling <amk@amk.ca>
parents:
13761
diff
changeset
|
2201 {"gethostbyname_ex", PySocket_gethostbyname_ex, |
|
3c0f75a2198f
Use METH_VARARGS instead of numeric constant 1 in method def. tables
Andrew M. Kuchling <amk@amk.ca>
parents:
13761
diff
changeset
|
2202 METH_VARARGS, ghbn_ex_doc}, |
|
3c0f75a2198f
Use METH_VARARGS instead of numeric constant 1 in method def. tables
Andrew M. Kuchling <amk@amk.ca>
parents:
13761
diff
changeset
|
2203 {"gethostbyaddr", PySocket_gethostbyaddr, |
|
3c0f75a2198f
Use METH_VARARGS instead of numeric constant 1 in method def. tables
Andrew M. Kuchling <amk@amk.ca>
parents:
13761
diff
changeset
|
2204 METH_VARARGS, gethostbyaddr_doc}, |
|
3c0f75a2198f
Use METH_VARARGS instead of numeric constant 1 in method def. tables
Andrew M. Kuchling <amk@amk.ca>
parents:
13761
diff
changeset
|
2205 {"gethostname", PySocket_gethostname, |
|
3c0f75a2198f
Use METH_VARARGS instead of numeric constant 1 in method def. tables
Andrew M. Kuchling <amk@amk.ca>
parents:
13761
diff
changeset
|
2206 METH_VARARGS, gethostname_doc}, |
|
3c0f75a2198f
Use METH_VARARGS instead of numeric constant 1 in method def. tables
Andrew M. Kuchling <amk@amk.ca>
parents:
13761
diff
changeset
|
2207 {"getservbyname", PySocket_getservbyname, |
|
3c0f75a2198f
Use METH_VARARGS instead of numeric constant 1 in method def. tables
Andrew M. Kuchling <amk@amk.ca>
parents:
13761
diff
changeset
|
2208 METH_VARARGS, getservbyname_doc}, |
|
3c0f75a2198f
Use METH_VARARGS instead of numeric constant 1 in method def. tables
Andrew M. Kuchling <amk@amk.ca>
parents:
13761
diff
changeset
|
2209 {"getprotobyname", PySocket_getprotobyname, |
|
3c0f75a2198f
Use METH_VARARGS instead of numeric constant 1 in method def. tables
Andrew M. Kuchling <amk@amk.ca>
parents:
13761
diff
changeset
|
2210 METH_VARARGS,getprotobyname_doc}, |
|
3c0f75a2198f
Use METH_VARARGS instead of numeric constant 1 in method def. tables
Andrew M. Kuchling <amk@amk.ca>
parents:
13761
diff
changeset
|
2211 {"socket", PySocket_socket, |
|
3c0f75a2198f
Use METH_VARARGS instead of numeric constant 1 in method def. tables
Andrew M. Kuchling <amk@amk.ca>
parents:
13761
diff
changeset
|
2212 METH_VARARGS, socket_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
|
2213 #ifndef NO_DUP |
|
13817
3c0f75a2198f
Use METH_VARARGS instead of numeric constant 1 in method def. tables
Andrew M. Kuchling <amk@amk.ca>
parents:
13761
diff
changeset
|
2214 {"fromfd", PySocket_fromfd, |
|
3c0f75a2198f
Use METH_VARARGS instead of numeric constant 1 in method def. tables
Andrew M. Kuchling <amk@amk.ca>
parents:
13761
diff
changeset
|
2215 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
|
2216 #endif |
|
13817
3c0f75a2198f
Use METH_VARARGS instead of numeric constant 1 in method def. tables
Andrew M. Kuchling <amk@amk.ca>
parents:
13761
diff
changeset
|
2217 {"ntohs", PySocket_ntohs, |
|
3c0f75a2198f
Use METH_VARARGS instead of numeric constant 1 in method def. tables
Andrew M. Kuchling <amk@amk.ca>
parents:
13761
diff
changeset
|
2218 METH_VARARGS, ntohs_doc}, |
|
3c0f75a2198f
Use METH_VARARGS instead of numeric constant 1 in method def. tables
Andrew M. Kuchling <amk@amk.ca>
parents:
13761
diff
changeset
|
2219 {"ntohl", PySocket_ntohl, |
|
3c0f75a2198f
Use METH_VARARGS instead of numeric constant 1 in method def. tables
Andrew M. Kuchling <amk@amk.ca>
parents:
13761
diff
changeset
|
2220 METH_VARARGS, ntohl_doc}, |
|
3c0f75a2198f
Use METH_VARARGS instead of numeric constant 1 in method def. tables
Andrew M. Kuchling <amk@amk.ca>
parents:
13761
diff
changeset
|
2221 {"htons", PySocket_htons, |
|
3c0f75a2198f
Use METH_VARARGS instead of numeric constant 1 in method def. tables
Andrew M. Kuchling <amk@amk.ca>
parents:
13761
diff
changeset
|
2222 METH_VARARGS, htons_doc}, |
|
3c0f75a2198f
Use METH_VARARGS instead of numeric constant 1 in method def. tables
Andrew M. Kuchling <amk@amk.ca>
parents:
13761
diff
changeset
|
2223 {"htonl", PySocket_htonl, |
|
3c0f75a2198f
Use METH_VARARGS instead of numeric constant 1 in method def. tables
Andrew M. Kuchling <amk@amk.ca>
parents:
13761
diff
changeset
|
2224 METH_VARARGS, htonl_doc}, |
|
3c0f75a2198f
Use METH_VARARGS instead of numeric constant 1 in method def. tables
Andrew M. Kuchling <amk@amk.ca>
parents:
13761
diff
changeset
|
2225 {"inet_aton", PySocket_inet_aton, |
|
3c0f75a2198f
Use METH_VARARGS instead of numeric constant 1 in method def. tables
Andrew M. Kuchling <amk@amk.ca>
parents:
13761
diff
changeset
|
2226 METH_VARARGS, inet_aton_doc}, |
|
3c0f75a2198f
Use METH_VARARGS instead of numeric constant 1 in method def. tables
Andrew M. Kuchling <amk@amk.ca>
parents:
13761
diff
changeset
|
2227 {"inet_ntoa", PySocket_inet_ntoa, |
|
3c0f75a2198f
Use METH_VARARGS instead of numeric constant 1 in method def. tables
Andrew M. Kuchling <amk@amk.ca>
parents:
13761
diff
changeset
|
2228 METH_VARARGS, inet_ntoa_doc}, |
|
11527
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2229 #ifdef USE_SSL |
|
13817
3c0f75a2198f
Use METH_VARARGS instead of numeric constant 1 in method def. tables
Andrew M. Kuchling <amk@amk.ca>
parents:
13761
diff
changeset
|
2230 {"ssl", PySocket_ssl, |
|
3c0f75a2198f
Use METH_VARARGS instead of numeric constant 1 in method def. tables
Andrew M. Kuchling <amk@amk.ca>
parents:
13761
diff
changeset
|
2231 METH_VARARGS, ssl_doc}, |
|
11527
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2232 #endif /* USE_SSL */ |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2233 {NULL, NULL} /* Sentinel */ |
| 294 | 2234 }; |
| 2235 | |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2236 |
|
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2237 /* Convenience routine to export an integer value. |
|
4871
a7159ba0e45d
Check of return values and proper error handling.
Barry Warsaw <barry@python.org>
parents:
4783
diff
changeset
|
2238 * |
|
6367
2c29b8982643
Apply two changes, systematically:
Guido van Rossum <guido@python.org>
parents:
5697
diff
changeset
|
2239 * Errors are silently ignored, for better or for worse... |
|
4871
a7159ba0e45d
Check of return values and proper error handling.
Barry Warsaw <barry@python.org>
parents:
4783
diff
changeset
|
2240 */ |
| 294 | 2241 static void |
| 13470 | 2242 insint(PyObject *d, char *name, int value) |
| 294 | 2243 { |
| 1970 | 2244 PyObject *v = PyInt_FromLong((long) value); |
|
4871
a7159ba0e45d
Check of return values and proper error handling.
Barry Warsaw <barry@python.org>
parents:
4783
diff
changeset
|
2245 if (!v || PyDict_SetItemString(d, name, v)) |
|
6367
2c29b8982643
Apply two changes, systematically:
Guido van Rossum <guido@python.org>
parents:
5697
diff
changeset
|
2246 PyErr_Clear(); |
|
4871
a7159ba0e45d
Check of return values and proper error handling.
Barry Warsaw <barry@python.org>
parents:
4783
diff
changeset
|
2247 |
|
6367
2c29b8982643
Apply two changes, systematically:
Guido van Rossum <guido@python.org>
parents:
5697
diff
changeset
|
2248 Py_XDECREF(v); |
| 294 | 2249 } |
| 2250 | |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2251 |
|
3702
3408756ec601
changed windows test symbols; removed debug printf from sockets
Guido van Rossum <guido@python.org>
parents:
3700
diff
changeset
|
2252 #ifdef 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
|
2253 |
|
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
|
2254 /* Additional initialization and cleanup for NT/Windows */ |
|
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
|
2255 |
|
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
|
2256 static void |
|
13651
8a063423e0b7
Bunch of minor ANSIfications: 'void initfunc()' -> 'void initfunc(void)',
Thomas Wouters <thomas@python.org>
parents:
13554
diff
changeset
|
2257 NTcleanup(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
|
2258 { |
|
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
|
2259 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
|
2260 } |
|
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
|
2261 |
|
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
|
2262 static int |
|
13651
8a063423e0b7
Bunch of minor ANSIfications: 'void initfunc()' -> 'void initfunc(void)',
Thomas Wouters <thomas@python.org>
parents:
13554
diff
changeset
|
2263 NTinit(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
|
2264 { |
|
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
|
2265 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
|
2266 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
|
2267 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
|
2268 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
|
2269 switch (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
|
2270 case 0: /* no error */ |
|
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
|
2271 atexit(NTcleanup); |
|
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
|
2272 return 1; |
|
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
|
2273 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
|
2274 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
|
2275 "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
|
2276 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
|
2277 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
|
2278 case WSAEINVAL: |
|
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
|
2279 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
|
2280 "WSAStartup failed: requested version not supported"); |
|
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
|
2281 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
|
2282 default: |
|
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
|
2283 sprintf(buf, "WSAStartup failed: error code %d", 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
|
2284 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
|
2285 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
|
2286 } |
|
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
|
2287 return 0; |
|
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
|
2288 } |
|
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
|
2289 |
|
3702
3408756ec601
changed windows test symbols; removed debug printf from sockets
Guido van Rossum <guido@python.org>
parents:
3700
diff
changeset
|
2290 #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
|
2291 |
|
6626
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
2292 #if defined(PYOS_OS2) |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
2293 |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
2294 /* Additional initialization and cleanup for OS/2 */ |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
2295 |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
2296 static void |
|
13651
8a063423e0b7
Bunch of minor ANSIfications: 'void initfunc()' -> 'void initfunc(void)',
Thomas Wouters <thomas@python.org>
parents:
13554
diff
changeset
|
2297 OS2cleanup(void) |
|
6626
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
2298 { |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
2299 /* No cleanup is necessary for OS/2 Sockets */ |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
2300 } |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
2301 |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
2302 static int |
|
13651
8a063423e0b7
Bunch of minor ANSIfications: 'void initfunc()' -> 'void initfunc(void)',
Thomas Wouters <thomas@python.org>
parents:
13554
diff
changeset
|
2303 OS2init(void) |
|
6626
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
2304 { |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
2305 char reason[64]; |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
2306 int rc = sock_init(); |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
2307 |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
2308 if (rc == 0) { |
|
6718
32f2eda2946c
Left-aligned preprocessor directives and changed C++ comments to C
Guido van Rossum <guido@python.org>
parents:
6626
diff
changeset
|
2309 atexit(OS2cleanup); |
|
32f2eda2946c
Left-aligned preprocessor directives and changed C++ comments to C
Guido van Rossum <guido@python.org>
parents:
6626
diff
changeset
|
2310 return 1; /* Indicate Success */ |
|
6626
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
2311 } |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
2312 |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
2313 sprintf(reason, "OS/2 TCP/IP Error# %d", sock_errno()); |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
2314 PyErr_SetString(PyExc_ImportError, reason); |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
2315 |
|
6718
32f2eda2946c
Left-aligned preprocessor directives and changed C++ comments to C
Guido van Rossum <guido@python.org>
parents:
6626
diff
changeset
|
2316 return 0; /* Indicate Failure */ |
|
6626
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
2317 } |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
2318 |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
2319 #endif /* PYOS_OS2 */ |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
2320 |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2321 /* Initialize this module. |
|
6626
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
2322 * This is called when the first 'import socket' is done, |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
2323 * via a table in config.c, if config.c is compiled with USE_SOCKET |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
2324 * defined. |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
2325 * |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
2326 * For MS_WINDOWS (which means any Windows variant), this module |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
2327 * is actually called "_socket", and there's a wrapper "socket.py" |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
2328 * which implements some missing functionality (such as makefile(), |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
2329 * dup() and fromfd()). The import of "_socket" may fail with an |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
2330 * ImportError exception if initialization of WINSOCK fails. When |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
2331 * WINSOCK is initialized succesfully, a call to WSACleanup() is |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
2332 * scheduled to be made at exit time. |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
2333 * |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
2334 * For OS/2, this module is also called "_socket" and uses a wrapper |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
2335 * "socket.py" which implements that functionality that is missing |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
2336 * when PC operating systems don't put socket descriptors in the |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
2337 * operating system's filesystem layer. |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
2338 */ |
|
295
d7a38dece86a
Many changes to the interface, and added comments.
Guido van Rossum <guido@python.org>
parents:
294
diff
changeset
|
2339 |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2340 static char module_doc[] = |
|
14008
6c91ad9c0e06
Remove a lot of the confusing conditional compilation from the beginning
Fred Drake <fdrake@acm.org>
parents:
13830
diff
changeset
|
2341 "Implementation module for socket operations. See the socket module\n\ |
|
6c91ad9c0e06
Remove a lot of the confusing conditional compilation from the beginning
Fred Drake <fdrake@acm.org>
parents:
13830
diff
changeset
|
2342 for documentation."; |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2343 |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2344 static char sockettype_doc[] = |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2345 "A socket represents one endpoint of a network connection.\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2346 \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2347 Methods:\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2348 \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2349 accept() -- accept a connection, returning new socket and client address\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2350 bind() -- bind the socket to a local address\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2351 close() -- close the socket\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2352 connect() -- connect the socket to a remote address\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2353 connect_ex() -- connect, return an error code instead of an exception \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2354 dup() -- return a new socket object identical to the current one (*)\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2355 fileno() -- return underlying file descriptor\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2356 getpeername() -- return remote address (*)\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2357 getsockname() -- return local address\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2358 getsockopt() -- get socket options\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2359 listen() -- start listening for incoming connections\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2360 makefile() -- return a file object corresponding tot the socket (*)\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2361 recv() -- receive data\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2362 recvfrom() -- receive data and sender's address\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2363 send() -- send data\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2364 sendto() -- send data to a given address\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2365 setblocking() -- set or clear the blocking I/O flag\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2366 setsockopt() -- set socket options\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2367 shutdown() -- shut down traffic in one or both directions\n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2368 \n\ |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2369 (*) not available on all platforms!)"; |
|
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2370 |
|
9588
38023a425e48
Add DL_EXPORT() to all modules that could possibly be used
Guido van Rossum <guido@python.org>
parents:
9307
diff
changeset
|
2371 DL_EXPORT(void) |
|
13694
b54f11ada91e
Create a new section of pyport.h to hold all external function declarations
Thomas Wouters <thomas@python.org>
parents:
13680
diff
changeset
|
2372 init_socket(void) |
| 294 | 2373 { |
| 1970 | 2374 PyObject *m, *d; |
|
3702
3408756ec601
changed windows test symbols; removed debug printf from sockets
Guido van Rossum <guido@python.org>
parents:
3700
diff
changeset
|
2375 #ifdef 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
|
2376 if (!NTinit()) |
|
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
|
2377 return; |
|
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
|
2378 #else |
|
6718
32f2eda2946c
Left-aligned preprocessor directives and changed C++ comments to C
Guido van Rossum <guido@python.org>
parents:
6626
diff
changeset
|
2379 #if defined(__TOS_OS2__) |
|
6626
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
2380 if (!OS2init()) |
|
5e31d381fa47
os2 patch by Jeff Rush
Guido van Rossum <guido@python.org>
parents:
6618
diff
changeset
|
2381 return; |
|
14008
6c91ad9c0e06
Remove a lot of the confusing conditional compilation from the beginning
Fred Drake <fdrake@acm.org>
parents:
13830
diff
changeset
|
2382 #endif /* __TOS_OS2__ */ |
|
6c91ad9c0e06
Remove a lot of the confusing conditional compilation from the beginning
Fred Drake <fdrake@acm.org>
parents:
13830
diff
changeset
|
2383 #endif /* MS_WINDOWS */ |
|
8823
f2a4a2b60860
Changes for BeOS, QNX and long long, by Chris Herborth.
Guido van Rossum <guido@python.org>
parents:
8821
diff
changeset
|
2384 m = Py_InitModule3("_socket", PySocket_methods, module_doc); |
| 1970 | 2385 d = PyModule_GetDict(m); |
|
6367
2c29b8982643
Apply two changes, systematically:
Guido van Rossum <guido@python.org>
parents:
5697
diff
changeset
|
2386 PySocket_Error = PyErr_NewException("socket.error", NULL, NULL); |
|
2c29b8982643
Apply two changes, systematically:
Guido van Rossum <guido@python.org>
parents:
5697
diff
changeset
|
2387 if (PySocket_Error == NULL) |
|
2c29b8982643
Apply two changes, systematically:
Guido van Rossum <guido@python.org>
parents:
5697
diff
changeset
|
2388 return; |
|
11527
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2389 #ifdef USE_SSL |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2390 SSL_load_error_strings(); |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2391 SSLeay_add_ssl_algorithms(); |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2392 SSLErrorObject = PyErr_NewException("socket.sslerror", NULL, NULL); |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2393 if (SSLErrorObject == NULL) |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2394 return; |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2395 PyDict_SetItemString(d, "sslerror", SSLErrorObject); |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2396 Py_INCREF(&SSL_Type); |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2397 if (PyDict_SetItemString(d, "SSLType", |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2398 (PyObject *)&SSL_Type) != 0) |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2399 return; |
|
28b8585354de
OpenSSL support. This is based on patches for a version of SSLeay by
Guido van Rossum <guido@python.org>
parents:
11438
diff
changeset
|
2400 #endif /* USE_SSL */ |
|
6367
2c29b8982643
Apply two changes, systematically:
Guido van Rossum <guido@python.org>
parents:
5697
diff
changeset
|
2401 PyDict_SetItemString(d, "error", PySocket_Error); |
|
5572
b231855a9474
Add socket.socket_type, as discussed on c.l.p.
Guido van Rossum <guido@python.org>
parents:
5534
diff
changeset
|
2402 PySocketSock_Type.ob_type = &PyType_Type; |
|
8631
d86733676815
Added copious docstrings, plus two minor layout tweaks.
Guido van Rossum <guido@python.org>
parents:
8439
diff
changeset
|
2403 PySocketSock_Type.tp_doc = sockettype_doc; |
|
5572
b231855a9474
Add socket.socket_type, as discussed on c.l.p.
Guido van Rossum <guido@python.org>
parents:
5534
diff
changeset
|
2404 Py_INCREF(&PySocketSock_Type); |
|
5697
88b0b2a3aab5
socket_type -> SocketType
Guido van Rossum <guido@python.org>
parents:
5572
diff
changeset
|
2405 if (PyDict_SetItemString(d, "SocketType", |
|
5572
b231855a9474
Add socket.socket_type, as discussed on c.l.p.
Guido van Rossum <guido@python.org>
parents:
5534
diff
changeset
|
2406 (PyObject *)&PySocketSock_Type) != 0) |
|
6367
2c29b8982643
Apply two changes, systematically:
Guido van Rossum <guido@python.org>
parents:
5697
diff
changeset
|
2407 return; |
|
11182
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2408 |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2409 /* 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
|
2410 #ifdef AF_UNSPEC |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2411 insint(d, "AF_UNSPEC", AF_UNSPEC); |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2412 #endif |
| 294 | 2413 insint(d, "AF_INET", AF_INET); |
|
1746
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1413
diff
changeset
|
2414 #ifdef AF_UNIX |
| 294 | 2415 insint(d, "AF_UNIX", AF_UNIX); |
|
1746
1940892d2fe3
Merge alpha100 branch back to main trunk
Guido van Rossum <guido@python.org>
parents:
1413
diff
changeset
|
2416 #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
|
2417 #ifdef AF_AX25 |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2418 insint(d, "AF_AX25", AF_AX25); /* Amateur Radio AX.25 */ |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2419 #endif |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2420 #ifdef AF_IPX |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2421 insint(d, "AF_IPX", AF_IPX); /* Novell IPX */ |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2422 #endif |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2423 #ifdef AF_APPLETALK |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2424 insint(d, "AF_APPLETALK", AF_APPLETALK); /* Appletalk DDP */ |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2425 #endif |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2426 #ifdef AF_NETROM |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2427 insint(d, "AF_NETROM", AF_NETROM); /* Amateur radio NetROM */ |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2428 #endif |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2429 #ifdef AF_BRIDGE |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2430 insint(d, "AF_BRIDGE", AF_BRIDGE); /* Multiprotocol bridge */ |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2431 #endif |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2432 #ifdef AF_AAL5 |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2433 insint(d, "AF_AAL5", AF_AAL5); /* Reserved for Werner's ATM */ |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2434 #endif |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2435 #ifdef AF_X25 |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2436 insint(d, "AF_X25", AF_X25); /* Reserved for X.25 project */ |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2437 #endif |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2438 #ifdef AF_INET6 |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2439 insint(d, "AF_INET6", AF_INET6); /* IP version 6 */ |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2440 #endif |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2441 #ifdef AF_ROSE |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2442 insint(d, "AF_ROSE", AF_ROSE); /* Amateur Radio X.25 PLP */ |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2443 #endif |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2444 |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2445 /* Socket types */ |
| 294 | 2446 insint(d, "SOCK_STREAM", SOCK_STREAM); |
| 2447 insint(d, "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
|
2448 #ifndef __BEOS__ |
|
f2a4a2b60860
Changes for BeOS, QNX and long long, by Chris Herborth.
Guido van Rossum <guido@python.org>
parents:
8821
diff
changeset
|
2449 /* We have incomplete socket support. */ |
| 294 | 2450 insint(d, "SOCK_RAW", SOCK_RAW); |
| 2451 insint(d, "SOCK_SEQPACKET", SOCK_SEQPACKET); | |
| 2452 insint(d, "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
|
2453 #endif |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2454 |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2455 #ifdef SO_DEBUG |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2456 insint(d, "SO_DEBUG", SO_DEBUG); |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2457 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2458 #ifdef SO_ACCEPTCONN |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2459 insint(d, "SO_ACCEPTCONN", SO_ACCEPTCONN); |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2460 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2461 #ifdef SO_REUSEADDR |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2462 insint(d, "SO_REUSEADDR", SO_REUSEADDR); |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2463 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2464 #ifdef SO_KEEPALIVE |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2465 insint(d, "SO_KEEPALIVE", SO_KEEPALIVE); |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2466 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2467 #ifdef SO_DONTROUTE |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2468 insint(d, "SO_DONTROUTE", SO_DONTROUTE); |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2469 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2470 #ifdef SO_BROADCAST |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2471 insint(d, "SO_BROADCAST", SO_BROADCAST); |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2472 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2473 #ifdef SO_USELOOPBACK |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2474 insint(d, "SO_USELOOPBACK", SO_USELOOPBACK); |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2475 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2476 #ifdef SO_LINGER |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2477 insint(d, "SO_LINGER", SO_LINGER); |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2478 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2479 #ifdef SO_OOBINLINE |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2480 insint(d, "SO_OOBINLINE", SO_OOBINLINE); |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2481 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2482 #ifdef SO_REUSEPORT |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2483 insint(d, "SO_REUSEPORT", SO_REUSEPORT); |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2484 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2485 #ifdef SO_SNDBUF |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2486 insint(d, "SO_SNDBUF", SO_SNDBUF); |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2487 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2488 #ifdef SO_RCVBUF |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2489 insint(d, "SO_RCVBUF", SO_RCVBUF); |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2490 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2491 #ifdef SO_SNDLOWAT |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2492 insint(d, "SO_SNDLOWAT", SO_SNDLOWAT); |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2493 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2494 #ifdef SO_RCVLOWAT |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2495 insint(d, "SO_RCVLOWAT", SO_RCVLOWAT); |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2496 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2497 #ifdef SO_SNDTIMEO |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2498 insint(d, "SO_SNDTIMEO", SO_SNDTIMEO); |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2499 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2500 #ifdef SO_RCVTIMEO |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2501 insint(d, "SO_RCVTIMEO", SO_RCVTIMEO); |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2502 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2503 #ifdef SO_ERROR |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2504 insint(d, "SO_ERROR", SO_ERROR); |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2505 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2506 #ifdef SO_TYPE |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2507 insint(d, "SO_TYPE", SO_TYPE); |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2508 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2509 |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2510 /* Maximum number of connections for "listen" */ |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2511 #ifdef SOMAXCONN |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2512 insint(d, "SOMAXCONN", SOMAXCONN); |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2513 #else |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2514 insint(d, "SOMAXCONN", 5); /* Common value */ |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2515 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2516 |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2517 /* Flags for send, recv */ |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2518 #ifdef MSG_OOB |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2519 insint(d, "MSG_OOB", MSG_OOB); |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2520 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2521 #ifdef MSG_PEEK |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2522 insint(d, "MSG_PEEK", MSG_PEEK); |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2523 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2524 #ifdef MSG_DONTROUTE |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2525 insint(d, "MSG_DONTROUTE", MSG_DONTROUTE); |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2526 #endif |
|
12492
1725e802e3eb
Patch by Charles G Waldman:
Guido van Rossum <guido@python.org>
parents:
12479
diff
changeset
|
2527 #ifdef MSG_DONTWAIT |
|
12493
04cfa1341a50
Fix typo in last patch -- the symbol's name is MSG_DONWAIT, not
Guido van Rossum <guido@python.org>
parents:
12492
diff
changeset
|
2528 insint(d, "MSG_DONTWAIT", MSG_DONTWAIT); |
|
12492
1725e802e3eb
Patch by Charles G Waldman:
Guido van Rossum <guido@python.org>
parents:
12479
diff
changeset
|
2529 #endif |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2530 #ifdef MSG_EOR |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2531 insint(d, "MSG_EOR", MSG_EOR); |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2532 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2533 #ifdef MSG_TRUNC |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2534 insint(d, "MSG_TRUNC", MSG_TRUNC); |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2535 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2536 #ifdef MSG_CTRUNC |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2537 insint(d, "MSG_CTRUNC", MSG_CTRUNC); |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2538 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2539 #ifdef MSG_WAITALL |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2540 insint(d, "MSG_WAITALL", MSG_WAITALL); |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2541 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2542 #ifdef MSG_BTAG |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2543 insint(d, "MSG_BTAG", MSG_BTAG); |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2544 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2545 #ifdef MSG_ETAG |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2546 insint(d, "MSG_ETAG", MSG_ETAG); |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2547 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2548 |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2549 /* Protocol level and numbers, usable for [gs]etsockopt */ |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2550 #ifdef SOL_SOCKET |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2551 insint(d, "SOL_SOCKET", SOL_SOCKET); |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2552 #endif |
|
11182
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2553 #ifdef SOL_IP |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2554 insint(d, "SOL_IP", SOL_IP); |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2555 #else |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2556 insint(d, "SOL_IP", 0); |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2557 #endif |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2558 #ifdef SOL_IPX |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2559 insint(d, "SOL_IPX", SOL_IPX); |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2560 #endif |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2561 #ifdef SOL_AX25 |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2562 insint(d, "SOL_AX25", SOL_AX25); |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2563 #endif |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2564 #ifdef SOL_ATALK |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2565 insint(d, "SOL_ATALK", SOL_ATALK); |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2566 #endif |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2567 #ifdef SOL_NETROM |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2568 insint(d, "SOL_NETROM", SOL_NETROM); |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2569 #endif |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2570 #ifdef SOL_ROSE |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2571 insint(d, "SOL_ROSE", SOL_ROSE); |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2572 #endif |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2573 #ifdef SOL_TCP |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2574 insint(d, "SOL_TCP", SOL_TCP); |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2575 #else |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2576 insint(d, "SOL_TCP", 6); |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2577 #endif |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2578 #ifdef SOL_UDP |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2579 insint(d, "SOL_UDP", SOL_UDP); |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2580 #else |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2581 insint(d, "SOL_UDP", 17); |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2582 #endif |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2583 #ifdef IPPROTO_IP |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2584 insint(d, "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
|
2585 #else |
|
534602746079
Some systems (e.g. Linux) use enums for some symbols (like IPPROTO_IP)
Guido van Rossum <guido@python.org>
parents:
7942
diff
changeset
|
2586 insint(d, "IPPROTO_IP", 0); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2587 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2588 #ifdef IPPROTO_ICMP |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2589 insint(d, "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
|
2590 #else |
|
534602746079
Some systems (e.g. Linux) use enums for some symbols (like IPPROTO_IP)
Guido van Rossum <guido@python.org>
parents:
7942
diff
changeset
|
2591 insint(d, "IPPROTO_ICMP", 1); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2592 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2593 #ifdef IPPROTO_IGMP |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2594 insint(d, "IPPROTO_IGMP", IPPROTO_IGMP); |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2595 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2596 #ifdef IPPROTO_GGP |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2597 insint(d, "IPPROTO_GGP", IPPROTO_GGP); |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2598 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2599 #ifdef IPPROTO_TCP |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2600 insint(d, "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
|
2601 #else |
|
534602746079
Some systems (e.g. Linux) use enums for some symbols (like IPPROTO_IP)
Guido van Rossum <guido@python.org>
parents:
7942
diff
changeset
|
2602 insint(d, "IPPROTO_TCP", 6); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2603 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2604 #ifdef IPPROTO_EGP |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2605 insint(d, "IPPROTO_EGP", IPPROTO_EGP); |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2606 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2607 #ifdef IPPROTO_PUP |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2608 insint(d, "IPPROTO_PUP", IPPROTO_PUP); |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2609 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2610 #ifdef IPPROTO_UDP |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2611 insint(d, "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
|
2612 #else |
|
534602746079
Some systems (e.g. Linux) use enums for some symbols (like IPPROTO_IP)
Guido van Rossum <guido@python.org>
parents:
7942
diff
changeset
|
2613 insint(d, "IPPROTO_UDP", 17); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2614 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2615 #ifdef IPPROTO_IDP |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2616 insint(d, "IPPROTO_IDP", IPPROTO_IDP); |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2617 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2618 #ifdef IPPROTO_HELLO |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2619 insint(d, "IPPROTO_HELLO", IPPROTO_HELLO); |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2620 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2621 #ifdef IPPROTO_ND |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2622 insint(d, "IPPROTO_ND", IPPROTO_ND); |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2623 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2624 #ifdef IPPROTO_TP |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2625 insint(d, "IPPROTO_TP", IPPROTO_TP); |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2626 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2627 #ifdef IPPROTO_XTP |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2628 insint(d, "IPPROTO_XTP", IPPROTO_XTP); |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2629 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2630 #ifdef IPPROTO_EON |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2631 insint(d, "IPPROTO_EON", IPPROTO_EON); |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2632 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2633 #ifdef IPPROTO_BIP |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2634 insint(d, "IPPROTO_BIP", IPPROTO_BIP); |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2635 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2636 /**/ |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2637 #ifdef IPPROTO_RAW |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2638 insint(d, "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
|
2639 #else |
|
534602746079
Some systems (e.g. Linux) use enums for some symbols (like IPPROTO_IP)
Guido van Rossum <guido@python.org>
parents:
7942
diff
changeset
|
2640 insint(d, "IPPROTO_RAW", 255); |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2641 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2642 #ifdef IPPROTO_MAX |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2643 insint(d, "IPPROTO_MAX", IPPROTO_MAX); |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2644 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2645 |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2646 /* Some port configuration */ |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2647 #ifdef IPPORT_RESERVED |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2648 insint(d, "IPPORT_RESERVED", IPPORT_RESERVED); |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2649 #else |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2650 insint(d, "IPPORT_RESERVED", 1024); |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2651 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2652 #ifdef IPPORT_USERRESERVED |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2653 insint(d, "IPPORT_USERRESERVED", IPPORT_USERRESERVED); |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2654 #else |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2655 insint(d, "IPPORT_USERRESERVED", 5000); |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2656 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2657 |
| 2369 | 2658 /* Some reserved IP v.4 addresses */ |
| 2659 #ifdef INADDR_ANY | |
| 2660 insint(d, "INADDR_ANY", INADDR_ANY); | |
| 2661 #else | |
| 2662 insint(d, "INADDR_ANY", 0x00000000); | |
| 2663 #endif | |
| 2664 #ifdef INADDR_BROADCAST | |
| 2665 insint(d, "INADDR_BROADCAST", INADDR_BROADCAST); | |
| 2666 #else | |
| 2667 insint(d, "INADDR_BROADCAST", 0xffffffff); | |
| 2668 #endif | |
| 2669 #ifdef INADDR_LOOPBACK | |
| 2670 insint(d, "INADDR_LOOPBACK", INADDR_LOOPBACK); | |
| 2671 #else | |
| 2672 insint(d, "INADDR_LOOPBACK", 0x7F000001); | |
| 2673 #endif | |
| 2674 #ifdef INADDR_UNSPEC_GROUP | |
| 2675 insint(d, "INADDR_UNSPEC_GROUP", INADDR_UNSPEC_GROUP); | |
| 2676 #else | |
| 2677 insint(d, "INADDR_UNSPEC_GROUP", 0xe0000000); | |
| 2678 #endif | |
| 2679 #ifdef INADDR_ALLHOSTS_GROUP | |
| 2680 insint(d, "INADDR_ALLHOSTS_GROUP", INADDR_ALLHOSTS_GROUP); | |
| 2681 #else | |
| 2682 insint(d, "INADDR_ALLHOSTS_GROUP", 0xe0000001); | |
| 2683 #endif | |
| 2684 #ifdef INADDR_MAX_LOCAL_GROUP | |
| 2685 insint(d, "INADDR_MAX_LOCAL_GROUP", INADDR_MAX_LOCAL_GROUP); | |
| 2686 #else | |
| 2687 insint(d, "INADDR_MAX_LOCAL_GROUP", 0xe00000ff); | |
| 2688 #endif | |
| 2689 #ifdef INADDR_NONE | |
| 2690 insint(d, "INADDR_NONE", INADDR_NONE); | |
| 2691 #else | |
| 2692 insint(d, "INADDR_NONE", 0xffffffff); | |
| 2693 #endif | |
| 2694 | |
|
2299
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2695 /* IP [gs]etsockopt options */ |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2696 #ifdef IP_OPTIONS |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2697 insint(d, "IP_OPTIONS", IP_OPTIONS); |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2698 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2699 #ifdef IP_HDRINCL |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2700 insint(d, "IP_HDRINCL", IP_HDRINCL); |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2701 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2702 #ifdef IP_TOS |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2703 insint(d, "IP_TOS", IP_TOS); |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2704 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2705 #ifdef IP_TTL |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2706 insint(d, "IP_TTL", IP_TTL); |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2707 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2708 #ifdef IP_RECVOPTS |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2709 insint(d, "IP_RECVOPTS", IP_RECVOPTS); |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2710 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2711 #ifdef IP_RECVRETOPTS |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2712 insint(d, "IP_RECVRETOPTS", IP_RECVRETOPTS); |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2713 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2714 #ifdef IP_RECVDSTADDR |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2715 insint(d, "IP_RECVDSTADDR", IP_RECVDSTADDR); |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2716 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2717 #ifdef IP_RETOPTS |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2718 insint(d, "IP_RETOPTS", IP_RETOPTS); |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2719 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2720 #ifdef IP_MULTICAST_IF |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2721 insint(d, "IP_MULTICAST_IF", IP_MULTICAST_IF); |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2722 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2723 #ifdef IP_MULTICAST_TTL |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2724 insint(d, "IP_MULTICAST_TTL", IP_MULTICAST_TTL); |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2725 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2726 #ifdef IP_MULTICAST_LOOP |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2727 insint(d, "IP_MULTICAST_LOOP", IP_MULTICAST_LOOP); |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2728 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2729 #ifdef IP_ADD_MEMBERSHIP |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2730 insint(d, "IP_ADD_MEMBERSHIP", IP_ADD_MEMBERSHIP); |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2731 #endif |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2732 #ifdef IP_DROP_MEMBERSHIP |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2733 insint(d, "IP_DROP_MEMBERSHIP", IP_DROP_MEMBERSHIP); |
|
990099ed7810
add socket related constants
Guido van Rossum <guido@python.org>
parents:
2123
diff
changeset
|
2734 #endif |
|
11182
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2735 #ifdef IP_DEFAULT_MULTICAST_TTL |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2736 insint(d, "IP_DEFAULT_MULTICAST_TTL", IP_DEFAULT_MULTICAST_TTL); |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2737 #endif |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2738 #ifdef IP_DEFAULT_MULTICAST_LOOP |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2739 insint(d, "IP_DEFAULT_MULTICAST_LOOP", IP_DEFAULT_MULTICAST_LOOP); |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2740 #endif |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2741 #ifdef IP_MAX_MEMBERSHIPS |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2742 insint(d, "IP_MAX_MEMBERSHIPS", IP_MAX_MEMBERSHIPS); |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2743 #endif |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2744 |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2745 /* TCP options */ |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2746 #ifdef TCP_NODELAY |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2747 insint(d, "TCP_NODELAY", TCP_NODELAY); |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2748 #endif |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2749 #ifdef TCP_MAXSEG |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2750 insint(d, "TCP_MAXSEG", TCP_MAXSEG); |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2751 #endif |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2752 |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2753 /* IPX options */ |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2754 #ifdef IPX_TYPE |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2755 insint(d, "IPX_TYPE", IPX_TYPE); |
|
35e0d03f2b02
Patch by Marc-Andre Lemburg to add a bunch more symbols.
Guido van Rossum <guido@python.org>
parents:
10579
diff
changeset
|
2756 #endif |
|
7942
ee2aaa2f722a
Threading speedup patches by Christopher Lindblad <cjl@infoseek.com>.
Guido van Rossum <guido@python.org>
parents:
6718
diff
changeset
|
2757 |
|
ee2aaa2f722a
Threading speedup patches by Christopher Lindblad <cjl@infoseek.com>.
Guido van Rossum <guido@python.org>
parents:
6718
diff
changeset
|
2758 /* Initialize gethostbyname lock */ |
|
10442
9184c9e108f9
Clean up pass for the previous patches.
Guido van Rossum <guido@python.org>
parents:
10441
diff
changeset
|
2759 #ifdef USE_GETHOSTBYNAME_LOCK |
|
9679
877d23bd5bdc
Thanks to Chris Herborth, the thread primitives now have proper Py*
Guido van Rossum <guido@python.org>
parents:
9588
diff
changeset
|
2760 gethostbyname_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
|
2761 #endif |
| 294 | 2762 } |
