未验证 提交 c092a761 编写于 作者: A Ahmet Ibrahim AKSOY 提交者: GitHub

SmtpClientTest Assertion Fail Fix (#76361)

* Eliminate temporary -1 on Socket.Unix.cs
上级 bbcff6bc
......@@ -8,6 +8,7 @@
using Microsoft.Win32.SafeHandles;
using System.Reflection;
using System.Collections;
using System.Threading;
namespace System.Net.Sockets
{
......@@ -108,7 +109,7 @@ internal void ReplaceHandleIfNecessaryAfterFailedConnect()
SocketError errorCode = ReplaceHandle();
if (errorCode != SocketError.Success)
{
throw new SocketException((int) errorCode);
throw new SocketException((int)errorCode);
}
_handle.LastConnectFailed = false;
......@@ -137,14 +138,22 @@ internal SocketError ReplaceHandle()
// Then replace the handle with a new one
SafeSocketHandle oldHandle = _handle;
SocketError errorCode = SocketPal.CreateSocket(_addressFamily, _socketType, _protocolType, out _handle);
SocketError errorCode = SocketPal.CreateSocket(_addressFamily, _socketType, _protocolType, out SafeSocketHandle newHandle);
Volatile.Write(ref _handle, newHandle);
oldHandle.TransferTrackedState(_handle);
oldHandle.Dispose();
if (errorCode != SocketError.Success)
{
return errorCode;
}
if (Volatile.Read(ref _disposed) != 0)
{
_handle.Dispose();
throw new ObjectDisposedException(GetType().FullName);
}
// And put back the copied settings. For DualMode, we use the value stored in the _handle
// rather than querying the socket itself, as on Unix stacks binding a dual-mode socket to
// an IPv6 address may cause the IPv6Only setting to revert to true.
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册