aboutsummaryrefslogtreecommitdiffstats
path: root/lib/pman/src/pman_buf.erl
diff options
context:
space:
mode:
authorAnders Svensson <[email protected]>2014-02-06 19:25:11 +0100
committerAnders Svensson <[email protected]>2014-02-24 17:27:02 +0100
commitbbdb027ccf78207ea911e67f3d1b9edcb6cf3ca0 (patch)
treeca633c648b6ae43fbb61a60ee2dfeef0753c2aa8 /lib/pman/src/pman_buf.erl
parent25237481ccccd3ddfa74582dc267632ad618ba30 (diff)
downloadotp-bbdb027ccf78207ea911e67f3d1b9edcb6cf3ca0.tar.gz
otp-bbdb027ccf78207ea911e67f3d1b9edcb6cf3ca0.tar.bz2
otp-bbdb027ccf78207ea911e67f3d1b9edcb6cf3ca0.zip
Be lenient with the M-bit in Grouped AVPs
RFC 6733 says this, in 4.4: Receivers of a Grouped AVP that does not have the 'M' (mandatory) bit set and one or more of the encapsulated AVPs within the group has the 'M' (mandatory) bit set MAY simply be ignored if the Grouped AVP itself is unrecognized. The rule applies even if the encapsulated AVP with its 'M' (mandatory) bit set is further encapsulated within other sub-groups, i.e., other Grouped AVPs embedded within the Grouped AVP. The first sentence is mangled but take it to mean this: An unrecognized AVP of type Grouped that does not set the 'M' bit MAY be ignored even if one of its encapsulated AVPs sets the 'M' bit. This is a bit of a non-statement since if the AVP is unrecognized then its type is unknown. We therefore don't know that its data bytes contain encapsulated AVPs, so can't but ignore any of those that set the M-bit. Doing anything else when the type *is* known would be inconsistent. OTP-11087 (commit 066544fa) caused the M-bit on any unrecognized AVP to be regarded as an error, unrecognized being taken to mean "not explicitly defined as a member of its container". (That is, an AVP that can't be packed into a dedicated record field, which is slightly stronger than "not defined".) This fixed the original intention for top-level AVPs but broke the required leniency for Grouped AVPs whose type is known. This commit restores the leniency. Note that dictionary files need to be recompiled for the commit to have effect. Thanks to Rory McKeown for reporting the problem.
Diffstat (limited to 'lib/pman/src/pman_buf.erl')
0 files changed, 0 insertions, 0 deletions