summaryrefslogtreecommitdiff
path: root/lib/diameter
diff options
context:
space:
mode:
authorAnders Svensson <anders@erlang.org>2020-02-09 11:43:52 +0100
committerAnders Svensson <anders@erlang.org>2020-02-11 11:04:14 +0100
commitbbebbfb326f83ef93e286ed5ee822bb84a0a55d6 (patch)
treedb9ce104fe88d9fad6f486e2eff302cea1bd0995 /lib/diameter
parent267226ea18bff847232dbbb1029a1df53c32ac76 (diff)
downloaderlang-bbebbfb326f83ef93e286ed5ee822bb84a0a55d6.tar.gz
Relay remote answers more efficiently
In code at least: every branch of the receive bangs to the same pid, so do it once.
Diffstat (limited to 'lib/diameter')
-rw-r--r--lib/diameter/src/base/diameter_traffic.erl12
1 files changed, 6 insertions, 6 deletions
diff --git a/lib/diameter/src/base/diameter_traffic.erl b/lib/diameter/src/base/diameter_traffic.erl
index 2b7b152911..cdcb113170 100644
--- a/lib/diameter/src/base/diameter_traffic.erl
+++ b/lib/diameter/src/base/diameter_traffic.erl
@@ -1876,20 +1876,20 @@ z(#diameter_packet{header = H, bin = Bin, transport_data = T}) ->
send({TPid, Pkt, #request{handler = Pid} = Req0, SvcName, Timeout, TRef}) ->
Req = Req0#request{handler = self()},
- recv(TPid, Pid, TRef, send_request(TPid, Pkt, Req, SvcName, Timeout)).
+ Pid ! recv(TPid, TRef, send_request(TPid, Pkt, Req, SvcName, Timeout)).
-%% recv/4
+%% recv/3
%%
%% Relay an answer from a remote node.
-recv(TPid, Pid, TRef, {LocalTRef, MRef}) ->
+recv(TPid, TRef, {LocalTRef, MRef}) ->
receive
{answer, _, _, _, _} = A ->
- Pid ! A;
+ A;
{'DOWN', MRef, process, _, _} ->
- Pid ! {failover, TRef};
+ {failover, TRef};
{failover = T, LocalTRef} ->
- Pid ! {T, TRef};
+ {T, TRef};
T ->
exit({timeout, LocalTRef, TPid} = T)
end.