aboutsummaryrefslogtreecommitdiffstats
path: root/lib/diameter/src/base
diff options
context:
space:
mode:
authorAnders Svensson <[email protected]>2013-06-02 14:59:19 +0200
committerAnders Svensson <[email protected]>2013-06-02 14:59:19 +0200
commite87ef4db28bdb32299682a05314996e34cb5fe25 (patch)
tree1a3a84125eea412e3aea256e410007a7ec01f201 /lib/diameter/src/base
parentaae68673a30f9c7e0fffb424edd6abab6a70c1b9 (diff)
parentf3e38ea0653614bcfd3a03846d4cea3df5da3cdf (diff)
downloadotp-e87ef4db28bdb32299682a05314996e34cb5fe25.tar.gz
otp-e87ef4db28bdb32299682a05314996e34cb5fe25.tar.bz2
otp-e87ef4db28bdb32299682a05314996e34cb5fe25.zip
Merge branch 'anders/diameter/host_ip_address/OTP-11045' into maint
* anders/diameter/host_ip_address/OTP-11045: Respect Host-IP-Address configuration
Diffstat (limited to 'lib/diameter/src/base')
-rw-r--r--lib/diameter/src/base/diameter_peer_fsm.erl23
1 files changed, 12 insertions, 11 deletions
diff --git a/lib/diameter/src/base/diameter_peer_fsm.erl b/lib/diameter/src/base/diameter_peer_fsm.erl
index d9db630ec0..65645e4dff 100644
--- a/lib/diameter/src/base/diameter_peer_fsm.erl
+++ b/lib/diameter/src/base/diameter_peer_fsm.erl
@@ -233,20 +233,21 @@ start_transport(Addrs0, T) ->
{TPid, Addrs, Tmo, Data} ->
erlang:monitor(process, TPid),
q_next(TPid, Addrs0, Tmo, Data),
- {TPid, addrs(Addrs, Addrs0)};
+ {TPid, Addrs};
No ->
exit({shutdown, No})
end.
-addrs([], Addrs0) ->
- Addrs0;
-addrs(Addrs, _) ->
- Addrs.
-
-svc(Svc, []) ->
- Svc;
-svc(Svc, Addrs) ->
- readdr(Svc, Addrs).
+svc(#diameter_service{capabilities = LCaps0} = Svc, Addrs) ->
+ #diameter_caps{host_ip_address = Addrs0}
+ = LCaps0,
+ case Addrs0 of
+ [] ->
+ LCaps = LCaps0#diameter_caps{host_ip_address = Addrs},
+ Svc#diameter_service{capabilities = LCaps};
+ [_|_] ->
+ Svc
+ end.
readdr(#diameter_service{capabilities = LCaps0} = Svc, Addrs) ->
LCaps = LCaps0#diameter_caps{host_ip_address = Addrs},
@@ -360,7 +361,7 @@ transition({diameter, {TPid, connected, Remote, LAddrs}},
service = Svc}
= S) ->
transition({diameter, {TPid, connected, Remote}},
- S#state{service = readdr(Svc, LAddrs)});
+ S#state{service = svc(Svc, LAddrs)});
%% Connection from peer.
transition({diameter, {TPid, connected}},