From 83aebf8f7bb6d766f6b68accdc44acb9cea3d57e Mon Sep 17 00:00:00 2001 From: Dan Gohman Date: Wed, 12 Jan 2022 11:41:48 -0800 Subject: [PATCH] Use the correct `cvt` for converting socket errors on Windows. `WSADuplicateSocketW` returns 0 on success, which differs from handle-oriented functions which return 0 on error. Use `sys::net::cvt` to handle its return value, which handles the socket convention of returning 0 on success, rather than `sys::cvt`, which handles the handle-oriented convention of returning 0 on failure. --- library/std/src/os/windows/io/socket.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/library/std/src/os/windows/io/socket.rs b/library/std/src/os/windows/io/socket.rs index e0af4f1f6cb1..26b569bcdd36 100644 --- a/library/std/src/os/windows/io/socket.rs +++ b/library/std/src/os/windows/io/socket.rs @@ -8,6 +8,7 @@ use crate::io; use crate::marker::PhantomData; use crate::mem; use crate::mem::forget; +use crate::sys; use crate::sys::c; use crate::sys::cvt; @@ -80,7 +81,7 @@ impl OwnedSocket { let result = unsafe { c::WSADuplicateSocketW(self.as_raw_socket(), c::GetCurrentProcessId(), &mut info) }; - cvt(result)?; + sys::net::cvt(result)?; let socket = unsafe { c::WSASocketW( info.iAddressFamily,