diff options
author | Anders Svensson <[email protected]> | 2014-11-03 01:47:27 +0100 |
---|---|---|
committer | Anders Svensson <[email protected]> | 2014-11-03 12:16:58 +0100 |
commit | 2b89e8bd5a8258c4259ed53cc0331d4fbe1f1aa3 (patch) | |
tree | c17368cb0781900faacf426765d938f0f4ae495b | |
parent | 66d67762be1cf0a3b9ac068d597c6d8bdaf2e3d7 (diff) | |
download | otp-2b89e8bd5a8258c4259ed53cc0331d4fbe1f1aa3.tar.gz otp-2b89e8bd5a8258c4259ed53cc0331d4fbe1f1aa3.tar.bz2 otp-2b89e8bd5a8258c4259ed53cc0331d4fbe1f1aa3.zip |
Tweak reason in closed event
From {error, Reason} to {no_connection, Reason} when a connection can't
be established. The exit reason of a diameter_peer_fsm process is turned
into a message from the corresponding diameter_watchdog process to the
relevant diameter_service process, the latter sending a 'closed' event
including the reason to any subscribers. Reason = [] when none of the
configured transport modules succeeds in establishing a connection,
which admittedly isn't terribly descriptive. (The lists is of error
reasons from transport start functions, which is empty as long as
transport processes start successfully.)
Note that this form of the closed event is undocumented, aside from the
documentation saying that one should expect undocumented events. The
explicitly documented forms are currently specific to CER/CEA failures.
-rw-r--r-- | lib/diameter/src/base/diameter_peer_fsm.erl | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/lib/diameter/src/base/diameter_peer_fsm.erl b/lib/diameter/src/base/diameter_peer_fsm.erl index 86fc43cdc5..ee6e7dd89e 100644 --- a/lib/diameter/src/base/diameter_peer_fsm.erl +++ b/lib/diameter/src/base/diameter_peer_fsm.erl @@ -225,8 +225,8 @@ start_transport(Addrs0, T) -> erlang:monitor(process, TPid), q_next(TPid, Addrs0, Tmo, Data), {TPid, Addrs}; - No -> - exit({shutdown, No}) + {error, No} -> + exit({shutdown, {no_connection, No}}) end. svc(#diameter_service{capabilities = LCaps0} = Svc, Addrs) -> @@ -368,11 +368,8 @@ transition({diameter, {TPid, connected}}, %% message. This may be followed by an incoming message which arrived %% before the transport was killed and this can't be distinguished %% from one from the transport that's been started to replace it. -transition({diameter, {_, connected}}, _) -> - {stop, connection_timeout}; -transition({diameter, {_, connected, _}}, _) -> - {stop, connection_timeout}; -transition({diameter, {_, connected, _, _}}, _) -> +transition({diameter, T}, _) + when tuple_size(T) < 5, connected == element(2,T) -> {stop, connection_timeout}; %% Connection has timed out: start an alternate. |