<feed xmlns='http://www.w3.org/2005/Atom'>
<title>otp.git/lib/diameter/src, branch OTP-18.0.2</title>
<subtitle>Mirror of Erlang/OTP repository.
</subtitle>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/'/>
<entry>
<title>Merge branch 'bruce/change-license'</title>
<updated>2015-06-22T13:44:54+00:00</updated>
<author>
<name>Bruce Yinhe</name>
<email>bruce@erlang.org</email>
</author>
<published>2015-06-22T13:42:56+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=8f63667b316cdff10e666b8f5b0b6a92bd722e5a'/>
<id>8f63667b316cdff10e666b8f5b0b6a92bd722e5a</id>
<content type='text'>
OTP-12845

* bruce/change-license:
  fix errors caused by changed line numbers
  Change license text to APLv2
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
OTP-12845

* bruce/change-license:
  fix errors caused by changed line numbers
  Change license text to APLv2
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'anders/diameter/18/OTP-12588'</title>
<updated>2015-06-21T22:41:09+00:00</updated>
<author>
<name>Anders Svensson</name>
<email>anders@erlang.org</email>
</author>
<published>2015-06-21T22:41:09+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=29bbf6a23a13d3e5956e77e7298515e85170d52a'/>
<id>29bbf6a23a13d3e5956e77e7298515e85170d52a</id>
<content type='text'>
* anders/diameter/18/OTP-12588:
  vsn -&gt; 1.10
  Remove dead upgrade-related code
  Update appup for 18
  Fix release note typo
  Fix comment typo
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* anders/diameter/18/OTP-12588:
  vsn -&gt; 1.10
  Remove dead upgrade-related code
  Update appup for 18
  Fix release note typo
  Fix comment typo
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'anders/diameter/sctp/OTP-12768'</title>
<updated>2015-06-21T22:40:56+00:00</updated>
<author>
<name>Anders Svensson</name>
<email>anders@erlang.org</email>
</author>
<published>2015-06-21T22:40:56+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=72f5c50ae1929cbbbdafe073477214e3c4015ef2'/>
<id>72f5c50ae1929cbbbdafe073477214e3c4015ef2</id>
<content type='text'>
* anders/diameter/sctp/OTP-12768:
  Fix connection timeouts in test transports
  Fix start order of alternate transports
  Log discarded answers
  Ensure accepting processes are first in, first out
  Remove upgrade-related code
  Be less parallel in traffic suite
  Increase send/receive buffers for testsuite SCTP listeners
  Decrease unnecessarily long testsuite timetraps
  Simplify accepting transport start
  Simplify peeloff signaling
  Simplify socket close at terminate
  Don't monitor listener after peeloff
  Don't receive initial messages out of order
  Remove assumption that SCTP association ids will be unique
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* anders/diameter/sctp/OTP-12768:
  Fix connection timeouts in test transports
  Fix start order of alternate transports
  Log discarded answers
  Ensure accepting processes are first in, first out
  Remove upgrade-related code
  Be less parallel in traffic suite
  Increase send/receive buffers for testsuite SCTP listeners
  Decrease unnecessarily long testsuite timetraps
  Simplify accepting transport start
  Simplify peeloff signaling
  Simplify socket close at terminate
  Don't monitor listener after peeloff
  Don't receive initial messages out of order
  Remove assumption that SCTP association ids will be unique
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'anders/diameter/grouped_errors/OTP-12721'</title>
<updated>2015-06-21T22:39:48+00:00</updated>
<author>
<name>Anders Svensson</name>
<email>anders@erlang.org</email>
</author>
<published>2015-06-21T22:39:48+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=5fff4543e890229527c2b8875fbc96aa88c87ad9'/>
<id>5fff4543e890229527c2b8875fbc96aa88c87ad9</id>
<content type='text'>
* anders/diameter/grouped_errors/OTP-12721:
  Fix decode of Grouped AVPs containing errors
  Simplify logic
  Simplify logic
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* anders/diameter/grouped_errors/OTP-12721:
  Fix decode of Grouped AVPs containing errors
  Simplify logic
  Simplify logic
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix start order of alternate transports</title>
<updated>2015-06-21T09:03:07+00:00</updated>
<author>
<name>Anders Svensson</name>
<email>anders@erlang.org</email>
</author>
<published>2015-06-21T07:55:17+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=fc9e8a6bade31c7216a8d6a194ba221f6f15459c'/>
<id>fc9e8a6bade31c7216a8d6a194ba221f6f15459c</id>
<content type='text'>
A transport configured with diameter:add_transport/2 can be passed
multiple transport_module/transport_config tuples in order to specify
alternate configuration, modules being attempted in order until one
succeeds. This is primarily for the connecting case, to allow a
transport to be configured to first attempt connection over SCTP, and
then TCP in case SCTP fails, with configuration like that documented:

  {transport_module, diameter_sctp},
  {transport_config, [...], 5000},
  {transport_module, diameter_tcp},
  {transport_config, [...]}

If the options are the same in both cases, another possibility would be
configuration like this, which attaches the same transport_config to
both modules:

  {transport_module, diameter_sctp},
  {transport_module, diameter_tcp},
  {transport_config, [...], 5000},

However, in this case the start order was reversed relative to the
documented order: first tcp, then sctp. This commit restores the
intended order.

OTP-12851
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
A transport configured with diameter:add_transport/2 can be passed
multiple transport_module/transport_config tuples in order to specify
alternate configuration, modules being attempted in order until one
succeeds. This is primarily for the connecting case, to allow a
transport to be configured to first attempt connection over SCTP, and
then TCP in case SCTP fails, with configuration like that documented:

  {transport_module, diameter_sctp},
  {transport_config, [...], 5000},
  {transport_module, diameter_tcp},
  {transport_config, [...]}

If the options are the same in both cases, another possibility would be
configuration like this, which attaches the same transport_config to
both modules:

  {transport_module, diameter_sctp},
  {transport_module, diameter_tcp},
  {transport_config, [...], 5000},

However, in this case the start order was reversed relative to the
documented order: first tcp, then sctp. This commit restores the
intended order.

OTP-12851
</pre>
</div>
</content>
</entry>
<entry>
<title>Remove dead upgrade-related code</title>
<updated>2015-06-20T13:12:05+00:00</updated>
<author>
<name>Anders Svensson</name>
<email>anders@erlang.org</email>
</author>
<published>2015-06-17T23:44:58+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=2ee2148bf9478ab4a1c8ec715ccc3579e19a6d11'/>
<id>2ee2148bf9478ab4a1c8ec715ccc3579e19a6d11</id>
<content type='text'>
Not needed with the parent commit's restart_application.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Not needed with the parent commit's restart_application.
</pre>
</div>
</content>
</entry>
<entry>
<title>Log discarded answers</title>
<updated>2015-06-20T12:29:30+00:00</updated>
<author>
<name>Anders Svensson</name>
<email>anders@erlang.org</email>
</author>
<published>2015-06-19T13:12:19+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=1f483bd5eb6371a1bf2517188658cc4a9cb57cae'/>
<id>1f483bd5eb6371a1bf2517188658cc4a9cb57cae</id>
<content type='text'>
To diameter_lib:log/4, which was last motivated in commit 39acfdb0.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
To diameter_lib:log/4, which was last motivated in commit 39acfdb0.
</pre>
</div>
</content>
</entry>
<entry>
<title>Ensure accepting processes are first in, first out</title>
<updated>2015-06-19T12:27:27+00:00</updated>
<author>
<name>Anders Svensson</name>
<email>anders@erlang.org</email>
</author>
<published>2015-06-19T11:26:19+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=cb89a27002558f19f236febef877c5cf135c4c8d'/>
<id>cb89a27002558f19f236febef877c5cf135c4c8d</id>
<content type='text'>
A listener process in diameter_sctp starts accepting transport processes
as required, either as associations are established or as diameter asks
for a processes to be started. Since this can happen in any order, the
listener maintains two queues: one for processes that diameter has
requested and which are waiting to be given an association, another for
processes that have been started to become owners of an association but
are waiting for diameter to request them. Only one queue at a time is
non-empty. The first queue's length is bounded by the number of
accepting processes configured as pool_size. Entries in the second queue
are short-lived since diameter starts a replacement transport process
whenever an existing one dies or communicates that it has an
association.

The two queues were previously implemented in an ets ordered_set, whose
keys were the pid() of transport processes. Removing an element from the
queue was then done with ets:first/1. The problem with this it's not
really a queue: there's no guarantee that pid-ordering is the same as
the order in which processes are started. If it isn't then it's possible
that an established association never be given to diameter as a
transport process if there's always a newer association whose pid sorts
first. This isn't a problem in practice since it would require new
associations to be established faster than diameter starts transport
processes, but redo the implementation as a queue, with strict FIFO
semantics.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
A listener process in diameter_sctp starts accepting transport processes
as required, either as associations are established or as diameter asks
for a processes to be started. Since this can happen in any order, the
listener maintains two queues: one for processes that diameter has
requested and which are waiting to be given an association, another for
processes that have been started to become owners of an association but
are waiting for diameter to request them. Only one queue at a time is
non-empty. The first queue's length is bounded by the number of
accepting processes configured as pool_size. Entries in the second queue
are short-lived since diameter starts a replacement transport process
whenever an existing one dies or communicates that it has an
association.

The two queues were previously implemented in an ets ordered_set, whose
keys were the pid() of transport processes. Removing an element from the
queue was then done with ets:first/1. The problem with this it's not
really a queue: there's no guarantee that pid-ordering is the same as
the order in which processes are started. If it isn't then it's possible
that an established association never be given to diameter as a
transport process if there's always a newer association whose pid sorts
first. This isn't a problem in practice since it would require new
associations to be established faster than diameter starts transport
processes, but redo the implementation as a queue, with strict FIFO
semantics.
</pre>
</div>
</content>
</entry>
<entry>
<title>Remove upgrade-related code</title>
<updated>2015-06-19T10:35:29+00:00</updated>
<author>
<name>Anders Svensson</name>
<email>anders@erlang.org</email>
</author>
<published>2015-06-17T23:44:58+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=207de95c123a0df754a6886011fc05a4b513a6a5'/>
<id>207de95c123a0df754a6886011fc05a4b513a6a5</id>
<content type='text'>
The changes in some of the previous commits assume application restart.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The changes in some of the previous commits assume application restart.
</pre>
</div>
</content>
</entry>
<entry>
<title>Simplify accepting transport start</title>
<updated>2015-06-19T01:03:14+00:00</updated>
<author>
<name>Anders Svensson</name>
<email>anders@erlang.org</email>
</author>
<published>2015-06-19T00:45:05+00:00</published>
<link rel='alternate' type='text/html' href='http://git.ninenines.eu/otp.git/commit/?id=25f280a5af09bba20ca9db84ebfd9d0d67f3c7ff'/>
<id>25f280a5af09bba20ca9db84ebfd9d0d67f3c7ff</id>
<content type='text'>
Don't pass an association id that's no longer used.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Don't pass an association id that's no longer used.
</pre>
</div>
</content>
</entry>
</feed>
