1
- use crate :: association:: {
2
- state:: { AckMode , AckState , AssociationState } ,
3
- stats:: AssociationStats ,
4
- } ;
5
1
use crate :: chunk:: {
6
2
chunk_abort:: ChunkAbort , chunk_cookie_ack:: ChunkCookieAck , chunk_cookie_echo:: ChunkCookieEcho ,
7
3
chunk_error:: ChunkError , chunk_forward_tsn:: ChunkForwardTsn ,
@@ -27,7 +23,14 @@ use crate::param::{
27
23
use crate :: queue:: { payload_queue:: PayloadQueue , pending_queue:: PendingQueue } ;
28
24
use crate :: shared:: { AssociationEventInner , AssociationId , EndpointEvent , EndpointEventInner } ;
29
25
use crate :: util:: { sna16lt, sna32gt, sna32gte, sna32lt, sna32lte} ;
30
- use crate :: { AssociationEvent , Payload , Side , Transmit } ;
26
+ use crate :: {
27
+ association:: {
28
+ state:: { AckMode , AckState , AssociationState } ,
29
+ stats:: AssociationStats ,
30
+ } ,
31
+ chunk:: USER_INITIATED_ABORT ,
32
+ } ;
33
+ use crate :: { AssociationEvent , ErrorCauseCode , Payload , Side , Transmit } ;
31
34
use stream:: { ReliabilityType , Stream , StreamEvent , StreamId , StreamState } ;
32
35
use timer:: { RtoManager , Timer , TimerTable , ACK_INTERVAL } ;
33
36
@@ -829,6 +832,11 @@ impl Association {
829
832
} else if let Some ( c) = chunk_any. downcast_ref :: < ChunkAbort > ( ) {
830
833
let mut err_str = String :: new ( ) ;
831
834
for e in & c. error_causes {
835
+ if matches ! ( e. code, USER_INITIATED_ABORT ) {
836
+ debug ! ( "User initiated abort received" ) ;
837
+ let _ = self . close ( ) ;
838
+ return Ok ( ( ) ) ;
839
+ }
832
840
err_str += & format ! ( "({})" , e) ;
833
841
}
834
842
return Err ( Error :: ErrAbortChunk ( err_str) ) ;
0 commit comments