Age | Commit message (Collapse) | Author |
|
|
|
RFC 3588 allowed only 3xxx result codes in an answer-message (that is,
an answer that sets the E-bit) while RFC 6733 also allows 5xxx result
codes. Setting request_errors = answer tells diameter to answer 5xxx
errors itself. Returning {answer_message, integer()} from a
handle_request callback allows both 3xxx and 5xxx result codes to be
set. {protocol_error, integer()} is retained for 3xxx result codes.
|
|
When receiving a request for which errors have been detected during
decode, diameter previously used the errors list in the decoded
diameter_packet record to unconditionally set Result-Code and Failed-AVP
in the outgoing answer. It wasn't particularly delicate in doing so
however and would happily set a 5xxx Result-Code even if a
handle_request callback returned an answer-message, leading to an encode
error. This behaviour became even less endearing as of commit ac452e28,
which made it possible to handle_request to take place even for protocol
errors. (ie. When a callback typically should return an answer-message.)
This commit fixes the behaviour by only setting a value that's
appropriate for the answer in question, either a 3xxx or a 5xxx,
depending on if the answer's an answer-message or not. It also allows
handle_request to prevent diameter from setting anything by setting
errors = false in a returned diameter_packet. Ideally it should have
been errors = [] but the empty list is the default value for the errors
field and changing the default (ideally there shouldn't have been one)
would require recompilation of all modules including diameter.hrl:
choose the less attractive 'false' to avoid such backwards
incompatibility.
The request reception is also refactored somewhat to shorten some call
chains.
|
|
Configuring the value 'callback' all errors detected in incoming
requests to result in a handle_request callback. The default value
'answer_3xxx' is the previous behaviour in which diameter answers
protocol errors without a callback.
|
|
The value determines whether or not an unexpected message length in the
header of an incoming messages causes the peer process to exit, the
message to be discarded or handled as usual. The latter may only be
appropriate for message-oriented transport (eg. SCTP) since
stream-oriented transport (eg. TCP) may not be able to recover the
message boundary once a length error has occurred.
|
|
Don't start a new timer with each incoming message. Instead, start a
timer at timeout and flush after two successive timeouts with no message
reception.
|
|
|
|
|
|
|
|
|
|
|
|
* nox/enable-silent-rules/OTP-10726:
Implement ./otp_build configure --enable-silent-rules
|
|
With silent rules, the output of make is less verbose and compilation
warnings are easier to spot. Silent rules are disabled by default and
can be disabled or enabled at will by make V=0 and make V=1.
|
|
|
|
|
|
* anders/diameter/doc/OTP-10568:
Update doc for RFC 6733
Add copies of RFC's 6733 and 6737
|
|
|
|
|
|
6733 deprecates 3588.
|
|
|
|
Not yet any content to speak of.
|
|
|
|
|
|
|
|
|
|
|
|
Saves typing, more readable, less error prone.
|
|
The former doesn't allow seealso content, which erl_docgen doesn't
enforce, resulting in mangled PDF.
|
|
* anders/diameter/CEA_timeout/OTP-10554:
Implement transport_opt() capx_timeout
Document transport_opt() capx_timeout
Minor doc fixes
|
|
* anders/diameter/transport_data/OTP-10566:
Add a testcase
Allow a handle_request callback to return a #diameter_packet{}
|
|
* anders/diameter/transport_shutdown/OTP-10493:
Add simple DPR suite
Correct diameter:remove_transport/2 doc
Fix broken doc link
Ensure watchdog dies with transport if DPR was sent
Remove dead clause
Implement transport_opt() disconnect_cb
Document transport_opt() disconnect_cb
|
|
|
|
|
|
Presentation (order, cross-references), not content.
|
|
This allows it to set transport_data and header, inappropriately so
even.
|
|
Error can be returned if the service process goes down while
remove_transport is ongoing.
|
|
Broken in commit e28ced7b.
|
|
Callback makes sending of DPR configurable.
|
|
|
|
Configuration will allow relaxation of the guard against multiple
transport connections to the same peer.
|
|
|
|
It's neither used nor maintained.
|
|
Allow 32-bit Hop-by-Hop and End-to-End identifiers to be modified by
replacing the topmost bits with a constant value. This allow services on
different nodes to generate globally unique identifiers by having each
node mask in its own constant.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|