From f719d0fe308f00b85f92c29d7cdf9b0dc20d98a2 Mon Sep 17 00:00:00 2001
From: Erlang/OTP
+ Add missing check at dictionary compilation.
++ In particular, that an AVP defined as having type Grouped + in an @avp_types section has a corresponding definition + in a @grouped section.
++ Own Id: OTP-11561
++ Correct documentation on the setting of Origin-State-Id
++ It was incorrectly stated that the AVP would be set in an + outgoing DPR/DPA.
++ Own Id: OTP-11583
++ Change interface for communicating outbound stream id to + diameter_sctp
++ The module uses the transport_data field of record + diameter_packet to communicate the stream on which the an + incoming message is received and on which an outgoing + message should be sent, the previous interface being that + both are communicated as a tuple of the form {stream, + Id}. However, since diameter retains the value of an + incoming request's transport_data unless the + corresponding answer message specifies otherwise, the + behaviour in this case is to send an answer on the + outbound stream with the same identifier as the that of + the inbound stream on which the request was received. If + the inbound stream id is greater than or equal to the + number of outbound streams then this is guaranteed to + fail, causing the transport process in question to + terminate. There is no relationship between inbound and + outbound stream identifiers so diameter_sctp's imposition + of one is simply wrong.
++ Outbound stream ids are now communicated with a different + tuple: {outstream, Id}, interpreted modulo the number of + outbound streams. Thus, retention of an inbound request's + transport_data has no effect on the selection of an + outbound stream.
++ The change in interface is not strictly backwards + compatible because of the new atom for the outbound + stream. However, as there is currently no documented way + of obtaining the available number of outbound streams for + a peer connection, there is no way for a client to have + known the range of ids from which it could reliably have + chosen with the previous interface, so any setting of the + outbound stream has probably been unintentional. Not + explicitly specifying an outbound stream now results in a + round-robin selection.
++ Thanks to Sharmila Pillai for reporting the problem.
++ *** POTENTIAL INCOMPATIBILITY ***
++ Own Id: OTP-11593
++ Fix unicode path failure in diameter_make:codec/2.
++ A dictionary path containing a unicode codepoint > 255 + caused the function to fail.
++ Own Id: OTP-11655
++ Fix 'accept' config to diameter_sctp.
++ OTP-10893 added support for {accept, Match} tuples to + specify addresses or regexps that should be matched + against peer addresses to decide whether or not a newly + established association should be retained, but this + hasn't been functional in the SCTP case because of + missing support in inet(3).
++ The display of both local and peer addresses in + diameter:service_info/2 output has also been corrected.
++ Own Id: OTP-11661 Aux Id: OTP-10229
++ Be lenient with the M-bit in Grouped AVPs.
++ RFC 6733 says this, in 4.4:
+
+
+ The first sentence is mangled but take it to mean this:
+
+
+ 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 (R16B03) 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 leniency is now + restored.
++ Note that dictionary files need to be recompiled for the + change to have effect.
++ Thanks to Rory McKeown for reporting the problem.
++ Own Id: OTP-11675 Aux Id: OTP-11087
++ Fix pick_peer case clause failure.
++ In the case of {call_mutates_state, true} configuration + on the service in question, any peer selection that + failed to select a peer resulted in a case clause + failure. This was noticed in the case of a peer failover + in which an alternate peer wasn't available.
++ Own Id: OTP-11789
+