aboutsummaryrefslogtreecommitdiffstats
path: root/lib
AgeCommit message (Collapse)Author
2015-09-10Update appup for 18.1Anders Svensson
OTP-12947 strict_mbit service_opt() OTP-12969 diameter_watchdog function_clause No load order requirements.
2015-08-14Fix broken release notesAnders Svensson
Broken in the parent commit.
2015-08-13Merge branch 'maint-17' into maintAnders Svensson
The diffs are all about adapting to the OTP 18 time interface. The code was previously backwards compatible, falling back on the erlang:now/0 if erlang:monotonic_time/0 is unavailable, but this was seen to be a bad thing in commit 9c0f2f2c. Use of erlang:now/0 is now removed.
2015-08-13Merge branch 'sstrigler/fix-port-timeout' into maintZandra Hird
OTP-12935 * sstrigler/fix-port-timeout: add test for odbc port_timeout add doc for odbc port_timeout introduce odbc port_timeout
2015-08-13Update release notesErlang/OTP
2015-08-13Merge branch 'anders/diameter/17.5.6.3/OTP-12927' into maint-17Erlang/OTP
* anders/diameter/17.5.6.3/OTP-12927: vsn -> 1.9.2.1 Update appup for 17.5.6.3
2015-08-13Merge branch 'anders/diameter/17/time/OTP-12926' into maint-17Erlang/OTP
* anders/diameter/17/time/OTP-12926: Simplify time manipulation Remove use of monotonic time in pre-18 code Remove unnecessary redefinition of erlang:max/2
2015-08-13Merge branch 'anders/diameter/grouped_errors/OTP-12930' into maint-17Erlang/OTP
* anders/diameter/grouped_errors/OTP-12930: Fix decode of Grouped AVPs containing errors Simplify logic Simplify logic
2015-08-13Merge branch 'anders/diameter/transport/OTP-12929' into maint-17Erlang/OTP
* anders/diameter/transport/OTP-12929: Fix start order of alternate transports Log discarded answers
2015-08-13Merge branch 'anders/diameter/lcnt/OTP-12912' into maint-17Erlang/OTP
* anders/diameter/lcnt/OTP-12912: Make ets diameter_stats a set Remove unnecessary sorting in stats suite Set ets {write_concurrency, true} on diameter_stats Don't start watchdog timers unnecessarily Remove unnecessary erlang:monitor/2 qualification Add missing watchdog suite clause
2015-08-13Merge branch 'anders/diameter/caseless/OTP-12902' into maint-17Erlang/OTP
* anders/diameter/caseless/OTP-12902: Match allowable peer addresses case insensitively Replace calls to module inet_parse to equivalents in inet
2015-08-13Merge branch 'anders/diameter/grouped_decode/OTP-12879' into maint-17Erlang/OTP
* anders/diameter/grouped_decode/OTP-12879: Fix relay encode of decoded diameter_avp lists
2015-08-13Merge branch 'anders/diameter/decode/OTP-12891' into maint-17Erlang/OTP
* anders/diameter/decode/OTP-12891: Don't compute AVP list length unnecessarily at AVP decode
2015-08-13Merge branch 'anders/diameter/decode/OTP-12871' into maint-17Erlang/OTP
* anders/diameter/decode/OTP-12871: Don't traverse errors list unnecessarily when detecting missing AVPs Don't flag AVP as missing as a consequence of decode error Correct inaccurate doc Truncate potentially large terms passed to diameter_lib:log/4
2015-08-12Merge branch 'toraritte/patch-1' into maintZandra Hird
* toraritte/patch-1: Fix function reference (no first/2 in ets)
2015-08-12Merge branch 'ericmj/patch-1' into maintZandra Hird
* ericmj/patch-1: Fix formatting of depth option
2015-08-07Make ets diameter_stats a setAnders Svensson
There's no need for it to be ordered, and the ordering has been seen to have an unexpectedly negative impact on performance in some cases. Order when retrieving statistics instead, so as not to change the presentation in diameter:service_info/2.
2015-08-07Remove unnecessary sorting in stats suiteAnders Svensson
The ordering of (ets) diameter_stats (also unnecessary) ensures the sorting.
2015-08-05ssh: announce dh-group-exchangeHans Nilsson
2015-08-05ssh: document new options in doc/ssh.xmlHans Nilsson
2015-08-05ssh: more dh_gex test casesHans Nilsson
2015-08-05ssh: options 'dh_gex_groups' and 'dh_gex_limits'Hans Nilsson
2015-08-05ssh: diffie-hellman-group14-sha1Hans Nilsson
2015-08-05Simplify time manipulationAnders Svensson
By doing away with more wrapping that the parent commit started to remove.
2015-08-05Remove use of monotonic time in pre-18 codeAnders Svensson
This has been seen to be a bottleneck at high load: each undef results in a loop out to the code server. Originally implemented as suggested in the erts user's guide, in commits e6d19a18 and d4386254.
2015-08-05vsn -> 1.9.2.1Anders Svensson
2015-08-05Update appup for 17.5.6.3Anders Svensson
OTP-12871: 5005 decode OTP-12791: decode performance OTP-12879: grouped decode OTP-12902: caseless address match OTP-12912: fewer timers OTP-12926: pre-18 time diameter_lib must be loaded after modules calling its time-related functions (that have been removed).
2015-08-05Fix start order of alternate transportsAnders Svensson
A transport configured with diameter:add_transport/2 can be passed multiple transport_module/transport_config tuples in order to specify alternate configuration, modules being attempted in order until one succeeds. This is primarily for the connecting case, to allow a transport to be configured to first attempt connection over SCTP, and then TCP in case SCTP fails, with configuration like that documented: {transport_module, diameter_sctp}, {transport_config, [...], 5000}, {transport_module, diameter_tcp}, {transport_config, [...]} If the options are the same in both cases, another possibility would be configuration like this, which attaches the same transport_config to both modules: {transport_module, diameter_sctp}, {transport_module, diameter_tcp}, {transport_config, [...], 5000}, However, in this case the start order was reversed relative to the documented order: first tcp, then sctp. This commit restores the intended order.
2015-08-05Log discarded answersAnders Svensson
To diameter_lib:log/4, which was last motivated in commit 39acfdb0.
2015-08-04Remove unnecessary redefinition of erlang:max/2Anders Svensson
The function already operates on arbitrary terms.
2015-08-04Fix relay encode of decoded diameter_avp listsAnders Svensson
Commit c74b593a fixed the problem that a decoded deep diameter_avp list couldn't be encoded, but did so in the wrong way: there's no need to reencode component AVPs since the Grouped AVP itself already contains the encoded binary. The blunder caused diameter_codec:pack_avp/1 to fail if the first element of the AVP list to be encoded was itself a list. Thanks to Andrzej TrawiƄski for reporting the problem.
2015-08-04Match allowable peer addresses case insensitivelyAnders Svensson
Both diameter_tcp and diameter_sctp can be configured with one or more IP addresses from which connections should be accepted (an 'accept' tuple), specified either as a tuple-valued address or as a regular expression. In the latter case, peer addresses are mapped to string using inet:ntoa/1 and the result matched against the regexp. Since (ipv6) addresses are case insensitive, this should also be the case with the match, but was not.
2015-08-04Replace calls to module inet_parse to equivalents in inetAnders Svensson
Commits b563c796 (R16B) and 0fad6449 (R16B02) added parse_address/1 and ntoa/1 to module inet, providing documented alternatives to address/1 and ntoa/1 in the undocumented (save comments in inet(3)) inet_parse.
2015-08-04Don't compute AVP list length unnecessarily at AVP decodeAnders Svensson
This has had a hugely negative impact on performance when decoding messages containing many AVP: each decode of an AVP having variable arity computed the length of the list of previously decoded AVPs when checking that the allowed arity was not exceeded, even if the allowed arity was infinite, making for O(n^2) cost. Here are some execution times, for diameter_codec:decode/2 on a representative message with n integer AVPs in the Common application (on the host at hand): Before After ------- --------- n = 1K 5 ms 2 ms n = 10K 500 ms 25 ms n = 100K 75 sec 225 ms n = 1M 2.6 sec Note the nearly linear increase following the change. Remove the dire documentation warning for incoming_maxlen as a consequence. It can still be useful to set, but not doing so won't have the same consequences as previously.
2015-08-04Don't traverse errors list unnecessarily when detecting missing AVPsAnders Svensson
Since the list can potentially be long.
2015-08-04Don't flag AVP as missing as a consequence of decode errorAnders Svensson
The decode of an incoming Diameter message uses the record representation to determine whether or not an AVP has been received with the expected arity, the number of AVPs in each field following decode being compared with the arity specified in the message grammar. The problem with this is that decode failure isn't reflected in the record representation, so that an AVP can be appended to the errors field of a diameter_packet record despite an entry for the same AVP already existing. This isn't a fault as much as a misleading error indication, but now only append AVPs that aren't already represented.
2015-08-04Correct inaccurate docAnders Svensson
The warning report was removed in commit 00584303.
2015-08-04Truncate potentially large terms passed to diameter_lib:log/4Anders Svensson
Last visited in commit 00584303.
2015-08-04Set ets {write_concurrency, true} on diameter_statsAnders Svensson
lcnt:inspect/1 recently showed this: lock id #tries collisions [%] time [us] ----- --- ------- --------------- ---------- db_tab diameter_stats 932920 92.9326 330332554
2015-08-03ssh: added more groups for gexHans Nilsson
2015-08-03ssh: rm ssh_math and use crypto:compute_key insteadHans Nilsson
2015-08-03ssh: filter algs unknown to crypto (except pk)Hans Nilsson
2015-08-03ssh: add test groupHans Nilsson
2015-08-03ssh: Add experimental 'diffie-hellman-group-exchange-sha256 supportHans Nilsson
DO NOT USE IN PRODUCTION!!! It is not enabled by default, but may be enabled with the option {preferred_algorithms, [{kex, ['diffie-hellman-group-exchange-sha256']}]}
2015-08-03ssh: Repair/add experimental diffie-hellman-group-exchange-sha1 supportHans Nilsson
DO NOT USE IN PRODUCTION!!! This is a bug fixing of the previously partly impelmented kex algorithm. There are more things to do, for example genrate/select better g,p pair obeying the min||n||max request. It is not enabled by default, but may be enabled with the option {preferred_algorithms, [{kex, ['diffie-hellman-group-exchange-sha1']}]}
2015-07-19Don't start watchdog timers unnecessarilyAnders Svensson
In particular, restart the timer with each incoming Diameter message, only when the previous timer has expired. Doing so has been seen to result in high lock contention at load, as in the example below: (diameter@test)9> lcnt:conflicts([{print, [name, tries, ratio, time]}]). lock #tries collisions [%] time [us] ----- ------- --------------- ---------- bif_timers 7844528 99.4729 1394434884 db_tab 17240988 1.7947 6286664 timeofday 7358692 5.6729 1399624 proc_link 4814938 2.2736 482985 drv_ev_state 2324012 0.5951 98920 run_queue 21768213 0.2091 63516 pollset 1190174 1.7170 42499 pix_lock 1956 2.5562 39770 make_ref 4697067 0.3669 20211 proc_msgq 9475944 0.0295 5200 timer_wheel 5325966 0.0568 2654 proc_main 10005332 2.8190 1079 pollset_rm_list 59768 1.7752 480
2015-07-19Remove unnecessary erlang:monitor/2 qualificationAnders Svensson
The function has been auto-exported since R14B.
2015-07-19Add missing watchdog suite clauseAnders Svensson
The suite pretends to be gen_tcp-ish in configuring itself to diameter_tcp. The function close/1 can be called as a result.
2015-07-16inets: cancel for handler with no requestsKirilll Zaborsky
httpc_handler should react properly to cancel requests even when the request to be cancelled was already finished but httpc_manager did not get notified about that yet
2015-07-14Fix function reference (no first/2 in ets)Attila Gulyas