206 {
207 SocketError socketError;
208 if (!abortive)
209 {
211 {
213 }
214 socketError = global::Interop.Winsock.closesocket(
handle);
215 if (socketError == SocketError.SocketError)
216 {
218 }
220 {
222 }
223 if (socketError != SocketError.WouldBlock)
224 {
225 return socketError;
226 }
227 int argp = 0;
228 socketError = global::Interop.Winsock.ioctlsocket(
handle, -2147195266, ref argp);
229 if (socketError == SocketError.SocketError)
230 {
232 }
234 {
236 }
237 if (socketError == SocketError.Success)
238 {
239 socketError = global::Interop.Winsock.closesocket(
handle);
240 if (socketError == SocketError.SocketError)
241 {
243 }
245 {
247 }
248 if (socketError != SocketError.WouldBlock)
249 {
250 return socketError;
251 }
252 }
253 }
254 Unsafe.SkipInit(out global::Interop.Winsock.Linger linger);
255 linger.OnOff = 1;
256 linger.Time = 0;
258 if (socketError == SocketError.SocketError)
259 {
261 }
263 {
265 }
266 if (socketError != 0 && socketError != SocketError.InvalidArgument && socketError != SocketError.ProtocolOption)
267 {
268 return socketError;
269 }
270 socketError = global::Interop.Winsock.closesocket(
handle);
272 {
273 System.
Net.
NetEventSource.
Info(
this, $
"handle:{handle}, closesocket#3():{((socketError == SocketError.SocketError) ? ((SocketError)Marshal.GetLastWin32Error()) : socketError)}",
"DoCloseHandle");
274 }
275 return socketError;
276 }
static readonly System.Net.NetEventSource Log
static void Info(object thisOrContextObject, FormattableString formattableString=null, [CallerMemberName] string memberName=null)
static int GetLastWin32Error()