summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Updated OTP versionOTP-17.5.6.10maint-17Erlang/OTP2018-10-112-1/+2
|
* Prepare releaseErlang/OTP2018-10-113-1/+85
|
* Merge branch 'sverker/r16/binary_to_atom-utf8-crash/ERL-474/OTP-14590' into ↵Erlang/OTP2018-10-113-1/+7
|\ | | | | | | | | | | | | maint-17 * sverker/r16/binary_to_atom-utf8-crash/ERL-474/OTP-14590: erts: Fix crash in binary_to_atom/term for invalid utf8
| * erts: Fix crash in binary_to_atom/term for invalid utf8Sverker Eriksson2017-08-303-1/+7
| | | | | | | | | | such as a sub-binary, of a correct utf8 string, that ends in the middle of a character.
* | Merge branch 'sverker/big-bxor-bug/ERL-450/OTP-14514' into maint-17Erlang/OTP2018-10-113-3/+96
|\ \ | | | | | | | | | | | | * sverker/big-bxor-bug/ERL-450/OTP-14514: erts: Fix bug in bxor of a big negative number
| * | erts: Fix bug in bxor of a big negative numberSverker Eriksson2017-07-123-3/+96
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Wrong result for (X bsl WS) bxor Y. where X is any negative integer Y is any integer that does not require more words than X WS is erlang:system_info(wordsize) or larger Fix: The subtraction of 1 (for 2-complement conversion) must be carried along all the way to the last words.
* | | Merge branch 'sverker/bin2term-zlib-bug/ERL-340/OTP-14159' into maint-17Erlang/OTP2018-10-111-7/+18
|\ \ \ | | | | | | | | | | | | | | | | * sverker/bin2term-zlib-bug/ERL-340/OTP-14159: erts: Fix binary_to_term for compressed and zlib >= v1.2.9
| * | | erts: Fix binary_to_term for compressed and zlib >= v1.2.9Sverker Eriksson2017-01-231-7/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Problem: z_stream was incorrectly copied with memcpy which just happened to work with zlib < v1.2.9. Solution: Avoid copying z_stream.
* | | | Merge branch 'rickard/thr-prgr-unmanaged-delay-bug/OTP-13869' into maint-17Erlang/OTP2018-10-111-0/+1
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | * rickard/thr-prgr-unmanaged-delay-bug/OTP-13869: Fix erts_thr_progress_unmanaged_delay()
| * | | | Fix erts_thr_progress_unmanaged_delay()Rickard Green2016-09-051-0/+1
| | |/ / | |/| | | | | | | | | | | | | | | | | | | | | | Thread progress leader update did not cache current unmanaged index when waiting for unmanaged threads. This caused erts_thr_progress_unmanaged_delay() to stop working until a new leader took over.
* | | | Merge branch 'rickard/drv-send-term-thr-bug/OTP-13866' into maint-17Erlang/OTP2018-10-111-10/+17
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | * rickard/drv-send-term-thr-bug/OTP-13866: Fix thread calls to erl_drv_send_term()/erl_drv_output_term()
| * | | | Fix thread calls to erl_drv_send_term()/erl_drv_output_term()Rickard Green2016-09-051-10/+17
| |/ / /
* | | | Merge branch 'rickard/port-sig-dropped-fix/OTP-13424' into maint-17Erlang/OTP2018-10-111-1/+12
|\ \ \ \ | |/ / / |/| | | | | | | | | | | * rickard/port-sig-dropped-fix/OTP-13424: Fix implementation of dropped signal to port
| * | | Fix implementation of dropped signal to portRickard Green2016-03-181-1/+12
| | | |
* | | | Updated OTP versionOTP-17.5.6.9Erlang/OTP2016-03-102-1/+2
| | | |
* | | | Prepare releaseErlang/OTP2016-03-105-3/+70
| | | |
* | | | Merge branch 'anders/diameter/dialyzer/OTP-13400' into maint-17Erlang/OTP2016-03-102-9/+10
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | * anders/diameter/dialyzer/OTP-13400: Fix dialyzer warnings
| * | | | Fix dialyzer warningsAnders Svensson2016-03-072-11/+12
| | | | | | | | | | | | | | | | | | | | | | | | | Whether making record declarations unreadable to compensate for dialyzer's ignorance of match specs is worth it is truly debatable.
* | | | | Merge branch 'anders/diameter/17.5.6.9/OTP-13385' into maint-17Erlang/OTP2016-03-102-4/+8
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * anders/diameter/17.5.6.9/OTP-13385: vsn -> 1.9.2.4 Update appup for 17.5.6.9
| * | | | | vsn -> 1.9.2.4Anders Svensson2016-02-291-2/+2
| | | | | |
| * | | | | Update appup for 17.5.6.9Anders Svensson2016-02-291-2/+6
| |/ / / / | | | | | | | | | | | | | | | OTP-13342 remote watchdog transition to state SUSPECT
* | | | | Merge branch 'anders/diameter/retransmission/OTP-13342' into maint-17Erlang/OTP2016-03-102-7/+10
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * anders/diameter/retransmission/OTP-13342: Fix handling of shared peer connections in watchdog state SUSPECT Remove unnecessary parentheses Remove dead export
| * | | | | Fix handling of shared peer connections in watchdog state SUSPECTAnders Svensson2016-02-191-3/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A peer connection shared from a remote node was regarded as being available for peer selection (aka up) as long as its peer_fsm process was alive; that is, for the lifetime of the peer connection. In particular, it didn't take note of transitions into watchdog state SUSPECT, when the connection remains. As a result, retransmissions could select the same peer connection whose watchdog transition caused the retransmission. A service process now broadcasts a peer_down event just as it does a peer_up event. The fault predates the table rearrangements of commit 8fd4e5f4.
| * | | | | Remove unnecessary parenthesesAnders Svensson2016-02-191-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | Not needed as of commit 6c9cbd96.
| * | | | | Remove dead exportAnders Svensson2016-02-191-3/+2
| |/ / / / | | | | | | | | | | | | | | | | | | | | | | | | | The export of diameter_traffic:failover/1 happened with the creation of the module in commit e49e7acc, but was never needed since the calling code was also moved into diameter_traffic.
* | | | | Merge branch 'rickard/rq-state-bug/OTP-13298' into maint-17Erlang/OTP2016-03-101-1/+1
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | * rickard/rq-state-bug/OTP-13298: Fix bug causing run-queue mask to become inconsistent
| * | | | | Fix bug causing run-queue mask to become inconsistentRickard Green2016-02-041-1/+1
| |/ / / /
* | | | | Merge branch 'keynslug/fix_instant_hibernate_after' into maint-17Erlang/OTP2016-03-102-1/+39
|\ \ \ \ \ | |/ / / / |/| | | | | | | | | | | | | | * keynslug/fix_instant_hibernate_after: ssl: fix hibernate_after with short timeouts
| * | | | ssl: fix hibernate_after with short timeoutsAndrey Mayorov2016-02-092-1/+39
|/ / / / | | | | | | | | | | | | | | | | | | | | Too wide function clause was used in ssl_connection which led to ssl connection process crashes when `{hibernate_after, N}` with extremely small N was passed among other options to `ssl:connect`.
* | | | Updated OTP versionOTP-17.5.6.8Erlang/OTP2016-01-262-1/+2
| | | |
* | | | Update release notesErlang/OTP2016-01-261-0/+21
| | | |
* | | | Merge branch 'anders/diameter/17.5.6.8/OTP-13212' into maint-17Erlang/OTP2016-01-262-61/+9
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | * anders/diameter/17.5.6.8/OTP-13212: vsn -> 1.9.2.3 Update appup for 17.5.6.8
| * | | | vsn -> 1.9.2.3Anders Svensson2015-12-211-1/+1
| | | | |
| * | | | Update appup for 17.5.6.8Anders Svensson2015-12-211-60/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | OTP-13164 more efficient peer lists One module. Downgrade not supported.
* | | | | Merge branch 'anders/diameter/performance/OTP-13164' into maint-17Erlang/OTP2016-01-263-144/+379
|\ \ \ \ \ | |/ / / / |/| | | | | | | | | | | | | | | | | | | * anders/diameter/performance/OTP-13164: Make peer handling more efficient Remove unnecessary erlang:monitor/2 qualification
| * | | | Make peer handling more efficientAnders Svensson2015-12-213-142/+377
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Each service process maintains a dictionary of peers, mapping an application alias to a {pid(), #diameter_caps{}} list of connected peers. These lists are potentially large, peers were appended to the end of the list for no particular reason, and these long lists were constructed/deconstructed when filtering them for pick_peer callbacks. Many simultaneous outgoing request could then slow the VM to a crawl, with many scheduled processes mired in list manipulation. The pseudo-dicts are now replaced by plain ets tables. The reason for them was (once upon a time) to have an interface interchangeable with a plain dict for debugging purposes, but strict swapablity hasn't been the case for some time now, and in practice a swap has never taken place. Additional tables mapping Origin-Host/Realm have also been introduced, to minimize the size of the peers lists when peers are filtered on host/realm. For example, a filter like {any, [{all, [realm, host]}, realm]} is probably a very common case: preferring a Destination-Realm/Host match before falling back on Destination-Realm alone. This is now more efficiently (but not equivalently) expressed as {first, [{all, [realm, host]}, realm]} to stop the search when the best match is made, and extracts peers from host/realm tables instead of searching through the list of all peers supporting the application in question. The code to try and start with a lookup isn't exhaustive, and the 'any' filter is still as inefficient as previously.
| * | | | Remove unnecessary erlang:monitor/2 qualificationAnders Svensson2015-12-211-3/+3
|/ / / / | | | | | | | | | | | | See commit 862af31d.
* | | | Updated OTP versionOTP-17.5.6.7Erlang/OTP2015-12-202-1/+2
| | | |
* | | | Update release notesErlang/OTP2015-12-201-0/+52
| | | |
* | | | Merge branch 'anders/diameter/17.5.6.7/OTP-13211' into maint-17Erlang/OTP2015-12-203-41/+36
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * anders/diameter/17.5.6.7/OTP-13211: vsn -> 1.9.2.2 Update/fix appup for 17.5.6.7 Be resilient to diameter_service state upgrades
| * | | | vsn -> 1.9.2.2Anders Svensson2015-12-201-1/+1
| | | | |
| * | | | Update/fix appup for 17.5.6.7Anders Svensson2015-12-201-38/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | OTP-12947 strict_mbit OTP-12969 watchdog function_clause OTP-13137 request leak diameter_config (that allows the new option) should be loaded after the others. Anchor was missing from one regexp. Patches did not accumulate through older versions.
| * | | | Be resilient to diameter_service state upgradesAnders Svensson2015-12-201-2/+7
| | | | | | | | | | | | | | | | | | | | By not failing in code that looks up state: pick_peer and service_info.
* | | | | Merge branch 'anders/diameter/request_leak/OTP-13137' into maint-17Erlang/OTP2015-12-201-39/+38
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * anders/diameter/request_leak/OTP-13137: Fix request table leak at retransmission Fix request table leak at exit signal
| * | | | | Fix request table leak at retransmissionAnders Svensson2015-12-091-37/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In the case of retranmission, a prepare_retransmit callback could modify End-to-End and/or Hop-by-Hop identifiers so that the resulting diameter_request entry was not removed, since the removal was of entries with the identifiers of the original request. The chances someone doing this in practice are probably minimal.
| * | | | | Fix request table leak at exit signalAnders Svensson2015-12-091-12/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The storing of request records in the ets table diameter_request was wrapped in a try/after so that the latter would unconditionally remove written entries. The problem is that it didn't deal with the process exiting as a result of an exit signal, since this doesn't raise in an exception. Since the process in question applies callbacks to user code, we can potentially be linked to other process and exit as a result. Trapping exits changes the current behaviour of the process, so spawn a monitoring process that cleans up upon reception of 'DOWN'.
* | | | | | Merge branch 'anders/diameter/17/watchdog/OTP-12969' into maint-17Erlang/OTP2015-12-201-4/+4
|\ \ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | * anders/diameter/17/watchdog/OTP-12969: Fix watchdog function_clause
| * | | | | | Fix watchdog function_clauseAnders Svensson2015-09-071-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Commit 4f365c07 introduced the error on set_watchdog/2, as a consequence of timeout/1 returning stop, which only happens with accepting transports with {restrict_connections, false}.
* | | | | | | Merge branch 'anders/diameter/M-bit/OTP-12947' into maint-17Erlang/OTP2015-12-207-8/+65
|\ \ \ \ \ \ \ | |/ / / / / / | | | / / / / | |_|/ / / / |/| | | | | * anders/diameter/M-bit/OTP-12947: Add service_opt() strict_mbit
| * | | | | Add service_opt() strict_mbitAnders Svensson2015-08-257-8/+65
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There are differing opinions on whether or not reception of an arbitrary AVP setting the M-bit is an error. 1.3.4 of RFC 6733 says this about how an existing Diameter application may be modified: o The M-bit allows the sender to indicate to the receiver whether or not understanding the semantics of an AVP and its content is mandatory. If the M-bit is set by the sender and the receiver does not understand the AVP or the values carried within that AVP, then a failure is generated (see Section 7). It is the decision of the protocol designer when to develop a new Diameter application rather than extending Diameter in other ways. However, a new Diameter application MUST be created when one or more of the following criteria are met: M-bit Setting An AVP with the M-bit in the MUST column of the AVP flag table is added to an existing Command/Application. An AVP with the M-bit in the MAY column of the AVP flag table is added to an existing Command/Application. The point here is presumably interoperability: that the command grammar should specify explicitly what mandatory AVPs much be understood, and that anything more is an error. On the other hand, 3.2 says thus about command grammars: avp-name = avp-spec / "AVP" ; The string "AVP" stands for *any* arbitrary AVP ; Name, not otherwise listed in that Command Code ; definition. The inclusion of this string ; is recommended for all CCFs to allow for ; extensibility. This renders 1.3.4 pointless unless "*any* AVP" is qualified by "not setting the M-bit", since the sender can effectively violate 1.3.4 without this necessitating an error at the receiver. If clients add arbitrary AVPs setting the M-bit then request handling becomes more implementation-dependent. The current interpretation in diameter is strict: if a command grammar doesn't explicitly allow an AVP setting the M-bit then reception of such an AVP is regarded as an error. The strict_mbit option now allows this behaviour to be changed, false turning all responsibility for the M-bit over to the user.