diff options
author | Anders Svensson <[email protected]> | 2015-05-03 11:56:15 +0200 |
---|---|---|
committer | Anders Svensson <[email protected]> | 2015-05-03 12:42:32 +0200 |
commit | 49e8b11ce3620e686e3388ee7d8a0f445b5f853a (patch) | |
tree | 910addaaa1270c09a0fe0f58bccc240992a96600 /lib | |
parent | 920b80059027814d564e1c010e76c464996bdf5c (diff) | |
download | otp-49e8b11ce3620e686e3388ee7d8a0f445b5f853a.tar.gz otp-49e8b11ce3620e686e3388ee7d8a0f445b5f853a.tar.bz2 otp-49e8b11ce3620e686e3388ee7d8a0f445b5f853a.zip |
Fix counting error with unknown application id
Statistics could be accumulated on a key like {{23,275,0}, recv} even
though 23 was not the application id of the dictionary in question.
Missed in commits df19c272 and 7816ab2f.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/diameter/src/base/diameter_traffic.erl | 18 |
1 files changed, 7 insertions, 11 deletions
diff --git a/lib/diameter/src/base/diameter_traffic.erl b/lib/diameter/src/base/diameter_traffic.erl index 538ebeeeba..bdb83ee682 100644 --- a/lib/diameter/src/base/diameter_traffic.erl +++ b/lib/diameter/src/base/diameter_traffic.erl @@ -1116,19 +1116,15 @@ msg_id(#diameter_packet{header = H}, Dict) -> %% there are 2^32 (application ids) * 2^24 (command codes) = 2^56 %% pairs for an attacker to choose from. msg_id(Hdr, Dict) -> - {_ApplId, Code, R} = Id = diameter_codec:msg_id(Hdr), - case Dict:msg_name(Code, 0 == R) of - '' -> - unknown(Dict:id(), R); - _ -> - Id + {Aid, Code, R} = Id = diameter_codec:msg_id(Hdr), + if Aid == ?APP_ID_RELAY -> + {relay, R}; + true -> + choose(Aid /= Dict:id() orelse '' == Dict:msg_name(Code, 0 == R), + unknown, + Id) end. -unknown(?APP_ID_RELAY, R) -> - {relay, R}; -unknown(_, _) -> - unknown. - %% No E-bit: can't be 3xxx. is_result(RC, false, _Dict0) -> RC < 3000 orelse 4000 =< RC; |