diff options
author | Anders Svensson <[email protected]> | 2017-07-13 01:28:06 +0200 |
---|---|---|
committer | Anders Svensson <[email protected]> | 2017-08-03 17:14:28 +0200 |
commit | e0603ba18a67c1ef33f60122fe6f00393c0c0203 (patch) | |
tree | 3ee53cc9989492b83de76014bbe15f14aa867af5 /lib/diameter/doc | |
parent | 58f9d631df0c256f7bc4ff3de2670b3b04e265f7 (diff) | |
download | otp-e0603ba18a67c1ef33f60122fe6f00393c0c0203.tar.gz otp-e0603ba18a67c1ef33f60122fe6f00393c0c0203.tar.bz2 otp-e0603ba18a67c1ef33f60122fe6f00393c0c0203.zip |
Tweak map-valued decode
Use the same [MsgName | Avps] representation as for the list decode, but
with Avps a map instead of a AVP name/values list. As a result, don't
set the message/AVP name on an additional key in the map, which felt a
bit odd. Messages are [MsgName :: atom() | map()], Grouped AVPs are just
map().
Fix at least one problem in the traffic suite along the way: with
decode_format false, the own decode in to_map/2 didn't know whether or
not to decode strings, resulting on some failures.
Diffstat (limited to 'lib/diameter/doc')
-rw-r--r-- | lib/diameter/doc/src/diameter.xml | 12 | ||||
-rw-r--r-- | lib/diameter/doc/src/diameter_codec.xml | 8 |
2 files changed, 13 insertions, 7 deletions
diff --git a/lib/diameter/doc/src/diameter.xml b/lib/diameter/doc/src/diameter.xml index a7f001e096..43cb3a538c 100644 --- a/lib/diameter/doc/src/diameter.xml +++ b/lib/diameter/doc/src/diameter.xml @@ -539,7 +539,7 @@ that matches no peer.</p> <p> The <c>host</c> and <c>realm</c> filters cause the Destination-Host and Destination-Realm AVPs to be extracted from the -outgoing request, assuming it to be a record-, list- or map-valued +outgoing request, assuming it to be a record- or list-valued <c>&codec_message;</c>, and assuming at most one of each AVP. If this is not the case then the <c>{host|realm, &dict_DiameterIdentity;}</c> filters must be used to achieve the desired result. @@ -802,10 +802,16 @@ be matched by corresponding &capability; configuration, of <c>{decode_format, record | list | map | false}</c></tag> <item> <p> -The type of decoded messages and grouped AVPs in the <c>msg</c> field +The format of decoded messages and grouped AVPs in the <c>msg</c> field of diameter_packet records and <c>value</c> field of diameter_avp records respectively. -If <c>false</c> then the fields are set this value. +If <c>record</c> then a record whose definition is generated from the +dictionary file in question. +If <c>list</c> or <c>map</c> then a <c>[Name | Avps]</c> pair where +<c>Avps</c> is either a list of AVP name/values pairs or a map keyed on +AVP names respectively. +If <c>false</c> then the representation is omitted and <c>msg</c> and +<c>value</c> fields are set to <c>false</c>. See also &codec_message;.</p> <p> diff --git a/lib/diameter/doc/src/diameter_codec.xml b/lib/diameter/doc/src/diameter_codec.xml index 4df8e788b7..0846334d23 100644 --- a/lib/diameter/doc/src/diameter_codec.xml +++ b/lib/diameter/doc/src/diameter_codec.xml @@ -230,7 +230,8 @@ header.</p> </item> <tag> -<marker id="message"/><c>message() = record() | list() | map()</c></tag> +<marker id="message"/><c>message() = record() + | maybe_improper_list()</c></tag> <item> <p> The representation of a Diameter message as passed to @@ -240,9 +241,8 @@ a message as defined in a dictionary file is encoded as a record with one field for each component AVP. Equivalently, a message can also be encoded as a list whose head is the atom-valued message name (as specified in the relevant dictionary -file) and whose tail is a list of <c>{AvpName, AvpValues}</c> pairs, -or as a map with values keyed on AVP names and the message name in key -<c>:name</c>. +file) and whose tail is either a list of AVP name/values +pairs or a map with values keyed on AVP names. The format at decode is determined by &mod_service_opt; <c>decode_format</c>. Any of the formats is accepted at encode.</p> |