diff options
author | Anders Svensson <[email protected]> | 2013-03-22 18:42:32 +0100 |
---|---|---|
committer | Anders Svensson <[email protected]> | 2013-03-26 17:13:29 +0100 |
commit | b6a38ba05bdd437adcb7e192c6ab0c2ca0718f76 (patch) | |
tree | 1bd47885515842eb468216066b7caaae26ee6ea7 /lib/diameter/src/base/diameter_peer_fsm.erl | |
parent | bcbaf5e1bcc47cb31782a6b36bc8a538b209ebc1 (diff) | |
download | otp-b6a38ba05bdd437adcb7e192c6ab0c2ca0718f76.tar.gz otp-b6a38ba05bdd437adcb7e192c6ab0c2ca0718f76.tar.bz2 otp-b6a38ba05bdd437adcb7e192c6ab0c2ca0718f76.zip |
Move most transport_opt() validation into diameter_config
Faulty configuration was previously passed directly on to watchdog and
peer_fsm processes, diameter:add_transport/2 happily returning ok and
the error resulting on failure of watchdog and/or peer_fsm processes.
Now check for errors before getting this far, returning {error, Reason}
from diameter:add_transport/2 when one is detected. There are still
some errors that can only be detected after transport start (eg. a
misbehaving callback) but most will be caught early.
Diffstat (limited to 'lib/diameter/src/base/diameter_peer_fsm.erl')
-rw-r--r-- | lib/diameter/src/base/diameter_peer_fsm.erl | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/lib/diameter/src/base/diameter_peer_fsm.erl b/lib/diameter/src/base/diameter_peer_fsm.erl index 66342f7b62..3b8c49b7e8 100644 --- a/lib/diameter/src/base/diameter_peer_fsm.erl +++ b/lib/diameter/src/base/diameter_peer_fsm.erl @@ -198,6 +198,7 @@ i({Ack, WPid, {M, Ref} = T, Opts, {Mask, OnLengthErr = proplists:get_value(length_errors, Opts, exit), lists:member(OnLengthErr, [exit, handle, discard]) orelse ?ERROR({invalid, {length_errors, OnLengthErr}}), + %% Error checking is for configuration added in old code. {TPid, Addrs} = start_transport(T, Rest, Svc), @@ -212,9 +213,6 @@ i({Ack, WPid, {M, Ref} = T, Opts, {Mask, %% transports on the same service can use different local addresses. %% The local addresses are put into Host-IP-Address avps here when %% sending capabilities exchange messages. -%% -%% Invalid transport config may cause us to crash but note that the -%% watchdog start (start/2) succeeds regardless. %% Wait for the caller to have a monitor to avoid a race with our %% death. (Since the exit reason is used in diameter_service.) |