diff options
author | Anders Svensson <[email protected]> | 2015-03-20 02:18:06 +0100 |
---|---|---|
committer | Anders Svensson <[email protected]> | 2015-03-24 11:02:05 +0100 |
commit | b8a7df45c9e57a832f7db9b9b875b31d0ab7d29c (patch) | |
tree | 31c582bcb62cdfa0a1fbf51b47741af4eb94b521 /lib/diameter/src/base/diameter_peer_fsm.erl | |
parent | 35f564094033ea2eb4c5b01d0d0b1c0d629ea5b1 (diff) | |
download | otp-b8a7df45c9e57a832f7db9b9b875b31d0ab7d29c.tar.gz otp-b8a7df45c9e57a832f7db9b9b875b31d0ab7d29c.tar.bz2 otp-b8a7df45c9e57a832f7db9b9b875b31d0ab7d29c.zip |
Adapt to changed DiameterURI defaults in RFC 6733
Despite claims of full backwards compatibility, the text of RFC 6733
changes the interpretation of unspecified values in a DiameterURI. In
particular, 3588 says that the default port and transport are 3868 and
sctp respectively, while 6733 says it's either 3868/tcp (aaa) or
5658/tcp (aaas). The 3588 defaults were used regardless, but now use
them only if the common dictionary is diameter_gen_base_rfc3588. The
6733 defaults are used otherwise.
This kind of change in the standard can lead to interop problems, since
a node has to know which RFC its peer is following to know that it will
properly interpret missing URI components. Encode of a URI includes all
components to avoid such confusion.
That said, note that the defaults in the diameter_uri record have *not*
been changed. This avoids breaking code that depends on them, but the
risk is that such code sends inappropriate values. The record defaults
may be changed in a future release, to force values to be explicitly
specified.
Diffstat (limited to 'lib/diameter/src/base/diameter_peer_fsm.erl')
-rw-r--r-- | lib/diameter/src/base/diameter_peer_fsm.erl | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/diameter/src/base/diameter_peer_fsm.erl b/lib/diameter/src/base/diameter_peer_fsm.erl index af0fce57a8..0ee3986b97 100644 --- a/lib/diameter/src/base/diameter_peer_fsm.erl +++ b/lib/diameter/src/base/diameter_peer_fsm.erl @@ -187,7 +187,7 @@ i({Ack, WPid, {M, Ref} = T, Opts, {SvcOpts, Nodes, Dict0, Svc}}) -> erlang:monitor(process, WPid), wait(Ack, WPid), diameter_stats:reg(Ref), - diameter_codec:setopts(SvcOpts), + diameter_codec:setopts([{common_dictionary, Dict0} | SvcOpts]), {_,_} = Mask = proplists:get_value(sequence, SvcOpts), {[Cs,Ds], Rest} = proplists:split(Opts, [capabilities_cb, disconnect_cb]), putr(?CB_KEY, {Ref, [F || {_,F} <- Cs]}), |