@@ -565,28 +565,25 @@ impl Channel {
565565 }
566566
567567 fn next_expected_close_ok_reply ( & self ) -> Option < Reply > {
568- self . frames
569- . next_expected_close_ok_reply ( self . id , Error :: InvalidChannelState ( ChannelState :: Closed , None ) )
568+ self . frames . next_expected_close_ok_reply (
569+ self . id ,
570+ Error :: InvalidChannelState ( ChannelState :: Closed , None ) ,
571+ )
570572 }
571573
572574 fn before_channel_close ( & self ) {
573575 self . set_closing ( None ) ;
574576 }
575577
576578 fn on_channel_close_ok_sent ( & self , error : Option < Error > ) {
577- match ( self . recovery_config . auto_recover_channels , error) {
578- ( true , Some ( error) ) if error. is_amqp_soft_error ( ) => {
579- self . status . set_reconnecting ( error)
580- }
581- ( _, error) => {
582- self . set_closed (
583- error
584- . clone ( )
585- . unwrap_or ( Error :: InvalidChannelState ( ChannelState :: Closing , None ) ) ,
586- ) ;
587- if let Some ( error) = error {
588- self . error_handler . on_error ( error) ;
589- }
579+ if !self . recovery_config . auto_recover_channels || !error. as_ref ( ) . map_or ( false , Error :: is_amqp_soft_error) {
580+ self . set_closed (
581+ error
582+ . clone ( )
583+ . unwrap_or ( Error :: InvalidChannelState ( ChannelState :: Closing , None ) ) ,
584+ ) ;
585+ if let Some ( error) = error {
586+ self . error_handler . on_error ( error) ;
590587 }
591588 }
592589 }
@@ -916,7 +913,12 @@ impl Channel {
916913 ) ;
917914 Error :: ProtocolError ( error)
918915 } ) ;
919- self . set_closing ( error. clone ( ) . ok ( ) ) ;
916+ match ( self . recovery_config . auto_recover_channels , error. clone ( ) . ok ( ) ) {
917+ ( true , Some ( error) ) if error. is_amqp_soft_error ( ) => {
918+ self . status . set_reconnecting ( error)
919+ }
920+ ( _, err) => self . set_closing ( err) ,
921+ }
920922 let error = error. map_err ( |error| info ! ( channel=%self . id, ?method, code_to_error=%error, "Channel closed with a non-error code" ) ) . ok ( ) ;
921923 let channel = self . clone ( ) ;
922924 self . internal_rpc . register_internal_future ( async move {
0 commit comments