aboutsummaryrefslogtreecommitdiffstats
path: root/lib/diameter/doc
diff options
context:
space:
mode:
authorAnders Svensson <[email protected]>2017-07-13 01:28:06 +0200
committerAnders Svensson <[email protected]>2017-08-03 17:14:28 +0200
commite0603ba18a67c1ef33f60122fe6f00393c0c0203 (patch)
tree3ee53cc9989492b83de76014bbe15f14aa867af5 /lib/diameter/doc
parent58f9d631df0c256f7bc4ff3de2670b3b04e265f7 (diff)
downloadotp-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.xml12
-rw-r--r--lib/diameter/doc/src/diameter_codec.xml8
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>