Age | Commit message (Collapse) | Author |
|
To be able to disable the relatively expensive check that the number of
AVPs received in a message or grouped AVP agrees with the dictionary in
question. The may well be easier for the user in handle_request/answer
callbacks, when digesting the received message, and in some cases may
not be important.
The check at encode can also be disabled, allowing messages that don't
agree with the dictionary in question to be sent, which can be useful in
test (at least).
|
|
As noted in the parent commit, the wrong AVPs were reported, being
counted from the back of the message instead of the front. Both 5005 and
5009 errors are now detected after the message is decoded.
|
|
Aka DIAMETER_AVP_OCCURS_TOO_MANY_TIMES.
This reveals a fault. The RFC says this:
A message was received that included an AVP that appeared more
often than permitted in the message definition. The Failed-AVP
AVP MUST be included and contain a copy of the first instance of
the offending AVP that exceeded the maximum number of occurrences.
The list of AVPs is reversed when diameter checks arities, so Failed-AVP
contains the wrong AVP, causing the new testcase to fail.
|
|
Stop counting when there can be no arity errors.
|
|
|
|
Since the number is now under 50K again. Also make testing of individual
groups or testcases easier.
|
|
Count as AVPs are encoded instead.
|
|
Use the same [MsgName | Avps] representation as for the list decode, but
with Avps a map instead of a AVP name/values list. As a result, don't
set the message/AVP name on an additional key in the map, which felt a
bit odd. Messages are [MsgName :: atom() | map()], Grouped AVPs are just
map().
Fix at least one problem in the traffic suite along the way: with
decode_format false, the own decode in to_map/2 didn't know whether or
not to decode strings, resulting on some failures.
|
|
For slightly better readability in the ct logs
|
|
To reduce the number of combinations tested, as in the parent commit.
|
|
To reduce the number of config combinations that are tested. The
encoding is the format in which messages are provided to diameter for
encode (to binary), and if there is any difference in the end result
then the peer will detect this at decode, independently of its encoding
format.
|
|
Undocumented, for transforming a map decode to record.
The record decode becomes more expensive the larger the number of AVPs
in the message definition in question, since the record is recreated
each time an AVP value is set in it. The map decode can potentially do
better.
|
|
{record_decode, map} is a bit too quirky.
|
|
One for each server decoding/encoding/container combination is overkill.
Just want a few from which one can be chosen in the pick_peer callback.
|
|
|
|
Instead of to lists, to simplify matching.
|
|
|
|
That is, decode to the same format that encode already accepts. Only a
message has its name at the head of the list since AVPs are already
name/value pairs.
|
|
With {record_decode, map}. The option name is arguably a bit misleading
now, but not too objectionable given that the encode/decode in question
has historically only been of records.
One advantage of the map decode is that the map only contains values for
those AVPs existing in the message or grouped AVP in question. The name
of the message or grouped AVP is stored in with key ':name', the leading
colon ensuring that the key isn't a diameter-name.
Decoding to maps makes the hrl files generated from dictionary files
largely irrelevant. There are value defines generated into these, but
they're typically so long as to be unusable.
|
|
To control whether or not messages and grouped AVPs are decoded to
records, in #diameter_packet.msg and #diameter_avp.value respectively.
The decode became unnecessary for diameter's needs in parent commit,
which decoupled it from the checking of AVP arities.
|
|
Instead of after, during the check that AVPs have sufficient arity.
This makes the arity checks independent of the record decode, which
will allow the latter to be made optional.
|
|
Most of the contents were moved to module diameter_gen in commit
205521d3.
|
|
Matched a byte instead of a bit, and increment/decrement wasn't
symmetric. Allow more requests since some requests timeout.
Bungled in commit 09089872.
|
|
Only exercising the standard dictionaries has missed some problems in
the past.
|
|
|
|
|
|
|
|
|
|
|
|
Print function names and registered names with ~tw.
Open dump file with encoding utf8.
|
|
This allows the use of ~ts/~tp/~tw in the formatting fun to
sys:handle_debug/4.
|
|
This allows the use of ~ts/~tp/~tw in calls to error_logger:format/2,
error_logger:error_msg/2 and error_logger:info_msg/2.
|
|
|
|
And use correct encoding when printing to files.
|
|
|
|
|
|
* anders/diameter/transport/ERL-332:
Fix sctp check in examples suite
|
|
To partake of the change in commit 69c5a741.
|
|
OTP-14337
* rickard/t2b-latin1-atom:
Update primary bootstrap
Update preloaded modules
Fix erl_interface tests
Introduce minor vsn 2 in term_to_binary/2
Revert "kernel: Try mend disk_log whitebox tests"
Revert "erts: Do not generate atoms on old latin1 external format"
|
|
|
|
|
|
Fix typo on line 872
|
|
|
|
|
|
* anders/diameter/20.0/OTP-14398:
vsn -> 2.0
Update appup for 20.0
|
|
* anders/diameter/capx_vs_dpr/OTP-14338:
Let candidate peers be passed to diameter:call/4
Comment on RFC ambiguity regarding application identifiers
Remove trailing whitespace
|
|
* anders/diameter/performance/OTP-14343: (50 commits)
Let spawn_opt config replace erlang:spawn_opt/2 for request processes
Move (most of) diameter_gen.hrl to diameter_gen.erl
Change signature associated with dictionary @custom_type/@codecs
Avoid sending answer terms between processes unnecessarily
Refactor handling of incoming requests
Restore diameter_codec:decode/2, update diameter_codec(3)
Add diameter_codec option ordered_encode
Restore undocumented Failed-AVP setting convenience
Fix/simplify setting of one Failed-AVP
Avoid recreating records
Avoid recreating records
Avoid recreating records
Avoid recreating records
Adapt test suites to modified encode/decode
Simplify diameter_caps construction
Don't compute URI defaults unnecessarily
Don't deconstruct {TPid, Caps} unnecessarily
Remove use of process dictionary in decode
Remove minor diameter_config bloat
Fix maximum AVP arity check
...
|
|
* anders/diameter/transport/ERL-332: (35 commits)
Capitulate on SCTP vs sparc-sun-solaris2.10
Remove obsolete traffic testcase
Fix dialyzer warnings
Remove client/server string decode from traffic suite
Add diameter_sctp option packet
Add diameter_sctp send/recv callbacks
Let diameter_tcp send/recv callbacks deal in diameter_packet
Randomly select traffic testcases
Exercise diameter_tcp message callbacks in traffic suite
Exercise diameter_{tcp,sctp} sender in traffic suite
Remove upgrade from diameter_traffic
Add diameter_tcp send/recv callbacks
Make diameter_{tcp,sctp} sender configurable
Remove upgrade from diameter_sctp; tweak diameter_tcp to match
Fix incomprehensible dialyzer warning
Simplify acks to transport processes
Strip throttling callbacks from diameter_tcp
Deal with (another) SCTP association id quirk on Solaris
Use binary:copy/2 when generating largish data in test suites
Deal with SCTP association id quirk on Solaris
...
|
|
* hasse/dialyzer/opt/OTP-14218:
dialyzer: Run more of analyses in subprocess
dialyzer: Do not use two records for PLTs
dialyzer: Improve compression of an ETS table
dialyzer: Minor optimizations
hipe: Remove 'undefined' from a record field's type
dialyzer: Warn about unused unknown types
hipe: Remove use of 'catch'
dialyzer: Correct a mistake
dialyzer: Rearrange some code to save memory
dialyzer: Optimize by avoiding some table lookups
hipe: Optimize contract decoration somewhat
hipe: Correct a typespec
|
|
* bjorn/compiler/fix-invalid-orddict:
v3_kernel: Keep orddicts sorted
sys_core_fold: Ensure that orddict keys are unique
|