aboutsummaryrefslogtreecommitdiffstats
path: root/lib/diameter/src/base/diameter_codec.erl
diff options
context:
space:
mode:
authorAnders Svensson <[email protected]>2015-02-16 09:11:50 +0100
committerAnders Svensson <[email protected]>2015-02-17 02:29:19 +0100
commitebe60da137dafe659d9577e1c6411bcc1ea431af (patch)
tree6a307424b19e0f4667e4245feabe360cbf3afc79 /lib/diameter/src/base/diameter_codec.erl
parent60ddb0dc9e5c1e28aa01548b01310744fd9ede15 (diff)
downloadotp-ebe60da137dafe659d9577e1c6411bcc1ea431af.tar.gz
otp-ebe60da137dafe659d9577e1c6411bcc1ea431af.tar.bz2
otp-ebe60da137dafe659d9577e1c6411bcc1ea431af.zip
Don't discard component diameter_avp list on Grouped AVP decode error
The AVPs of an incoming Diameter message diameter_codec:decode/2,3 are decoded into a diameter_packet record in two ways: as a message-specific record in the 'msg' field and as a deep list of diameter_avp records in the 'avps' field. The record decode came first; the diameter_avp decode came later to support the Diameter relay application, but can also be convenient for non-relay applications. The diameter_avp representation can be used with outgoing messages, but what exactly is supported for isn't clearly documented. In the diameter_avp list representation, it's AVPs of type Grouped that lead to nesting: instead of a diameter_avp record, a Grouped AVP is represented by a diameter_avp list whose head is the Grouped AVP itself, and whose tail is the list of component AVPs. The diameter_avp decode was broken in the case of decode errors: the Grouped AVP was represented as a bare diameter_avp, and the component records were lost. The decode now produces the intended list. Note that component AVPs that could not be decoded will have 'undefined' in their data field.
Diffstat (limited to 'lib/diameter/src/base/diameter_codec.erl')
0 files changed, 0 insertions, 0 deletions