From 21e778b998b895034453251d83c3e6aaa72fe395 Mon Sep 17 00:00:00 2001
From: Anders Svensson
Date: Fri, 31 May 2013 14:46:59 +0200
Subject: Fix setting of Failed-AVP on {answer_message, 5xxx} from
handle_request
RFC 6733 says that certain 5xxx result codes must be accompanied by
Failed-AVP, and decode populates #diameter_packet.errors with
Result-Code/AVP pairs for errors it detects. However, Failed-AVP was not
set in the outgoing answer if the handle_request callback returned
{answer_message, 5xxx}. It is now set with the AVP from the first pair
with the specified Result-Code, if found.
Note that {answer_message, 5xxx} doesn't handle all cases in which a
5xxx answer is required, only that in which the setting above is
appropriate. If it isn't then handle_request should construct its answer
and return {reply, Ans}.
---
lib/diameter/doc/src/diameter_app.xml | 14 +++++++++++---
1 file changed, 11 insertions(+), 3 deletions(-)
(limited to 'lib/diameter/doc')
diff --git a/lib/diameter/doc/src/diameter_app.xml b/lib/diameter/doc/src/diameter_app.xml
index d4fb792787..e6c9cc9a90 100644
--- a/lib/diameter/doc/src/diameter_app.xml
+++ b/lib/diameter/doc/src/diameter_app.xml
@@ -565,7 +565,8 @@ Equivalent to
where Avps sets the Origin-Host, Origin-Realm, the specified
-Result-Code and (if the request contained one) Session-Id AVP's.
+Result-Code and (if the request contained one) Session-Id AVP's, and
+possibly Failed-AVP as described below.
Returning a value other than 3xxx or 5xxx will cause the request
@@ -573,6 +574,14 @@ process in question to fail, as will returning a 5xxx value if the
peer connection in question has been configured with the RFC 3588
common dictionary diameter_gen_base_rfc3588.
(Since RFC 3588 only allows 3xxx values in an answer-message.)
+
+
+When returning 5xxx, Failed-AVP will be populated with the AVP of the
+first matching Result-Code/AVP pair in the errors field of the
+argument &packet;, if found.
+If this is not appropriate then an answer-message should be
+constructed explicitly and returned in a reply tuple
+instead.
{relay, Opts}
@@ -592,8 +601,7 @@ header of the relayed request.
The returned Opts should not specify detach.
A subsequent &handle_answer;
callback for the relayed request must return its first
-argument, the #diameter_packet{} record containing the answer
-message.
+argument, the &packet; containing the answer message.
Note that the extra option can be specified to supply arguments
that can distinguish the relay case from others if so desired.
Any other return value (for example, from a
--
cgit v1.2.3