@@ -475,9 +475,12 @@ protected override bool DoTryComplete(SocketAsyncContext context)
475475 }
476476 else
477477 {
478- bool result = SocketPal . TryCompleteReceiveFrom ( context . _socket , Buffer . Span , null , Flags , SocketAddress . Span , out int socketAddressLen , out BytesTransferred , out ReceivedFlags , out ErrorCode ) ;
479- SocketAddress = SocketAddress . Slice ( 0 , socketAddressLen ) ;
480- return result ;
478+ bool completed = SocketPal . TryCompleteReceiveFrom ( context . _socket , Buffer . Span , null , Flags , SocketAddress . Span , out int socketAddressLen , out BytesTransferred , out ReceivedFlags , out ErrorCode ) ;
479+ if ( completed && ErrorCode == SocketError . Success )
480+ {
481+ SocketAddress = SocketAddress . Slice ( 0 , socketAddressLen ) ;
482+ }
483+ return completed ;
481484 }
482485 }
483486 }
@@ -508,7 +511,7 @@ public BufferListReceiveOperation(SocketAsyncContext context) : base(context) {
508511 protected override bool DoTryComplete ( SocketAsyncContext context )
509512 {
510513 bool completed = SocketPal . TryCompleteReceiveFrom ( context . _socket , default ( Span < byte > ) , Buffers , Flags , SocketAddress . Span , out int socketAddressLen , out BytesTransferred , out ReceivedFlags , out ErrorCode ) ;
511- if ( ErrorCode == SocketError . Success )
514+ if ( completed && ErrorCode == SocketError . Success )
512515 {
513516 SocketAddress = SocketAddress . Slice ( 0 , socketAddressLen ) ;
514517 }
@@ -542,7 +545,7 @@ public BufferPtrReceiveOperation(SocketAsyncContext context) : base(context) { }
542545 protected override bool DoTryComplete ( SocketAsyncContext context )
543546 {
544547 bool completed = SocketPal . TryCompleteReceiveFrom ( context . _socket , new Span < byte > ( BufferPtr , Length ) , null , Flags , SocketAddress . Span , out int socketAddressLen , out BytesTransferred , out ReceivedFlags , out ErrorCode ) ;
545- if ( ErrorCode == SocketError . Success )
548+ if ( completed && ErrorCode == SocketError . Success )
546549 {
547550 SocketAddress = SocketAddress . Slice ( 0 , socketAddressLen ) ;
548551 }
@@ -569,7 +572,7 @@ public ReceiveMessageFromOperation(SocketAsyncContext context) : base(context) {
569572 protected override bool DoTryComplete ( SocketAsyncContext context )
570573 {
571574 bool completed = SocketPal . TryCompleteReceiveMessageFrom ( context . _socket , Buffer . Span , Buffers , Flags , SocketAddress , out int socketAddressLen , IsIPv4 , IsIPv6 , out BytesTransferred , out ReceivedFlags , out IPPacketInformation , out ErrorCode ) ;
572- if ( ErrorCode == SocketError . Success )
575+ if ( completed && ErrorCode == SocketError . Success )
573576 {
574577 SocketAddress = SocketAddress . Slice ( 0 , socketAddressLen ) ;
575578 }
@@ -599,7 +602,7 @@ public BufferPtrReceiveMessageFromOperation(SocketAsyncContext context) : base(c
599602 protected override bool DoTryComplete ( SocketAsyncContext context )
600603 {
601604 bool completed = SocketPal . TryCompleteReceiveMessageFrom ( context . _socket , new Span < byte > ( BufferPtr , Length ) , null , Flags , SocketAddress ! , out int socketAddressLen , IsIPv4 , IsIPv6 , out BytesTransferred , out ReceivedFlags , out IPPacketInformation , out ErrorCode ) ;
602- if ( ErrorCode == SocketError . Success )
605+ if ( completed && ErrorCode == SocketError . Success )
603606 {
604607 SocketAddress = SocketAddress . Slice ( 0 , socketAddressLen ) ;
605608 }
0 commit comments