diff options
| author | bors <bors@rust-lang.org> | 2019-12-06 04:30:51 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2019-12-06 04:30:51 +0000 |
| commit | 7b482cdf7ce55e05ee8392e1ade70966e3189cfd (patch) | |
| tree | 66805c0df7473a40d093342cde3b12a5bcc9b097 /src/libstd | |
| parent | 234c9f21d9930e4ae804d00b191d0780959cfcbe (diff) | |
| parent | fa8b54901f1236cbcd48205856e8766496664105 (diff) | |
| download | rust-7b482cdf7ce55e05ee8392e1ade70966e3189cfd.tar.gz rust-7b482cdf7ce55e05ee8392e1ade70966e3189cfd.zip | |
Auto merge of #66835 - AviKozokin:master, r=alexcrichton
std:win: avoid WSA_FLAG_NO_INHERIT flag and don't use SetHandleInformation on UWP This flag is not supported on Windows 7 before SP1, and on windows server 2008 SP2. This breaks Socket creation & duplication. This was fixed in a previous PR. cc #26658 This PR: cc #60260 reuses this flag to support UWP, and makes an attempt to handle the potential error. This version still fails to create a socket, as the error returned by WSA on this case is WSAEINVAL (invalid argument). and not WSAEPROTOTYPE. MSDN page for WSASocketW (that states the platform support for WSA_FLAG_NO_HANDLE_INHERIT): https://docs.microsoft.com/en-us/windows/win32/api/winsock2/nf-winsock2-wsasocketw CC #26543 CC #26518
Diffstat (limited to 'src/libstd')
| -rw-r--r-- | src/libstd/sys/windows/net.rs | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/libstd/sys/windows/net.rs b/src/libstd/sys/windows/net.rs index 32f4011fb32..2f2f285edc1 100644 --- a/src/libstd/sys/windows/net.rs +++ b/src/libstd/sys/windows/net.rs @@ -100,7 +100,7 @@ impl Socket { c::WSA_FLAG_OVERLAPPED | c::WSA_FLAG_NO_HANDLE_INHERIT) { c::INVALID_SOCKET => { match c::WSAGetLastError() { - c::WSAEPROTOTYPE => { + c::WSAEPROTOTYPE | c::WSAEINVAL => { match c::WSASocketW(fam, ty, 0, ptr::null_mut(), 0, c::WSA_FLAG_OVERLAPPED) { c::INVALID_SOCKET => Err(last_error()), @@ -199,7 +199,7 @@ impl Socket { c::WSA_FLAG_OVERLAPPED | c::WSA_FLAG_NO_HANDLE_INHERIT) { c::INVALID_SOCKET => { match c::WSAGetLastError() { - c::WSAEPROTOTYPE => { + c::WSAEPROTOTYPE | c::WSAEINVAL => { match c::WSASocketW(info.iAddressFamily, info.iSocketType, info.iProtocol, |
