Differences From Artifact [9e582cf95c9e24a6]:
- File
src/win32/mswsock.d
- 2015-04-21 10:46:55 - part of checkin [4e2933c620] on branch trunk - Rebased to the latest verson dmd 2.067. Not yet verified the outcome. (user: kinaba) [annotate]
To Artifact [2000809206e7e4e6]:
- File
src/win32/mswsock.d
-
2015-05-05 06:49:05
- part of checkin
[9b639cf2d6]
on branch trunk
- Working version for update to 2.067.
The problem was __gshared. Replacing it with TLS fixed the issue. Remaining problem is that "hack.d"'s CloseHandle hack is not working anymore.
(user: kinaba) [annotate]
-
2015-05-05 06:49:05
- part of checkin
[9b639cf2d6]
on branch trunk
- Working version for update to 2.067.
22 // line; otherwise, default to Winsock2. 22 // line; otherwise, default to Winsock2.
23 version (Win32_Winsock1) { 23 version (Win32_Winsock1) {
24 import win32.winsock; 24 import win32.winsock;
25 } else { 25 } else {
26 import win32.winsock2; 26 import win32.winsock2;
27 } 27 }
28 28
29 static if (_WIN32_WINNT_ONLY) { <
30 static if (_WIN32_WINNT >= 0x500) { | 29 static if (_WIN32_WINNT >= 0x500) {
31 enum { | 30 enum {
32 /* WinNT5+: | 31 /* WinNT5+:
33 ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/soc | 32 ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/socket_opti
34 SO_MAXDG = 0x7009, | 33 SO_MAXDG = 0x7009,
35 SO_MAXPATHDG = 0x700A, | 34 SO_MAXPATHDG = 0x700A,
36 } <
37 } 35 }
> 36 }
38 37
39 enum { | 38 enum {
40 /* WinNT4+: | 39 /* WinNT4+:
41 ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/socket_opti | 40 ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/socket_options_for_
42 SO_CONNDATA = 0x7000, | 41 SO_CONNDATA = 0x7000,
43 SO_CONNOPT = 0x7001, | 42 SO_CONNOPT = 0x7001,
44 SO_DISCDATA = 0x7002, | 43 SO_DISCDATA = 0x7002,
45 SO_DISCOPT = 0x7003, | 44 SO_DISCOPT = 0x7003,
46 SO_CONNDATALEN = 0x7004, | 45 SO_CONNDATALEN = 0x7004,
47 SO_CONNOPTLEN = 0x7005, | 46 SO_CONNOPTLEN = 0x7005,
48 SO_DISCDATALEN = 0x7006, | 47 SO_DISCDATALEN = 0x7006,
49 SO_DISCOPTLEN = 0x7007, | 48 SO_DISCOPTLEN = 0x7007,
50 49
51 /* WinNT4: | 50 /* WinNT4:
52 ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/socket_opti | 51 ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/socket_options.htm
53 SO_UPDATE_ACCEPT_CONTENT = 0x700B, | 52 SO_UPDATE_ACCEPT_CONTENT = 0x700B,
54 } <
55 } 53 }
56 54
57 enum { 55 enum {
58 /* Win95+, WinNT4+ but apparently shouldn't used: mark as deprecated? 56 /* Win95+, WinNT4+ but apparently shouldn't used: mark as deprecated?
59 ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/socket_options.htm 57 ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/socket_options.htm
60 SO_OPENTYPE = 0x7008, 58 SO_OPENTYPE = 0x7008,
61 59
................................................................................................................................................................................
67 65
68 /* Win95: 66 /* Win95:
69 ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/socket_options.htm 67 ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/socket_options.htm
70 SO_CONNECT_TIME = 0x700C, 68 SO_CONNECT_TIME = 0x700C,
71 } 69 }
72 70
73 71
74 static if (_WIN32_WINNT_ONLY) { <
75 enum { | 72 enum {
76 TCP_BSDURGENT = 0x7000, | 73 TCP_BSDURGENT = 0x7000,
77 } | 74 }
78 75
79 /* These *appear* to be constants for passing to the TransmitFile / | 76 /* These *appear* to be constants for passing to the TransmitFile /
80 TransmitPackets functions, which are available in WinNT3.51+ | 77 TransmitPackets functions, which are available in WinNT3.51+
81 ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/transmitfile_2.htm | 78 ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/transmitfile_2.htm */
82 enum { | 79 enum {
83 TF_DISCONNECT = 1, | 80 TF_DISCONNECT = 1,
84 TF_REUSE_SOCKET = 2, | 81 TF_REUSE_SOCKET = 2,
85 TF_WRITE_BEHIND = 4, | 82 TF_WRITE_BEHIND = 4,
86 TF_USE_DEFAULT_WORKER = 0, | 83 TF_USE_DEFAULT_WORKER = 0,
87 TF_USE_SYSTEM_THREAD = 16, | 84 TF_USE_SYSTEM_THREAD = 16,
88 TF_USE_KERNEL_APC = 32 | 85 TF_USE_KERNEL_APC = 32
89 } <
90 } 86 }
91 87
92 /* Win95+, WinNT3.51+ 88 /* Win95+, WinNT3.51+
93 ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/transmit_file_buffers_2.htm 89 ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/transmit_file_buffers_2.htm
94 struct TRANSMIT_FILE_BUFFERS { 90 struct TRANSMIT_FILE_BUFFERS {
95 PVOID Head; 91 PVOID Head;
96 DWORD HeadLength; 92 DWORD HeadLength;
................................................................................................................................................................................
104 ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/wsarecvex_2.htm */ 100 ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/wsarecvex_2.htm */
105 int WSARecvEx(SOCKET, char*, int, int*); 101 int WSARecvEx(SOCKET, char*, int, int*);
106 102
107 /* Win95+, WinNT3.51+ 103 /* Win95+, WinNT3.51+
108 ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/getacceptexSOCKADDR 104 ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/getacceptexSOCKADDR
109 VOID GetAcceptExSockaddrs(PVOID, DWORD, DWORD, DWORD, SOCKADDR**, LPINT, 105 VOID GetAcceptExSockaddrs(PVOID, DWORD, DWORD, DWORD, SOCKADDR**, LPINT,
110 106
111 static if (_WIN32_WINNT_ONLY) { <
112 /* WinNT3.51+ | 107 /* WinNT3.51+
113 ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/transmitfil | 108 ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/transmitfile_2.htm
114 BOOL TransmitFile(SOCKET, HANDLE, DWORD, DWORD, LPOVERLAPPED, LP | 109 BOOL TransmitFile(SOCKET, HANDLE, DWORD, DWORD, LPOVERLAPPED, LPTRANSMIT
115 110
116 /* WinNT3.51+ | 111 /* WinNT3.51+
117 ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/acceptex_2. | 112 ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/acceptex_2.htm */
118 alias BOOL function(SOCKET, SOCKET, PVOID, DWORD, DWORD, DWORD, | 113 alias BOOL function(SOCKET, SOCKET, PVOID, DWORD, DWORD, DWORD, LPDWORD,
119 const GUID WSAID_ACCEPTEX = {0xb5367df1,0xcbac,0x11cf,[0x95,0xca,0x00,0x | 114 const GUID WSAID_ACCEPTEX = {0xb5367df1,0xcbac,0x11cf,[0x95,0xca,0x00,0x
120 115
121 alias BOOL function(SOCKET, SOCKADDR*, int, PVOID, DWORD, LPDWORD, LPOVE | 116 alias BOOL function(SOCKET, SOCKADDR*, int, PVOID, DWORD, LPDWORD, LPOVE
122 const GUID WSAID_CONNECTEX = {0x25a207b9,0xddf3,0x4660,[0x8e,0xe9,0x76,0 | 117 const GUID WSAID_CONNECTEX = {0x25a207b9,0xddf3,0x4660,[0x8e,0xe9,0x76,0
123 } <
124 } 118 }
125 119
126 version(Win32_Winsock1) { 120 version(Win32_Winsock1) {
127 } else { 121 } else {
128 static if (WINVER > 0x501) { | 122 static if (_WIN32_WINNT > 0x501) {
129 /* These appear to be constants for the TRANSMIT_PACKETS_EL 123 /* These appear to be constants for the TRANSMIT_PACKETS_EL
130 * structure below, so I've given them the same minimum ver 124 * structure below, so I've given them the same minimum ver
131 */ 125 */
132 enum { 126 enum {
133 TP_ELEMENT_FILE = 1, 127 TP_ELEMENT_FILE = 1,
134 TP_ELEMENT_MEMORY = 2, 128 TP_ELEMENT_MEMORY = 2,
135 TP_ELEMENT_EOP = 4 129 TP_ELEMENT_EOP = 4