internal override object PostCompletion(int numBytes)
{
SocketError errorCode = (SocketError)base.ErrorCode;
Socket asyncObject = (Socket)base.AsyncObject;
if (errorCode == SocketError.Success)
{
try
{
errorCode = UnsafeNclNativeMethods.OSSOCK.setsockopt(asyncObject.SafeHandle, SocketOptionLevel.Socket, SocketOptionName.UpdateConnectContext, (byte[])null, 0);
if (errorCode == SocketError.SocketError)
{
errorCode = (SocketError)Marshal.GetLastWin32Error();
}
}
catch (ObjectDisposedException)
{
errorCode = SocketError.OperationAborted;
}
base.ErrorCode = (int)errorCode;
}
if (errorCode == SocketError.Success)
{
asyncObject.SetToConnected();
return(asyncObject);
}
return(null);
}