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 22 // line; otherwise, default to Winsock2.
23 23 version (Win32_Winsock1) {
24 24 import win32.winsock;
25 25 } else {
26 26 import win32.winsock2;
27 27 }
28 28
29 -static if (_WIN32_WINNT_ONLY) {
30 - static if (_WIN32_WINNT >= 0x500) {
31 - enum {
32 - /* WinNT5+:
33 - ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/socket_options.htm */
34 - SO_MAXDG = 0x7009,
35 - SO_MAXPATHDG = 0x700A,
36 - }
29 +static if (_WIN32_WINNT >= 0x500) {
30 + enum {
31 + /* WinNT5+:
32 + ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/socket_options.htm */
33 + SO_MAXDG = 0x7009,
34 + SO_MAXPATHDG = 0x700A,
37 35 }
36 +}
38 37
39 - enum {
40 - /* WinNT4+:
41 - ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/socket_options_for_windows_nt_4_0_2.htm */
42 - SO_CONNDATA = 0x7000,
43 - SO_CONNOPT = 0x7001,
44 - SO_DISCDATA = 0x7002,
45 - SO_DISCOPT = 0x7003,
46 - SO_CONNDATALEN = 0x7004,
47 - SO_CONNOPTLEN = 0x7005,
48 - SO_DISCDATALEN = 0x7006,
49 - SO_DISCOPTLEN = 0x7007,
38 +enum {
39 + /* WinNT4+:
40 + ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/socket_options_for_windows_nt_4_0_2.htm */
41 + SO_CONNDATA = 0x7000,
42 + SO_CONNOPT = 0x7001,
43 + SO_DISCDATA = 0x7002,
44 + SO_DISCOPT = 0x7003,
45 + SO_CONNDATALEN = 0x7004,
46 + SO_CONNOPTLEN = 0x7005,
47 + SO_DISCDATALEN = 0x7006,
48 + SO_DISCOPTLEN = 0x7007,
50 49
51 - /* WinNT4:
52 - ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/socket_options.htm */
53 - SO_UPDATE_ACCEPT_CONTENT = 0x700B,
54 - }
50 + /* WinNT4:
51 + ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/socket_options.htm */
52 + SO_UPDATE_ACCEPT_CONTENT = 0x700B,
55 53 }
56 54
57 55 enum {
58 56 /* Win95+, WinNT4+ but apparently shouldn't used: mark as deprecated?
59 57 ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/socket_options.htm */
60 58 SO_OPENTYPE = 0x7008,
61 59
................................................................................
67 65
68 66 /* Win95:
69 67 ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/socket_options.htm */
70 68 SO_CONNECT_TIME = 0x700C,
71 69 }
72 70
73 71
74 -static if (_WIN32_WINNT_ONLY) {
75 - enum {
76 - TCP_BSDURGENT = 0x7000,
77 - }
72 +enum {
73 + TCP_BSDURGENT = 0x7000,
74 +}
78 75
79 - /* These *appear* to be constants for passing to the TransmitFile /
80 - TransmitPackets functions, which are available in WinNT3.51+
81 - ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/transmitfile_2.htm */
82 - enum {
83 - TF_DISCONNECT = 1,
84 - TF_REUSE_SOCKET = 2,
85 - TF_WRITE_BEHIND = 4,
86 - TF_USE_DEFAULT_WORKER = 0,
87 - TF_USE_SYSTEM_THREAD = 16,
88 - TF_USE_KERNEL_APC = 32
89 - }
76 +/* These *appear* to be constants for passing to the TransmitFile /
77 + TransmitPackets functions, which are available in WinNT3.51+
78 + ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/transmitfile_2.htm */
79 +enum {
80 + TF_DISCONNECT = 1,
81 + TF_REUSE_SOCKET = 2,
82 + TF_WRITE_BEHIND = 4,
83 + TF_USE_DEFAULT_WORKER = 0,
84 + TF_USE_SYSTEM_THREAD = 16,
85 + TF_USE_KERNEL_APC = 32
90 86 }
91 87
92 88 /* Win95+, WinNT3.51+
93 89 ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/transmit_file_buffers_2.htm */
94 90 struct TRANSMIT_FILE_BUFFERS {
95 91 PVOID Head;
96 92 DWORD HeadLength;
................................................................................
104 100 ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/wsarecvex_2.htm */
105 101 int WSARecvEx(SOCKET, char*, int, int*);
106 102
107 103 /* Win95+, WinNT3.51+
108 104 ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/getacceptexSOCKADDRs_2.htm */
109 105 VOID GetAcceptExSockaddrs(PVOID, DWORD, DWORD, DWORD, SOCKADDR**, LPINT, SOCKADDR**, LPINT);
110 106
111 - static if (_WIN32_WINNT_ONLY) {
112 - /* WinNT3.51+
113 - ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/transmitfile_2.htm */
114 - BOOL TransmitFile(SOCKET, HANDLE, DWORD, DWORD, LPOVERLAPPED, LPTRANSMIT_FILE_BUFFERS, DWORD);
107 + /* WinNT3.51+
108 + ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/transmitfile_2.htm */
109 + BOOL TransmitFile(SOCKET, HANDLE, DWORD, DWORD, LPOVERLAPPED, LPTRANSMIT_FILE_BUFFERS, DWORD);
115 110
116 - /* WinNT3.51+
117 - ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/acceptex_2.htm */
118 - alias BOOL function(SOCKET, SOCKET, PVOID, DWORD, DWORD, DWORD, LPDWORD, LPOVERLAPPED) LPFN_ACCEPTEX;
119 - const GUID WSAID_ACCEPTEX = {0xb5367df1,0xcbac,0x11cf,[0x95,0xca,0x00,0x80,0x5f,0x48,0xa1,0x92]};
111 + /* WinNT3.51+
112 + ms-help://MS.MSDNQTR.2003FEB.1033/winsock/winsock/acceptex_2.htm */
113 + alias BOOL function(SOCKET, SOCKET, PVOID, DWORD, DWORD, DWORD, LPDWORD, LPOVERLAPPED) LPFN_ACCEPTEX;
114 + const GUID WSAID_ACCEPTEX = {0xb5367df1,0xcbac,0x11cf,[0x95,0xca,0x00,0x80,0x5f,0x48,0xa1,0x92]};
120 115
121 - alias BOOL function(SOCKET, SOCKADDR*, int, PVOID, DWORD, LPDWORD, LPOVERLAPPED) LPFN_CONNECTEX;
122 - const GUID WSAID_CONNECTEX = {0x25a207b9,0xddf3,0x4660,[0x8e,0xe9,0x76,0xe5,0x8c,0x74,0x06,0x3e]};
123 - }
116 + alias BOOL function(SOCKET, SOCKADDR*, int, PVOID, DWORD, LPDWORD, LPOVERLAPPED) LPFN_CONNECTEX;
117 + const GUID WSAID_CONNECTEX = {0x25a207b9,0xddf3,0x4660,[0x8e,0xe9,0x76,0xe5,0x8c,0x74,0x06,0x3e]};
124 118 }
125 119
126 120 version(Win32_Winsock1) {
127 121 } else {
128 - static if (WINVER > 0x501) {
122 + static if (_WIN32_WINNT > 0x501) {
129 123 /* These appear to be constants for the TRANSMIT_PACKETS_ELEMENT
130 124 * structure below, so I've given them the same minimum version
131 125 */
132 126 enum {
133 127 TP_ELEMENT_FILE = 1,
134 128 TP_ELEMENT_MEMORY = 2,
135 129 TP_ELEMENT_EOP = 4