diff options
author | Anders Svensson <[email protected]> | 2013-05-31 16:58:27 +0200 |
---|---|---|
committer | Anders Svensson <[email protected]> | 2013-05-31 17:12:00 +0200 |
commit | 9007d1f873706cf7b33495abaae4c6ee21a77987 (patch) | |
tree | 7ecb8bae7b0211c4d1377deb2b3672af2acd92ae | |
parent | 22685099ace9802016bf6203c525702084717d72 (diff) | |
download | otp-9007d1f873706cf7b33495abaae4c6ee21a77987.tar.gz otp-9007d1f873706cf7b33495abaae4c6ee21a77987.tar.bz2 otp-9007d1f873706cf7b33495abaae4c6ee21a77987.zip |
Adapt CEA/DPA Failed-AVP to RFC 6733
By setting only one, not many. The handling for other messages (except
DWA, which is forgiving of errors) was dealt with in commit f7ec93e3.
-rw-r--r-- | lib/diameter/src/base/diameter_peer_fsm.erl | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/lib/diameter/src/base/diameter_peer_fsm.erl b/lib/diameter/src/base/diameter_peer_fsm.erl index 6be4259510..232249b0e9 100644 --- a/lib/diameter/src/base/diameter_peer_fsm.erl +++ b/lib/diameter/src/base/diameter_peer_fsm.erl @@ -708,7 +708,7 @@ build_answer('CER', rejected(Reason, {'CER', Reason, Caps, Pkt}, S) end; -%% The error checks below are similar to those in diameter_service for +%% The error checks below are similar to those in diameter_traffic for %% other messages. Should factor out the commonality. build_answer(Type, @@ -742,7 +742,14 @@ rejected(N, T, S) -> rejected({N, []}, T, S). answer(Type, RC, Es, S) -> - set(answer(Type, RC, S), failed_avp([A || {_,A} <- Es])). + set(answer(Type, RC, S), failed_avp(RC, Es)). + +failed_avp(RC, [{RC, Avp} | _]) -> + [{'Failed-AVP', [{'AVP', [Avp]}]}]; +failed_avp(RC, [_ | Es]) -> + failed_avp(RC, Es); +failed_avp(_, [] = No) -> + No. answer(Type, RC, S) -> answer_message(answer(Type, S), RC). @@ -762,13 +769,6 @@ is_origin({N, _}) -> orelse N == 'Origin-Realm' orelse N == 'Origin-State-Id'. -%% failed_avp/1 - -failed_avp([] = No) -> - No; -failed_avp(Avps) -> - [{'Failed-AVP', [[{'AVP', Avps}]]}]. - %% set/2 set(Ans, []) -> @@ -784,7 +784,7 @@ rc(#diameter_header{is_error = true}, _) -> 3008; %% DIAMETER_INVALID_HDR_BITS rc(_, [Bs|_]) - when is_bitstring(Bs) -> + when is_bitstring(Bs) -> %% from old code 3009; %% DIAMETER_INVALID_HDR_BITS rc(#diameter_header{version = ?DIAMETER_VERSION}, Es) -> |