diff options
author | Anders Svensson <[email protected]> | 2015-03-05 01:26:38 +0100 |
---|---|---|
committer | Anders Svensson <[email protected]> | 2015-03-05 01:26:38 +0100 |
commit | 81e0fab00242b6ed5936bd056ce05fa181482b4f (patch) | |
tree | 278aea6b5d37f77b6ca2363979c54b95616a2fb9 /lib/diameter/src | |
parent | 14ddc5594d74979a15a256a41fba5f1297aeaa1a (diff) | |
parent | 340e832013daabadd7b85fa6b3e08d34cf17a4a4 (diff) | |
download | otp-81e0fab00242b6ed5936bd056ce05fa181482b4f.tar.gz otp-81e0fab00242b6ed5936bd056ce05fa181482b4f.tar.bz2 otp-81e0fab00242b6ed5936bd056ce05fa181482b4f.zip |
Merge branch 'anders/diameter/answer_discard/OTP-11492' into maint
* anders/diameter/answer_discard/OTP-11492:
Fix error matching in traffic suite
Don't discard outgoing answers with Result-Code/E-bit errors
Diffstat (limited to 'lib/diameter/src')
-rw-r--r-- | lib/diameter/src/base/diameter_traffic.erl | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/lib/diameter/src/base/diameter_traffic.erl b/lib/diameter/src/base/diameter_traffic.erl index 3b62afca47..e3ecd9c930 100644 --- a/lib/diameter/src/base/diameter_traffic.erl +++ b/lib/diameter/src/base/diameter_traffic.erl @@ -162,24 +162,28 @@ incr_error(Dir, Id, TPid) -> %% incr_rc/4 %% --------------------------------------------------------------------------- --spec incr_rc(send|recv, Pkt, TPid, Dict0) +-spec incr_rc(send|recv, Pkt, TPid, DictT) -> {Counter, non_neg_integer()} | Reason when Pkt :: #diameter_packet{}, TPid :: pid(), - Dict0 :: module(), + DictT :: module() | {module(), module(), module()}, Counter :: {'Result-Code', integer()} | {'Experimental-Result', integer(), integer()}, Reason :: atom(). -incr_rc(Dir, Pkt, TPid, Dict0) -> +incr_rc(Dir, Pkt, TPid, {Dict, _, _} = DictT) -> try - incr_result(Dir, Pkt, TPid, {Dict0, Dict0, Dict0}) + incr_result(Dir, Pkt, TPid, DictT) catch exit: {E,_} when E == no_result_code; E == invalid_error_bit -> + incr(TPid, {msg_id(Pkt#diameter_packet.header, Dict), Dir, E}), E - end. + end; + +incr_rc(Dir, Pkt, TPid, Dict0) -> + incr_rc(Dir, Pkt, TPid, {Dict0, Dict0, Dict0}). %% --------------------------------------------------------------------------- %% pending/1 @@ -678,7 +682,7 @@ local(Msg, TPid, {Dict, AppDict, Dict0} = DictT, Fs, ReqPkt) -> reset(make_answer_packet(Msg, ReqPkt), Dict, Dict0), Fs), incr(send, Pkt, TPid, AppDict), - incr_result(send, Pkt, TPid, DictT), %% count outgoing + incr_rc(send, Pkt, TPid, DictT), %% count outgoing send(TPid, Pkt). %% reset/3 |