File 2863-Relay-remote-answers-more-efficiently.patch of Package erlang
From bbebbfb326f83ef93e286ed5ee822bb84a0a55d6 Mon Sep 17 00:00:00 2001
From: Anders Svensson <anders@erlang.org>
Date: Sun, 9 Feb 2020 11:43:52 +0100
Subject: [PATCH 3/7] Relay remote answers more efficiently
In code at least: every branch of the receive bangs to the same pid, so
do it once.
---
lib/diameter/src/base/diameter_traffic.erl | 12 ++++++------
1 file 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.
--
2.16.4