@@ -459,7 +459,7 @@ public void OnSessionShutdown(object sender, ShutdownEventArgs reason)
459
459
SetCloseReason ( reason ) ;
460
460
OnModelShutdown ( reason ) ;
461
461
BroadcastShutdownToConsumers ( _consumers , reason ) ;
462
- ConsumerDispatcher . Shutdown ( this ) . GetAwaiter ( ) . GetResult ( ) ; ;
462
+ ConsumerDispatcher . Shutdown ( this ) . GetAwaiter ( ) . GetResult ( ) ; ;
463
463
}
464
464
465
465
protected void BroadcastShutdownToConsumers ( Dictionary < string , IBasicConsumer > cs , ShutdownEventArgs reason )
@@ -625,8 +625,10 @@ public void HandleBasicCancel(string consumerTag, bool nowait)
625
625
IBasicConsumer consumer ;
626
626
lock ( _consumers )
627
627
{
628
- consumer = _consumers [ consumerTag ] ;
629
- _consumers . Remove ( consumerTag ) ;
628
+ if ( _consumers . TryGetValue ( consumerTag , out consumer ) )
629
+ {
630
+ _consumers . Remove ( consumerTag ) ;
631
+ }
630
632
}
631
633
if ( consumer == null )
632
634
{
@@ -646,12 +648,24 @@ public void HandleBasicCancelOk(string consumerTag)
646
648
consumerTag
647
649
));
648
650
*/
651
+ IBasicConsumer consumer ;
652
+
649
653
lock ( _consumers )
650
654
{
651
- k . m_consumer = _consumers [ consumerTag ] ;
652
- _consumers . Remove ( consumerTag ) ;
655
+ if ( _consumers . TryGetValue ( consumerTag , out consumer ) )
656
+ {
657
+ k . m_consumer = consumer ;
658
+ _consumers . Remove ( consumerTag ) ;
659
+ }
653
660
}
661
+
662
+ if ( consumer == null )
663
+ {
664
+ k . m_consumer = DefaultConsumer ;
665
+ }
666
+
654
667
ConsumerDispatcher . HandleBasicCancelOk ( k . m_consumer , consumerTag ) ;
668
+
655
669
k . HandleCommand ( IncomingCommand . Empty ) ; // release the continuation.
656
670
}
657
671
@@ -679,7 +693,7 @@ public virtual void HandleBasicDeliver(string consumerTag,
679
693
IBasicConsumer consumer ;
680
694
lock ( _consumers )
681
695
{
682
- consumer = _consumers [ consumerTag ] ;
696
+ _consumers . TryGetValue ( consumerTag , out consumer ) ;
683
697
}
684
698
if ( consumer == null )
685
699
{
0 commit comments