Handle basic.credit_drained frame
This frame is very specific to what the AMQP 1.0 plugin requires to work and was emitted but not handled correctly. This implementation simply handles the frame and forwards it on to the consuming process. [#161256187]
This commit is contained in:
		
							parent
							
								
									7c5dadc93c
								
							
						
					
					
						commit
						0818e022d7
					
				| 
						 | 
				
			
			@ -796,6 +796,10 @@ handle_method_from_server1(#'basic.nack'{} = BasicNack, none,
 | 
			
		|||
    CH ! BasicNack,
 | 
			
		||||
    {noreply, update_confirm_set(BasicNack, State)};
 | 
			
		||||
 | 
			
		||||
handle_method_from_server1(#'basic.credit_drained'{} = CreditDrained, none,
 | 
			
		||||
                           #state{consumer = Consumer} = State) ->
 | 
			
		||||
    Consumer ! CreditDrained,
 | 
			
		||||
    {noreply, State};
 | 
			
		||||
handle_method_from_server1(Method, none, State) ->
 | 
			
		||||
    {noreply, rpc_bottom_half(Method, State)};
 | 
			
		||||
handle_method_from_server1(Method, Content, State) ->
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -185,7 +185,10 @@ handle_info({'DOWN', _MRef, process, Pid, _Info},
 | 
			
		|||
                _         -> {ok, State} %% unnamed consumer went down
 | 
			
		||||
                                         %% before receiving consume_ok
 | 
			
		||||
            end
 | 
			
		||||
    end.
 | 
			
		||||
    end;
 | 
			
		||||
handle_info(#'basic.credit_drained'{} = Method, State) ->
 | 
			
		||||
    deliver_to_consumer_or_die(Method, Method, State),
 | 
			
		||||
    {ok, State}.
 | 
			
		||||
 | 
			
		||||
%% @private
 | 
			
		||||
handle_call({register_default_consumer, Pid}, _From,
 | 
			
		||||
| 
						 | 
				
			
			@ -252,7 +255,8 @@ tag(#'basic.consume'{consumer_tag = Tag})         -> Tag;
 | 
			
		|||
tag(#'basic.consume_ok'{consumer_tag = Tag})      -> Tag;
 | 
			
		||||
tag(#'basic.cancel'{consumer_tag = Tag})          -> Tag;
 | 
			
		||||
tag(#'basic.cancel_ok'{consumer_tag = Tag})       -> Tag;
 | 
			
		||||
tag(#'basic.deliver'{consumer_tag = Tag})         -> Tag.
 | 
			
		||||
tag(#'basic.deliver'{consumer_tag = Tag})         -> Tag;
 | 
			
		||||
tag(#'basic.credit_drained'{consumer_tag = Tag})  -> Tag.
 | 
			
		||||
 | 
			
		||||
add_to_monitor_dict(Pid, Monitors) ->
 | 
			
		||||
    case maps:find(Pid, Monitors) of
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue