diff options
Diffstat (limited to 'lib/diameter/doc/src')
-rw-r--r-- | lib/diameter/doc/src/Makefile | 3 | ||||
-rw-r--r-- | lib/diameter/doc/src/diameter.xml | 58 | ||||
-rw-r--r-- | lib/diameter/doc/src/diameter_app.xml | 18 | ||||
-rw-r--r-- | lib/diameter/doc/src/diameter_codec.xml | 8 | ||||
-rw-r--r-- | lib/diameter/doc/src/diameter_dict.xml | 6 | ||||
-rw-r--r-- | lib/diameter/doc/src/diameter_make.xml | 10 | ||||
-rw-r--r-- | lib/diameter/doc/src/diameter_sctp.xml | 4 | ||||
-rw-r--r-- | lib/diameter/doc/src/diameter_soc.xml | 2 | ||||
-rw-r--r-- | lib/diameter/doc/src/diameter_tcp.xml | 4 | ||||
-rw-r--r-- | lib/diameter/doc/src/diameter_transport.xml | 35 | ||||
-rw-r--r-- | lib/diameter/doc/src/notes.xml | 91 |
11 files changed, 182 insertions, 57 deletions
diff --git a/lib/diameter/doc/src/Makefile b/lib/diameter/doc/src/Makefile index 7a7546fc4d..7c7fbeafef 100644 --- a/lib/diameter/doc/src/Makefile +++ b/lib/diameter/doc/src/Makefile @@ -1,7 +1,7 @@ # # %CopyrightBegin% # -# Copyright Ericsson AB 2010-2016. All Rights Reserved. +# Copyright Ericsson AB 2010-2018. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -77,6 +77,7 @@ clean_man: clean_html: rm -rf $(HTMLDIR)/* + rm -rf $(XMLDIR) gifs: $(GIF_FILES:%=$(HTMLDIR)/%) diff --git a/lib/diameter/doc/src/diameter.xml b/lib/diameter/doc/src/diameter.xml index 6bc7d147c0..85522c99b2 100644 --- a/lib/diameter/doc/src/diameter.xml +++ b/lib/diameter/doc/src/diameter.xml @@ -1,7 +1,9 @@ <?xml version="1.0" encoding="utf-8" ?> <!DOCTYPE erlref SYSTEM "erlref.dtd" [ - <!ENTITY spawn_opt + <!ENTITY spawn_opt2 '<seealso marker="erts:erlang#spawn_opt-2">erlang:spawn_opt/2</seealso>'> + <!ENTITY spawn_opt5 + '<seealso marker="erts:erlang#spawn_opt-5">erlang:spawn_opt/5</seealso>'> <!ENTITY nodes '<seealso marker="erts:erlang#nodes-0">erlang:nodes/0</seealso>'> <!ENTITY make_ref @@ -21,7 +23,7 @@ <copyright> <year>2011</year> -<year>2017</year> +<year>2019</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> @@ -55,7 +57,7 @@ limitations under the License. <!-- ===================================================================== --> <!-- ===================================================================== --> -<module>diameter</module> +<module since="OTP R14B03">diameter</module> <modulesummary>Main API of the diameter application.</modulesummary> <description> @@ -135,7 +137,7 @@ along with any extra arguments to be appended to those documented. Note that extra arguments specific to an outgoing request can be specified to &call;, in which case -those are are appended to any module-specific extra arguments.</p> +those are appended to any module-specific extra arguments.</p> <p> Specifying a <c>#diameter_callback{}</c> record allows individual @@ -150,7 +152,7 @@ See <c>diameter_callback.erl</c> for details.</p> <p> Options defining a Diameter application. -Has one the following types.</p> +Has one of the following types.</p> <taglist> @@ -1384,12 +1386,22 @@ the same peer.</p> </item> <tag> -<marker id="spawn_opt"/><c>{spawn_opt, [term()]}</c></tag> +<marker id="spawn_opt"/><c>{spawn_opt, [term()] | {M,F,A}}</c></tag> <item> <p> -Options passed to &spawn_opt; when spawning a process for an -incoming Diameter request. -Options <c>monitor</c> and <c>link</c> are ignored.</p> +An options list passed to &spawn_opt2; to spawn a handler process for an +incoming Diameter request on the local node, or an MFA that returns +the pid of a handler process.</p> + +<p> +Options <c>monitor</c> and <c>link</c> are ignored in the list-valued +case. +An MFA is applied with an additional term prepended to its argument +list, and should return either the pid of the handler process that +invokes <c>diameter_traffic:request/1</c> on the term in order to +process the request, or the atom <c>discard</c>. +The handler process need not be local, but diameter must be started on +the remote node.</p> <p> Defaults to the empty list.</p> @@ -1574,7 +1586,7 @@ identifies the configuration.</p> <!-- ===================================================================== --> <func> -<name>add_transport(SvcName, {connect|listen, [Opt]}) +<name since="OTP R14B03">add_transport(SvcName, {connect|listen, [Opt]}) -> {ok, Ref} | {error, Reason}</name> <fsummary>Add transport capability to a service.</fsummary> <type> @@ -1624,7 +1636,7 @@ its transports.</p> <!-- ===================================================================== --> <func> -<name>call(SvcName, App, Request, [Opt]) -> Answer | ok | {error, Reason}</name> +<name since="OTP R14B03">call(SvcName, App, Request, [Opt]) -> Answer | ok | {error, Reason}</name> <fsummary>Send a Diameter request message.</fsummary> <type> <v>SvcName = &service_name;</v> @@ -1730,7 +1742,7 @@ transport connection.</p> <!-- ===================================================================== --> <func> -<name>origin_state_id() -> &dict_Unsigned32;</name> +<name since="OTP R14B03">origin_state_id() -> &dict_Unsigned32;</name> <fsummary>Returns a reasonable Origin-State-Id.</fsummary> <desc> <p> @@ -1748,7 +1760,7 @@ at the time the diameter application was started.</p> <!-- ===================================================================== --> <func> -<name>remove_transport(SvcName, Pred) -> ok | {error, Reason}</name> +<name since="OTP R14B03">remove_transport(SvcName, Pred) -> ok | {error, Reason}</name> <fsummary>Remove previously added transports.</fsummary> <type> <v>SvcName = &service_name;</v> @@ -1795,7 +1807,7 @@ configured on the transport.</p> <!-- ===================================================================== --> <func> -<name>service_info(SvcName, Info) -> term()</name> +<name since="OTP R14B03">service_info(SvcName, Info) -> term()</name> <fsummary>Return information about a started service.</fsummary> <type> <v>SvcName = &service_name;</v> @@ -2114,7 +2126,7 @@ For example:</p> <!-- ===================================================================== --> <func> -<name>services() -> [SvcName]</name> +<name since="OTP R14B03">services() -> [SvcName]</name> <fsummary>Return the list of started services.</fsummary> <type> <v>SvcName = &service_name;</v> @@ -2129,7 +2141,7 @@ Return the list of started services.</p> <!-- ===================================================================== --> <func> -<name>session_id(Ident) -> &dict_OctetString;</name> +<name since="OTP R14B03">session_id(Ident) -> &dict_OctetString;</name> <fsummary>Return a value for a Session-Id AVP.</fsummary> <type> <v>Ident = &dict_DiameterIdentity;</v> @@ -2148,7 +2160,7 @@ the message containing the returned value will be sent.</p> <!-- ===================================================================== --> <func> -<name>start() -> ok | {error, Reason}</name> +<name since="OTP R14B03">start() -> ok | {error, Reason}</name> <fsummary>Start the diameter application.</fsummary> <desc> <p> @@ -2164,7 +2176,7 @@ file, not by calling <c>start/0</c> explicitly.</p> <!-- ===================================================================== --> <func> -<name>start_service(SvcName, Options) -> ok | {error, Reason}</name> +<name since="OTP R14B03">start_service(SvcName, Options) -> ok | {error, Reason}</name> <fsummary>Start a Diameter service.</fsummary> <type> <v>SvcName = &service_name;</v> @@ -2194,7 +2206,7 @@ necessarily the case.</p> <!-- ===================================================================== --> <func> -<name>stop() -> ok | {error, Reason}</name> +<name since="OTP R14B03">stop() -> ok | {error, Reason}</name> <fsummary>Stop the diameter application.</fsummary> <desc> <p> @@ -2208,7 +2220,7 @@ Stop the diameter application.</p> <!-- ===================================================================== --> <func> -<name>stop_service(SvcName) -> ok | {error, Reason}</name> +<name since="OTP R14B03">stop_service(SvcName) -> ok | {error, Reason}</name> <fsummary>Stop a Diameter service.</fsummary> <type> <v>SvcName = &service_name;</v> @@ -2221,7 +2233,7 @@ Stop a diameter service.</p> <p> Stopping a service causes all associated transport connections to be broken. -A DPR message with be sent as in the case of &remove_transport;.</p> +A DPR message will be sent as in the case of &remove_transport;.</p> <note> <p> @@ -2236,7 +2248,7 @@ be called to remove transport configuration.</p> <!-- ===================================================================== --> <func> -<name>subscribe(SvcName) -> true</name> +<name since="OTP R14B03">subscribe(SvcName) -> true</name> <fsummary>Subscribe to event messages.</fsummary> <type> <v>SvcName = &service_name;</v> @@ -2258,7 +2270,7 @@ reception of all transport-related events.</p> <!-- ===================================================================== --> <func> -<name>unsubscribe(SvcName) -> true</name> +<name since="OTP R14B03">unsubscribe(SvcName) -> true</name> <fsummary>Unsubscribe to event messages.</fsummary> <type> <v>SvcName = &service_name;</v> diff --git a/lib/diameter/doc/src/diameter_app.xml b/lib/diameter/doc/src/diameter_app.xml index aa334beb21..82e3d449ef 100644 --- a/lib/diameter/doc/src/diameter_app.xml +++ b/lib/diameter/doc/src/diameter_app.xml @@ -44,7 +44,7 @@ limitations under the License. </header> -<module>diameter_app</module> +<module since="OTP R14B03">diameter_app</module> <modulesummary> Callback module of a Diameter application.</modulesummary> @@ -180,7 +180,7 @@ process.</p> <funcs> <func> -<name>Mod:peer_up(SvcName, Peer, State) -> NewState</name> +<name since="OTP R14B03">Mod:peer_up(SvcName, Peer, State) -> NewState</name> <fsummary>Invoked when a transport connection has been established</fsummary> <type> <v>SvcName = &mod_service_name;</v> @@ -215,7 +215,7 @@ handled independently of &peer_up; and &peer_down;.</p> </func> <func> -<name>Mod:peer_down(SvcName, Peer, State) -> NewState</name> +<name since="OTP R14B03">Mod:peer_down(SvcName, Peer, State) -> NewState</name> <fsummary>Invoked when a transport connection has been lost.</fsummary> <type> <v>SvcName = &mod_service_name;</v> @@ -234,7 +234,7 @@ candidate in &pick_peer; callbacks.</p> </func> <func> -<name>Mod:pick_peer(LocalCandidates, RemoteCandidates, SvcName, State) +<name since="OTP R14B03">Mod:pick_peer(LocalCandidates, RemoteCandidates, SvcName, State) -> Selection | false</name> <fsummary>Select a target peer for an outgoing request.</fsummary> <type> @@ -311,7 +311,7 @@ or &peer_down; callback.</p> </func> <func> -<name>Mod:prepare_request(Packet, SvcName, Peer) -> Action</name> +<name since="OTP R14B03">Mod:prepare_request(Packet, SvcName, Peer) -> Action</name> <fsummary>Return a request for encoding and transport.</fsummary> <type> <v>Packet = &packet;</v> @@ -363,7 +363,7 @@ discarded}</c>.</p> </func> <func> -<name>Mod:prepare_retransmit(Packet, SvcName, Peer) -> Action</name> +<name since="OTP R14B03">Mod:prepare_retransmit(Packet, SvcName, Peer) -> Action</name> <fsummary>Return a request for encoding and retransmission.</fsummary> <type> <v>Packet = &packet;</v> @@ -393,7 +393,7 @@ discarded}</c>.</p> </func> <func> -<name>Mod:handle_answer(Packet, Request, SvcName, Peer) -> Result</name> +<name since="OTP R14B03">Mod:handle_answer(Packet, Request, SvcName, Peer) -> Result</name> <fsummary>Receive an answer message from a peer.</fsummary> <type> <v>Packet = &packet;</v> @@ -437,7 +437,7 @@ The &mod_application_opt; </func> <func> -<name>Mod:handle_error(Reason, Request, SvcName, Peer) -> Result</name> +<name since="OTP R14B03">Mod:handle_error(Reason, Request, SvcName, Peer) -> Result</name> <fsummary>Return an error from a outgoing request.</fsummary> <type> <v>Reason = timeout | failover | term()</v> @@ -465,7 +465,7 @@ not selected.</p> </func> <func> -<name>Mod:handle_request(Packet, SvcName, Peer) -> Action</name> +<name since="OTP R14B03">Mod:handle_request(Packet, SvcName, Peer) -> Action</name> <fsummary>Receive an incoming request.</fsummary> <type> <v>Packet = &packet;</v> diff --git a/lib/diameter/doc/src/diameter_codec.xml b/lib/diameter/doc/src/diameter_codec.xml index 5124b49484..0384ad2913 100644 --- a/lib/diameter/doc/src/diameter_codec.xml +++ b/lib/diameter/doc/src/diameter_codec.xml @@ -46,7 +46,7 @@ limitations under the License. <file>diameter_codec.xml</file> </header> -<module>diameter_codec</module> +<module since="OTP R15B03">diameter_codec</module> <modulesummary>Decode and encode of Diameter messages.</modulesummary> <description> @@ -255,7 +255,7 @@ Another list-valued representation allows a message to be specified as a list whose head is a &header; and whose tail is an &avp; list. This representation is used by diameter itself when relaying requests as directed by the return value of a &app_handle_request; callback. -It differs from the other other two in that it bypasses the checks for +It differs from the other two in that it bypasses the checks for messages that do not agree with their definitions in the dictionary in question: messages are sent exactly as specified.</p> @@ -346,7 +346,7 @@ question, as documented in &man_transport;.</p> <funcs> <func> -<name>decode(Mod, Bin) -> Pkt</name> +<name since="OTP R15B03">decode(Mod, Bin) -> Pkt</name> <fsummary>Decode a Diameter message.</fsummary> <type> <v>Mod = &dictionary;</v> @@ -362,7 +362,7 @@ Decode a Diameter message.</p> </func> <func> -<name>encode(Mod, Msg) -> Pkt</name> +<name since="OTP R15B03">encode(Mod, Msg) -> Pkt</name> <fsummary>Encode a Diameter message.</fsummary> <type> <v>Mod = &dictionary;</v> diff --git a/lib/diameter/doc/src/diameter_dict.xml b/lib/diameter/doc/src/diameter_dict.xml index 94016d9466..37d30b709b 100644 --- a/lib/diameter/doc/src/diameter_dict.xml +++ b/lib/diameter/doc/src/diameter_dict.xml @@ -486,9 +486,9 @@ will result in the following record definition given an empty prefix.</p> <pre> --record('SIP-Deregistration-Reason' {'SIP-Reason-Code', - 'SIP-Reason-Info', - 'AVP'}). +-record('SIP-Deregistration-Reason', {'SIP-Reason-Code', + 'SIP-Reason-Info', + 'AVP'}). </pre> <p> diff --git a/lib/diameter/doc/src/diameter_make.xml b/lib/diameter/doc/src/diameter_make.xml index 112355816f..57e83bbca1 100644 --- a/lib/diameter/doc/src/diameter_make.xml +++ b/lib/diameter/doc/src/diameter_make.xml @@ -45,7 +45,7 @@ limitations under the License. <file>diameter_make.xml</file> </header> -<module>diameter_make</module> +<module since="OTP R14B03">diameter_make</module> <modulesummary>Diameter dictionary compilation.</modulesummary> <description> @@ -67,7 +67,7 @@ interface.</p> <funcs> <func> -<name>codec(File :: iolist() | binary(), [Opt]) -> ok +<name since="OTP R15B">codec(File :: iolist() | binary(), [Opt]) -> ok | {ok, [Out]} | {error, Reason}</name> <fsummary>Compile a dictionary file into Erlang source.</fsummary> @@ -186,7 +186,7 @@ A returned error reason can be converted into a readable string using <!-- ===================================================================== --> <func> -<name>format(Parsed) -> iolist()</name> +<name since="OTP R16B03">format(Parsed) -> iolist()</name> <fsummary>Format a parsed dictionary.</fsummary> <desc> <p> @@ -198,7 +198,7 @@ dictionary format.</p> <!-- ===================================================================== --> <func> -<name>flatten(Parsed) -> term()</name> +<name since="OTP R16B03">flatten(Parsed) -> term()</name> <fsummary>Flatten a parsed dictionary.</fsummary> <desc> @@ -214,7 +214,7 @@ The return value is also a parsed dictionary.</p> <!-- ===================================================================== --> <func> -<name>format_error(Reason) -> string()</name> +<name since="OTP 17.0">format_error(Reason) -> string()</name> <fsummary>Turn an error reason into a readable string.</fsummary> <desc> diff --git a/lib/diameter/doc/src/diameter_sctp.xml b/lib/diameter/doc/src/diameter_sctp.xml index 62e958870e..2cf924ee6b 100644 --- a/lib/diameter/doc/src/diameter_sctp.xml +++ b/lib/diameter/doc/src/diameter_sctp.xml @@ -47,7 +47,7 @@ limitations under the License. <file>diameter_sctp.xml</file> </header> -<module>diameter_sctp</module> +<module since="OTP R14B03">diameter_sctp</module> <modulesummary>Diameter transport over SCTP.</modulesummary> <description> @@ -67,7 +67,7 @@ and implements the behaviour documented in <funcs> <func> -<name>start({Type, Ref}, Svc, [Opt]) +<name since="OTP R14B03">start({Type, Ref}, Svc, [Opt]) -> {ok, Pid, [LAddr]} | {error, Reason}</name> <fsummary>Start a transport process.</fsummary> <type> diff --git a/lib/diameter/doc/src/diameter_soc.xml b/lib/diameter/doc/src/diameter_soc.xml index 28e01ff1be..2d2d66a243 100644 --- a/lib/diameter/doc/src/diameter_soc.xml +++ b/lib/diameter/doc/src/diameter_soc.xml @@ -137,7 +137,7 @@ Capitalized <em>Diameter</em> refers to the protocol, lowercase <cell>Creating New AVPs</cell> <cell>&NA;</cell> <cell>New AVPs can be defined using the dictionary interface. - Both both RFC data formats and extensions are supported.</cell> + Both RFC data formats and extensions are supported.</cell> </row> <row> <cell>1.3.3</cell> diff --git a/lib/diameter/doc/src/diameter_tcp.xml b/lib/diameter/doc/src/diameter_tcp.xml index 9f84eeb9fd..fe0cb2d067 100644 --- a/lib/diameter/doc/src/diameter_tcp.xml +++ b/lib/diameter/doc/src/diameter_tcp.xml @@ -57,7 +57,7 @@ limitations under the License. <file>diameter_tcp.xml</file> </header> -<module>diameter_tcp</module> +<module since="OTP R14B03">diameter_tcp</module> <modulesummary>Diameter transport over TCP.</modulesummary> <description> @@ -83,7 +83,7 @@ before configuring TLS capability on diameter transports.</p> <funcs> <func> -<name>start({Type, Ref}, Svc, [Opt]) +<name since="OTP R14B03">start({Type, Ref}, Svc, [Opt]) -> {ok, Pid} | {ok, Pid, [LAddr]} | {error, Reason}</name> diff --git a/lib/diameter/doc/src/diameter_transport.xml b/lib/diameter/doc/src/diameter_transport.xml index 294e8a8864..0a8ef321c6 100644 --- a/lib/diameter/doc/src/diameter_transport.xml +++ b/lib/diameter/doc/src/diameter_transport.xml @@ -14,7 +14,8 @@ <erlref> <header> <copyright> -<year>2011</year><year>2016</year> +<year>2011</year> +<year>2019</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> @@ -43,7 +44,7 @@ limitations under the License. <file>diameter_transport.xml</file> </header> -<module>diameter_transport</module> +<module since="OTP R14B03">diameter_transport</module> <modulesummary>Diameter transport interface.</modulesummary> <description> @@ -94,7 +95,7 @@ and has the binary() to send in its <c>bin</c> field.</p> <funcs> <func> -<name>Mod:start({Type, Ref}, Svc, Config) +<name since="OTP R14B03">Mod:start({Type, Ref}, Svc, Config) -> {ok, Pid} | {ok, Pid, LAddrs} | {error, Reason}</name> @@ -174,10 +175,13 @@ its parent.</p> <taglist> -<tag><c>{diameter, {send, &message;}}</c></tag> +<tag><c>{diameter, {send, &message; | false}}</c></tag> <item> <p> -An outbound Diameter message.</p> +An outbound Diameter message. +The atom <c>false</c> can only be received when request +acknowledgements have been requests: see the <c>ack</c> message +below.</p> </item> <tag><c>{diameter, {close, Pid}}</c></tag> @@ -246,6 +250,27 @@ A <c>LocalAddr</c> list has the same semantics as one returned from &start;.</p> </item> +<tag><c>{diameter, ack}</c></tag> +<item> +<p> +Request acknowledgements of unanswered requests. +A transport process should send this once before passing incoming +Diameter messages into diameter. +As a result, every Diameter request passed into diameter with a +<c>recv</c> message (below) will be answered with a +<c>send</c> message (above), either a &message; for the transport +process to send or the atom <c>false</c> if the request has been +discarded or otherwise not answered.</p> + +<p> +This is to allow a transport process to keep count of the number +of incoming request messages that have not yet been answered or +discarded, to allow it to regulate the amount of incoming traffic. +Both diameter_tcp and diameter_sctp request acknowledgements when a +<c>message_cb</c> is configured, turning send/recv message into +callbacks that can be used to regulate traffic.</p> +</item> + <tag><c>{diameter, {recv, &message;}}</c></tag> <item> <p> diff --git a/lib/diameter/doc/src/notes.xml b/lib/diameter/doc/src/notes.xml index 18c3d76be4..8dcba93273 100644 --- a/lib/diameter/doc/src/notes.xml +++ b/lib/diameter/doc/src/notes.xml @@ -11,7 +11,7 @@ <header> <copyright> <year>2011</year> -<year>2017</year> +<year>2018</year> <holder>Ericsson AB. All Rights Reserved.</holder> </copyright> <legalnotice> @@ -43,6 +43,93 @@ first.</p> <!-- ===================================================================== --> +<section><title>diameter 2.2.1</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + Fix inadvertently broad monitor that resulted in + gen_server cast messages to hidden nodes from module + diameter_dist.</p> + <p> + Own Id: OTP-15768</p> + </item> + </list> + </section> + +</section> + +<section><title>diameter 2.2</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + Fix failure of incoming answer message with faulty + Experimental-Result-Code. Failure to decode the AVP + resulted in an uncaught exception, with no no + handle_answer/error callback as a consequence.</p> + <p> + Own Id: OTP-15569 Aux Id: ERIERL-302 </p> + </item> + </list> + </section> + + + <section><title>Improvements and New Features</title> + <list> + <item> + <p> + Add spawn_opt MFA configuration to allow a callback to + spawn a handler process for an incoming Diameter request + on an an arbitrary node. Module diameter_dist provides a + route_session/2 that can be used to distribute requests + based on Session-Id, although this module is currently + only documented in the module itself and may change.</p> + <p> + Own Id: OTP-15398</p> + </item> + </list> + </section> + +</section> + +<section><title>diameter 2.1.6</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + Fix function_clause when sending an outgoing request + after DPA has been sent in response to an incoming DPR. + The caused the diameter_peer_fsm gen_server associated + with the peer connection to fail, which could then result + in the transport connection being reset before the peer + closed it upon reception of DPA.</p> + <p> + Own Id: OTP-15198 Aux Id: ERIERL-213 </p> + </item> + </list> + </section> + +</section> + +<section><title>diameter 2.1.5</title> + + <section><title>Fixed Bugs and Malfunctions</title> + <list> + <item> + <p> + Fix documentation typos.</p> + <p> + Own Id: OTP-15045</p> + </item> + </list> + </section> + +</section> + <section><title>diameter 2.1.4.1</title> <section><title>Fixed Bugs and Malfunctions</title> @@ -93,7 +180,7 @@ first.</p> <list> <item> <p> - Fix documentation typo: peer_down/3 was written where + Fix documentation typo: peer_up/3 was written where peer_down/3 was intended.</p> <p> Own Id: OTP-14805</p> |