aboutsummaryrefslogtreecommitdiffstats
path: root/lib/diameter
AgeCommit message (Collapse)Author
2014-09-14Merge branch 'anders/diameter/17.3_release/OTP-12093' into maintAnders Svensson
* anders/diameter/17.3_release/OTP-12093: Add recompilation admonition to 17.2 release notes
2014-09-14Merge branch 'anders/diameter/Failed-AVP/OTP-12094' into maintAnders Svensson
* anders/diameter/Failed-AVP/OTP-12094: Fix ?MODULE in preprocessed dictionary forms
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-09-12Fix ?MODULE in preprocessed dictionary formsAnders Svensson
By replacing literal diameter_gen_relay atoms in forms extracted from that module by the name of the module in question. This has been wrong for some time, but only became noticable when the parent commit started using ?MODULE as more than a process dictionary key or tag to match on. In particular, the function dict/1 in diameter_gen.hrl (included by every dictionary module) can now return ?MODULE, which is (not surprisingly) expected to be the name of the dictionary module in question. It wasn't in the case of a module compiled from forms: it was diameter_gen_relay, since that's the module the forms were extracted from. The fix only affects dictionaries compiled from forms, as returned by diameter_make:codec/2. In particular, dictionaries compiled from Erlang source returned by this function, or by diameterc(1), are unaffected.
2014-09-09Merge branch 'anders/diameter/17.3_release/OTP-12093' into maintAnders Svensson
* anders/diameter/17.3_release/OTP-12093: vsn -> 1.7.1 Update appup for OTP-12094 Update appup for OTP-12080 Update appup for OTP-12069
2014-09-09Merge branch 'anders/diameter/5014/OTP-12074' into maintAnders Svensson
* anders/diameter/5014/OTP-12074: Don't leave extra bit in decoded AVP data
2014-09-09Merge branch 'anders/diameter/Failed-AVP/OTP-12094' into maintAnders Svensson
* anders/diameter/Failed-AVP/OTP-12094: Fix best effort decode of Failed-AVP Fix decode of Failed-AVP in RFC 3588 answer-message
2014-09-09Merge branch 'anders/diameter/counters/OTP-12080' into maintAnders Svensson
* anders/diameter/counters/OTP-12080: Fix counters for answer-message Count relayed messages on {relay, Rbit} Count request retransmissions Fix counting of outgoing requests
2014-09-08Don't leave extra bit in decoded AVP dataAnders Svensson
The bit is added in diameter_codec to induce a decode error in the case of 5014 errors, but was not removed before returning the decoded result. Code examining the binary data in a diameter_avp record would then see the extra bit.
2014-09-08vsn -> 1.7.1Anders Svensson
2014-09-08Update appup for OTP-12094Anders Svensson
diameter_codec must be loaded before diameter_traffic.
2014-09-08Update appup for OTP-12080Anders Svensson
2014-09-08Update appup for OTP-12069Anders Svensson
2014-09-08Fix best effort decode of Failed-AVPAnders Svensson
Commit c2c00fdd didn't get it quite right: it only decoded failed AVPs in the common dictionary since it's this dictionary an answer-message is decoded in. An extra dictionary isn't something that's easily passed through the decode without rewriting dictionary compilation however, and that's no small job, so continue with the use/abuse of the process dictionary by storing the dictionary module for the decode to retrieve. This is one step worse than previous uses since the dictionary is put in one module (diameter_codec) and got in another (the dictionary module), but it's the lesser of two evils.
2014-09-08Fix decode of Failed-AVP in RFC 3588 answer-messageAnders Svensson
Commit 066544fa had the unintended consequence of breaking the decode of Failed-AVP in answer-message as defined in the RFC 3588, since the grammar doesn't list Failed-AVP as an explicit component AVP, in contrast to the RFC 6733 grammar, which does. Handle this case explicitly, as an exception, just as with Failed-AVP as parent AVP.
2014-09-08Fix counters for answer-messageAnders Svensson
An answer message that sets the E-bit is encoded/decoded with Diameter common dictionary, using the answer-message grammar specified in the RFC. However, the dictionary of the application in question is the one that knows the command code of the message. Commit df19c272 didn't make this distinction when incrementing counters for an answer-message, using the common dictionary for both purposes, causing the message to be counted as unknown. This commit remedies that.
2014-08-05Map binary process info to a reference/byte countAnders Svensson
That is, instead of including the list in a diameter:service_info/2 info tuple, only include the number of references and the number of bytes referenced. The list itself can be quite large and typically isn't that interesting, at least not to a diameter user.
2014-08-05Count relayed messages on {relay, Rbit}Anders Svensson
Instead of grouping them with 'unknown'. These messages were keyed on {ApplicationId, CommandCode, Rbit} prior to commit df19c272, but distinguishing between the relay application and others is probably more useful. The only reason for not including the R-bit in the unknown key is that the key is also used elsewhere, and relay is an expected case while unknown isn't.
2014-08-05Count request retransmissionsAnders Svensson
As mentioned in the parent commit. The {Id, send, retransmission} key is of the same form as the {Id, send|recv, error} key used for encode/decode errors.
2014-08-05Fix counting of outgoing requestsAnders Svensson
Commit df19c272 broke this in avoiding counting on arbitrary keys. It didn't break it sufficiently for the only counters usage in the test suites to fail however: watchdog counters worked as intended, but no others, not even CER and DPR. More testcases are needed. This commit does change/fix the previous semantics somewhat: - Retransmissions are no longer counted. This previously made it impossible to distinguish between these and unanswered requests, since both counted as an outgoing request. There should probably be a retransmission counter but it should be distinct from the sent request counter. - The counting is always on the node from which diameter:call/4 is invoked, not the node on which the transport resides, as was previously the case. (Although they're typically one and the same.) Note that none of these semantics are documented as yet, so we're not changing a documented interface.
2014-07-21Add info item for diameter:service_info/2Anders Svensson
To extract only process info from connections info, which can be useful to reduce the amount of information returned. Choose 'info' for the item since process_info is more than one word: all others are one. Don't choose memory since it's too specific: might want to use it for more.
2014-07-21Add (process) info tuple to diameter:service_info/2Anders Svensson
To show process_info of interest. This is not yet documented since it may well change.
2014-07-21Add diameter_dbg:sizes/0Anders Svensson
To return sizes of named ets tables.
2014-07-21Tweak commentsAnders Svensson
2014-06-19Prepare releaseErlang/OTP
2014-06-11Corrected module name in appup fileMicael Karlberg
2014-05-29Merge branch 'anders/diameter/dictionaries/OTP-11958' into maintAnders Svensson
* anders/diameter/dictionaries/OTP-11958: Fix broken check for undefined AVPs in @codec and @custom_types Add @codecs and @custom_types tests to compiler suite
2014-05-29Fix broken check for undefined AVPs in @codec and @custom_typesAnders Svensson
Instead of detecting the error, code generation failed when attempting to lookup the type of an undefined AVP.
2014-05-29Add @codecs and @custom_types tests to compiler suiteAnders Svensson
Dictionary compilation fails to detect undefined AVPs in these sections.
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-28Merge branch 'anders/diameter/hardening/OTP-11721' into maintAnders Svensson
* anders/diameter/hardening/OTP-11721: Change answer_errors default from report to discard
2014-05-28Update appup for OTP-11938: terminate watchdog after DPR receptionAnders Svensson
Modules: diameter_watchdog, diameter_peer_fsm diameter_watchdog must be loaded first.
2014-05-28Update appup for OTP-11721: log and counter hardeningAnders Svensson
Modules: diameter_codec, diameter_peer_fsm, diameter_watchdog, diameter_traffic, diameter_service, diameter_lib, dictionary modules diameter_lib and diameter_traffic (in that order) must be loaded first. diameter_codec last must be loaded before diameter_peer_fsm and diameter_watchdog.
2014-05-27Update appup for OTP-11937: countersAnders Svensson
Modules: diameter_peer_fsm, diameter_watchdog, diameter_codec, diameter_traffic diameter_traffic must be loaded first.
2014-05-27Update appup for OTP-11901: diameter_sctp function_clauseAnders Svensson
2014-05-27Update appup for OTP-11893: request table leakAnders Svensson
Modules: diameter_service
2014-05-27Update appup for OTP-11891: result code counters for CEA/DWA/DPAAnders Svensson
Modules: diameter_traffic, diameter_peer_fsm, diameter_watchdog diameter_traffic must be loaded first.
2014-05-27vsn -> 1.7Anders Svensson
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-05-27Merge branch 'anders/diameter/Failed-AVP/OTP-11936' into maintAnders Svensson
* anders/diameter/Failed-AVP/OTP-11936: Do best-effort decode of Failed-AVP Add a testcase that expects a decoded value in Failed-AVP
2014-05-27Merge branch 'anders/diameter/5014/OTP-11946' into maintAnders Svensson
* anders/diameter/5014/OTP-11946: Fix handling of AVP length errors (5014) in unknown AVPs Add testcases that send unknown AVPs with a bad AVP Length
2014-05-27Merge branch 'anders/diameter/hardening/OTP-11721' into maintAnders Svensson
* anders/diameter/hardening/OTP-11721: Simplify example server Make example server answer unsupported requests with 3001 Make example code quiet Don't count messages on arbitrary keys Replace traffic-related log reports with no-op function calls
2014-05-26Do best-effort decode of Failed-AVPAnders Svensson
Commit 4ce2d3a6 (diameter-1.4.2, OTP-11007) disabled the decode of values in Failed-AVP components since any error caused the decode of Failed-AVP itself to fail. This is less than useful since (1) we should be able to decode it given that we've sent it (modulo mangling on the way to the peer and back), and (2) it's not unheard of to examine Failed-AVP to see what the peer objected to. This commits adds a best-effort decode: decode if possible, otherwise not, using the same abuse of the process dictionary as commit bbdb027c.
2014-05-26Add a testcase that expects a decoded value in Failed-AVPAnders Svensson
This isn't currently the case, but soon will be.
2014-05-26Fix handling of AVP length errors (5014) in unknown AVPsAnders Svensson
Commit 4ce2d3a6 added the insertion of a single bit into binary AVP data to induce an encode error in the case of a header length that pointed past the available bytes: a 5014 = DIAMETER_INVALID_AVP_LENGTH error. Commit 838856b fixed this for stringish Diameter types, but both commits neglected the case in which the offending AVP isn't known to the dictionary in question. Unless the AVP was regarded as erroneous for other reasons (eg. an M-bit resulting in 5001) it would be happily be packed into an 'AVP' field. If it was regarded as an error, the record could be passed back to diameter_codec:pack_avp/1, and if the record contained header data then there was no clause to deal with the unpleasantry. Deal with it by having the dictionary module strip the extra bit and flag the AVP as 5014, and by having diameter_codec handle any extra bit coming from an dictionary compiled against an old diameter_gen. An old dictionary won't detect 5014 however, so dictionaries should be recompiled. Change most of the guards in diameter_codec from is_bitstring/1 to is_binary/1. What's being passed to the decode functions are binaries received other the network. The only case in which a non-binary bitstring is when we've placed an extra bit there ourselves. (Modulo someone doing something they shouldn't.)
2014-05-26Add testcases that send unknown AVPs with a bad AVP LengthAnders Svensson
In particular, a length that points past the end of the message. This goes undetected there is some other problem with the AVP (eg. M-bit), which is a problem we're about to fix.
2014-05-26Simplify example serverAnders Svensson
In particular, remove the unnecessary list-or-record answer.
2014-05-26Make example server answer unsupported requests with 3001Anders Svensson
As it should. The previous discard (surely) pre-dated being able to return {answer_message, 3001} from a handle_request callback.
2014-05-26Make example code quietAnders Svensson
The output could make it impossible to use the shell. Counters returned diameter:service_info/2 can be used to check for expected happenings.