From 62870c998955e1498e71bfc90607885e96ecaa27 Mon Sep 17 00:00:00 2001
From: Erlang/OTP
+ Don't discard outgoing answers unnecessarily.
++ Answers missing a Result-Code AVP or setting an E-bit + inappropriately were discarded even if encode was + successful.
++ Own Id: OTP-11492
++ Increase supervision timeouts.
++ At diameter application shutdown, DPR could be omitted on + open peer connections because of short supervision + timeouts.
++ Own Id: OTP-12412
++ Fix retransmission of messages sent as header/avps list.
++ Extracting End-to-End and Hop-by-Hop Identifiers resulted + in a function clause error, resulting in a handle_error + callback.
++ Own Id: OTP-12415
++ Fix diameter_avp decode of Grouped AVPs having decode + errors.
++ Components of such an AVP were not extracted, causing it + to be represented by a single diameter_avp record instead + of the intended list.
++ Dictionary files must be recompiled for the fix to have + effect.
++ Own Id: OTP-12475
++ Fix ordering of AVPs in relayed messages.
++ The order was reversed relative to the received order, + with a Route-Record AVP prepended.
++ Thanks to Andrzej TrawiĆski.
++ Own Id: OTP-12551
++ Fix issues with DiameterURI encode/decode.
++ RFC 6773 changed the default port and transport, but the + RFC 3588 defaults were used even if the RFC 6733 common + dictionary was in use. The RFC 3588 defaults are now only + used when the common dictionary is + diameter_gen_base_rfc3588.
++ Both RFC 3588 and 6733 disallow + transport=udp;protocol=diameter. Encode of the + combination now fails.
++ Decode of ports numbers outside the range 0-65535 and + fully qualified domain names longer than 255 octets now + fails.
++ Note that RFC 3588 is obsolete, and that there is a + diameter_gen_base_rfc6733. The change in defaults is a + potential interoperability problem when moving to RFC + 6733 with peers that do not send all URI components. The + fact that 6733 allows 5xxx result codes in answer + messages setting the E-bit, which RFC 3588 doesn't, is + another.
++ Own Id: OTP-12589
++ Add service_opt() string_decode.
++ To disable the decode of potentially large binaries to + string. This prevents large strings from being copied + when incoming Diameter messages are passed between + processes, a vulnerability that can lead to memory being + exhausted given sufficiently malicious peers.
++ The value is a boolean(), true being the default for + backwards compatibility. Setting false causes both + diameter_caps records and decoded messages to contain + binary() in relevant places that previously had string(): + diameter_app(3) callbacks need to be prepared for the + change.
++ The Diameter types affected are OctetString and the + derived types UTF8String, DiameterIdentity, DiameterURI, + IPFilterRule, and QoSFilterRule. Time and Address are + unaffected.
++ Own Id: OTP-11952
++ Add transport_opt() pool_size.
++ To allow for pools of accepting transport processes, + which can better service multiple simultaneous peer + connections. The option can also be used with connecting + transports, to establish multiple connections to the same + peer without having to configure multiple transports.
++ Own Id: OTP-12428
++ Allow DPR to be sent with diameter:call/4.
++ It has been possible to send, but the answer was regarded + as unsolicited and discarded. DPA now causes the + transport process in question to be terminated, as for + DPR that diameter itself sends.
++ Own Id: OTP-12542
++ Discard requests after DPR.
++ RFC 6733 is imprecise, but the tone is that messages + received after DPR are an exception to be dealt with only + because of the possibility of unordered delivery over + SCTP. As a consequence, and because a request following + DPR is unlikely to be answered due to the impending loss + of the peer connection, discard outgoing requests + following an outgoing or incoming DPR. Incoming requests + are also discarded, with the exception of DPR itself. + Answers are sent and received as usual.
++ Own Id: OTP-12543
++ Add transport_opt() dpr_timeout.
++ To cause a peer connection to be closed following an + outgoing DPA when the peer fails to do so. It is the + recipient of DPA that should close the connection + according to RFC 6733.
++ Own Id: OTP-12609
++ Add service_opt() incoming_maxlen.
++ To bound the expected size of incoming Diameter messages. + Messages larger than the specified number of bytes are + discarded, to prevent a malicious peer from generating + excessive load.
++ Own Id: OTP-12628
+