aboutsummaryrefslogtreecommitdiffstats
path: root/lib/diameter/doc
AgeCommit message (Collapse)Author
2015-02-20Add transport_opt() pool_sizeAnders Svensson
Transport processes are started by diameter one at a time. In the listening case, a transport process accepts a connection, tells the peer_fsm process, which tells its watchdog process, which tells its service process, which then starts a new watchdog, which starts a new peer_fsm, which starts a new transport process, which (finally) goes about accepting another connection. In other words, not particularly aggressive in accepting new connections. This behaviour doesn't do particularly well with a large number of concurrent connections: with TCP and 250 connecting peers we see connections being refused. This commit adds the possibilty of configuring a pool of accepting processes, by way of a new transport option, pool_size. Instead of diameter:add_transport/2 starting just a single process, it now starts the configured number, so that instead of a single process waiting for a connection there's now a pool. The option is even available for connecting processes, which provides an alternate to adding multiple transports when multiple connections to the same peer are required. In practice this also means configuring {restrict_connections, false}: this is not implicit. For backwards compatibility, the form of diameter:service_info(_,transport) differs in the connecting case, depending on whether or not pool_size is configured. Note that transport processes for the same transport_ref() can be started concurrently when pool_size > 1. This places additional requirements on diameter_{tcp,sctp}, that will be dealt with in a subsequent commit.
2014-12-09Prepare releaseErlang/OTP
2014-11-27Order peers in pick_peer callbacksAnders Svensson
The order of peers presented to a diameter_app(3) pick_peer callback has previously not been documented, but there are use cases that are simplified by an ordering. For example, consider preferring a direct connection to a specified Destination-Host/Realm to any host in the realm. The implementation previously treated this as a special case by placing matching hosts at the head of the peers list, but the documentation made no guarantees. Now present peers in match-order, so that the desired sorting is the result of the following filter. {any, [{all, [host, realm]}, realm]} The implementation is not backwards compatible in the sense that a realm filter alone is no longer equivalent in this case. However, as stated, the documentation never made any guarantees regarding the sorting.
2014-09-15Update release notesErlang/OTP
2014-09-14Add recompilation admonition to 17.2 release notesAnders Svensson
That dictionaries need to be recompiled, which is the case whenever diameter_gen.hrl is modified.
2014-06-19Prepare releaseErlang/OTP
2014-05-28Merge branch 'anders/diameter/17.1/OTP-11943' into maintAnders Svensson
* anders/diameter/17.1/OTP-11943: Update appup for OTP-11946, OTP-11936: 5014, Failed-AVP decode Update appup for OTP-11938: terminate watchdog after DPR reception Update appup for OTP-11721: log and counter hardening Update appup for OTP-11937: counters Update appup for OTP-11901: diameter_sctp function_clause Update appup for OTP-11934: watchdog process leak Update appup for OTP-11893: request table leak Update appup for OTP-11891: result code counters for CEA/DWA/DPA vsn -> 1.7 Fix broken release note for diameter-1.4.4
2014-05-27Fix broken release note for diameter-1.4.4Anders Svensson
Those were bug fixes, not known issues.
2014-05-27Change answer_errors default from report to discardAnders Svensson
In the same vein as commit 00584303, to avoid logging traffic-related happenings. Not that the value in diameter.hrl is just documentation: the value is set explicitly when diameter:start_service/2 creates diameter_app records.
2014-04-07Update release notesErlang/OTP
2014-03-30Merge branch 'anders/diameter/17.0_release/OTP-11605'Anders Svensson
* anders/diameter/17.0_release/OTP-11605: Move info modules into own subdirectory Include compiler and info modules in app file Remove unused diameter_dbg:log/4 Remove case expecting a pre-R16B return value from os:type/1 Fix doc typo: required -> requires Remove release note unrelated to functionality
2014-03-29Fix doc typo: required -> requiresAnders Svensson
2014-03-29Remove release note unrelated to functionalityAnders Svensson
2014-01-28Merge branch 'anders/diameter/doc/OTP-11583'Anders Svensson
* anders/diameter/doc/OTP-11583: Correct doc on the setting of Origin-State-Id
2014-01-28Correct doc on the setting of Origin-State-IdAnders Svensson
It was incorrectly stated that the AVP would be set in an outgoing DPR/DPA.
2014-01-27Merge branch 'anders/diameter/sctp_streams/OTP-11593'Anders Svensson
* anders/diameter/sctp_streams/OTP-11593: Change interface for communicating outbound stream id to diameter_sctp
2014-01-27Merge branch 'anders/diameter/undefined_group/OTP-11561'Anders Svensson
* anders/diameter/undefined_group/OTP-11561: Ensure that Grouped AVP's are fully defined in dictionaries Don't format diameter_make:codec/2 errors Compiler suite fix
2014-01-24Change interface for communicating outbound stream id to diameter_sctpAnders Svensson
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.
2014-01-16Don't format diameter_make:codec/2 errorsAnders Svensson
Instead, add diameter_make:format_error/1 to allow the caller to format if desired, which is what applications like compiler and yecc do. Use this to check that the expected error is the one actually generated in the compiler suite.
2013-12-10Merge tag 'OTP_R16B03'Magnus Lidén
The R16B03 release Conflicts: lib/sasl/vsn.mk
2013-12-09Prepare releaseOTP_R16B03Erlang/OTP
2013-12-04Merge branch 'maint'Anders Svensson
2013-12-03Assorted doc fixes/tweaksAnders Svensson
2013-12-02Merge branch 'maint'Henrik Nord
2013-12-02diameter: Fix silent make ruleAnthony Ramine
2013-12-02Merge branch 'maint'Anders Svensson
2013-12-02Merge branch 'anders/diameter/R16B03_release/OTP-11499' into maintAnders Svensson
* anders/diameter/R16B03_release/OTP-11499: vsn -> 1.5 Update appup for OTP-11168 Update appup for OTP-11361 Add makefile to build example dictionaries Add recent Diameter-related RFCs Generate diameterc.1, not diameter_compile.1 Fix documentation typos Fix appup blunder
2013-12-02Merge branch 'anders/diameter/timer_confusion/OTP-11168' into maintAnders Svensson
* anders/diameter/timer_confusion/OTP-11168: Rename reconnect_timer -> connect_timer
2013-12-02Merge branch 'anders/diameter/dictionary_make/OTP-11348' into maintAnders Svensson
* anders/diameter/dictionary_make/OTP-11348: Return compilable forms instead of beam Document diameter_make:format/1 and diameter_make:flatten/1 Fix diameter_make:flatten/1 Modify type that currently causes dialyzer woe Simplify and extend diameter_make interface Add diameter_make:flatten/1, remove reformat/1 Adapt compiler suite to diameter_make Remove dead code from codec suite Extend diameter_make:codec/2 Don't pollute process dictionary in diameter_codegen:from_dict/4 Make forms a separate output from diameter_codegen Remove last remnants of "spec" Write as last step in code generation Change extensions for debug output: .spec/forms -> .D/F
2013-12-01Return compilable forms instead of beamAnders Svensson
That is, preprocessed forms that can be passed to compile:forms/1,2.
2013-12-01Document diameter_make:format/1 and diameter_make:flatten/1Anders Svensson
2013-11-30Add recent Diameter-related RFCsAnders Svensson
2013-11-30Generate diameterc.1, not diameter_compile.1Anders Svensson
2013-11-29Rename reconnect_timer -> connect_timerAnders Svensson
The former was misleading since the timer only applies to initial connection attempts, reconnection attempts being governed by watchdog_timer. The name is a historic remnant from a (dark, pre-OTP) time in which RFC 3539 was followed less slavishly than it is now, and the timer actually did apply to reconnection attempts. Note that connect_timer corresponds to RFC 6733 Tc, while watchdog_timer corresponds to RFC 3539 TwInit. The latter RFC makes clear that TwInit should apply to reconnection attempts. It's less clear if only RFC 6733 is read. Note also that reconnect_timer is still accepted for backwards compatibility. It would be possible to add an option to make reconnect_timer behave strictly as the name suggests (ie. ignore RFC 3539 and interpret RFC 6733 at face value; something that has some value for testing at least) but no such option is implemented in this commit.
2013-11-29Fix documentation typosAnders Svensson
2013-11-28Extend diameter_make:codec/2Anders Svensson
Function can now take a literal dictionary as input, instead of a path, and can return results instead of writing them to the filesystem.
2013-11-06Merge branch 'maint'Fredrik Gustafsson
2013-11-04Update release notesErlang/OTP
2013-09-17Merge tag 'OTP_R16B02'Magnus Lidén
The R16B02 release Conflicts: lib/sasl/vsn.mk
2013-09-16Prepare releaseOTP_R16B02Erlang/OTP
2013-07-31Merge branch 'maint'Anders Svensson
2013-07-30Fix UTF8String encodeAnders Svensson
To accept any nested list of codepoints and binaries. A list containing a binary was previously misinterpreted and the documentation was incomplete. Also, rework codec suite slightly to be able to specify values for which decode o encode is the identity map, for which encode should succeed, and for which encode should fail.
2013-06-18Merge tag 'OTP_R16B01'Björn-Egil Dahlberg
The R16B01 release Conflicts: lib/sasl/vsn.mk
2013-06-17Prepare releaseOTP_R16B01Erlang/OTP
2013-06-11Merge branch 'maint'Anders Svensson
2013-06-11Merge branch 'anders/diameter/request_spawn/OTP-11060' into maintAnders Svensson
* anders/diameter/request_spawn/OTP-11060: Minor doc fix
2013-06-11Minor doc fixAnders Svensson
2013-06-11Merge branch 'maint'Anders Svensson
2013-06-11Merge branch 'anders/diameter/release/R16B01/OTP-11120' into maintAnders Svensson
* anders/diameter/release/R16B01/OTP-11120: vsn -> 1.4.2 Update appup for R16B01 Trailing whitespace and copyright fixes Minor macro simplification Move app/appsrc from src/base into src
2013-06-11Merge branch 'anders/diameter/request_spawn/OTP-11060' into maintAnders Svensson
* anders/diameter/request_spawn/OTP-11060: Make spawn options for request processes configurable