Skip to content

Commit 7b482cd

Browse files
committed
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
2 parents 234c9f2 + fa8b549 commit 7b482cd

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

src/libstd/sys/windows/net.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ impl Socket {
100100
c::WSA_FLAG_OVERLAPPED | c::WSA_FLAG_NO_HANDLE_INHERIT) {
101101
c::INVALID_SOCKET => {
102102
match c::WSAGetLastError() {
103-
c::WSAEPROTOTYPE => {
103+
c::WSAEPROTOTYPE | c::WSAEINVAL => {
104104
match c::WSASocketW(fam, ty, 0, ptr::null_mut(), 0,
105105
c::WSA_FLAG_OVERLAPPED) {
106106
c::INVALID_SOCKET => Err(last_error()),
@@ -199,7 +199,7 @@ impl Socket {
199199
c::WSA_FLAG_OVERLAPPED | c::WSA_FLAG_NO_HANDLE_INHERIT) {
200200
c::INVALID_SOCKET => {
201201
match c::WSAGetLastError() {
202-
c::WSAEPROTOTYPE => {
202+
c::WSAEPROTOTYPE | c::WSAEINVAL => {
203203
match c::WSASocketW(info.iAddressFamily,
204204
info.iSocketType,
205205
info.iProtocol,

0 commit comments

Comments
 (0)