From c322099e7e7efeb01577e4c8efd52579beb90949 Mon Sep 17 00:00:00 2001 From: Anders Svensson Date: Sun, 13 Mar 2016 07:26:30 +0100 Subject: Acknowledge answers to notification pids when throttling By sending {diameter, {answer, pid()}} when an incoming answer is sent to the specified pid, instead of a discard message as previously. The latter now literally means that the message has been discarded. --- lib/diameter/src/base/diameter_traffic.erl | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) (limited to 'lib/diameter') diff --git a/lib/diameter/src/base/diameter_traffic.erl b/lib/diameter/src/base/diameter_traffic.erl index fba4d3736b..724fa855d8 100644 --- a/lib/diameter/src/base/diameter_traffic.erl +++ b/lib/diameter/src/base/diameter_traffic.erl @@ -233,12 +233,7 @@ pending(TPids) -> %% becoming a bottleneck. receive_message(TPid, {Pkt, NPid}, Dict0, RecvData) -> - NPid ! {diameter, case incoming(TPid, Pkt, Dict0, RecvData) of - Pid when is_pid(Pid) -> - {request, Pid}; - _ -> - discard - end}; + NPid ! {diameter, incoming(TPid, Pkt, Dict0, RecvData)}; receive_message(TPid, Pkt, Dict0, RecvData) -> incoming(TPid, Pkt, Dict0, RecvData). @@ -260,16 +255,17 @@ incoming(TPid, Pkt, Dict0, RecvData) %% Incoming request ... recv(true, false, TPid, Pkt, Dict0, T) -> try - spawn_request(TPid, Pkt, Dict0, T) + {request, spawn_request(TPid, Pkt, Dict0, T)} catch error: system_limit = E -> %% discard ?LOG(error, E), - {error, E} + discard end; %% ... answer to known request ... recv(false, #request{ref = Ref, handler = Pid} = Req, _, Pkt, Dict0, _) -> - Pid ! {answer, Ref, Req, Dict0, Pkt}; + Pid ! {answer, Ref, Req, Dict0, Pkt}, + {answer, Pid}; %% Note that failover could have happened prior to this message being %% received and triggering failback. That is, both a failover message @@ -284,7 +280,7 @@ recv(false, #request{ref = Ref, handler = Pid} = Req, _, Pkt, Dict0, _) -> recv(false, false, TPid, Pkt, _, _) -> ?LOG(discarded, Pkt#diameter_packet.header), incr(TPid, {{unknown, 0}, recv, discarded}), - ok. + discard. %% spawn_request/4 -- cgit v1.2.3