aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2018-07-31Merge branch 'maint'Lukas Larsson
2018-07-31tomas-abrahamsson/dialyzer-syntax-tools/PR-1888/OTP-15207Lukas Larsson
Fix spec for erl_syntax_lib:analyze_type_application/1
2018-07-31kernel: Fix checksum of zlib test documentLukas Larsson
The zipdoc file has to have the same contents as zipdoc.zip otherwise testcases fail. This was broken in 37c11cda19bd90.
2018-07-30erts: Limit the automatic max buffer for UDP to 2^16Lukas Larsson
There is no reason to have a larger buffer than this as the recvmsg call will never return more data. OTP-15206
2018-07-30erts: Handle EMFILE errors in forker_driver for writeLukas Larsson
Before this change, if a write to the uds failed due to EMFILE to ETOOMANYREFS the entire vm would crash. This change makes it so that an SIGCHLD is simulated to that the error is propagated to the user instead of terminating the VM.
2018-07-30Merge branch 'maint'Lukas Larsson
2018-07-30Merge branch 'lukas/erts/win_break_poll_thread_fix/OTP-15205' into maintLukas Larsson
* lukas/erts/win_break_poll_thread_fix/OTP-15205: erts: Fix bug where break would not trigger on windows
2018-07-30Merge pull request #1891 from ↵Raimo Niskanen
RaimoNiskanen/raimo/can_not-should-mostly-be-cannot OTP-14282 'can not' should mostly be 'cannot'
2018-07-30erl_alloc: align ErtsAllocatorState_tMikael Pettersson
2018-07-27Change "can not" into "cannot"Raimo Niskanen
I did not find any legitimate use of "can not", however skipped changing e.g RFCs archived in the source tree.
2018-07-27Remove newline between can and notRaimo Niskanen
After this whitespace modification there should be no "can not"s separated by a newline in the entire OTP repository, so to find them all a simple git grep will do just fine.
2018-07-26Update httpc_manager.erlPeter Saxton
2018-07-26Merge branch 'maint'John Högberg
2018-07-26Merge branch 'maint-21' into maintJohn Högberg
2018-07-25Do not allocate a new map when the value is the sameJose Valim & Michal Muskala
This patch optimizes map operations to not allocate new maps when the key is being replaced by the exact same value in memory. Imagine this very common idiom: Map#{key := compute_new_value(Value, Condition)} where: compute_new_x(X, true) -> X + 1; compute_new_x(X, false) -> X; In many cases, we are not changing the value in `Key`, however the code prior to this patch would still allocate a new array for the map values. This optimization changes this. The cost of optimization is minimum, as in the worst case scenario it only adds a pointer comparison and boolean check. The major benefit is reducing the GC pressure by avoiding allocating data. Next we list the operations we have changed alongside the benchmark results. The benchmarks basically create a map and perform the same operations, roughly 20000 times, once replacing the key with the same value, and another with a different value. * Map#{Key := Value} For a map with 4 keys, replacing the fourth key 20000 times went from 718us to 539us. For a map with 8 keys, replacing the fourth key 20000 times went from 976us to 555us. * maps:update/3 For a map with 4 keys, replacing the fourth key 20000 times went from 673us to 575us. For a map with 8 keys, replacing the fourth key 20000 times went from 827us to 585us. * maps:put/3 For a map with 4 keys, replacing the fourth key 20000 times went from 763us to 553us. For a map with 8 keys, replacing the fourth key 20000 times went from 788us to 561us. Note that we have ported some optimizations found in maps:update/3 to maps:put/3 while creating this patch.
2018-07-25Merge pull request #1886 from michalmuskala/mm/maps-refactorJohn Högberg
Refactor maps.erl
2018-07-24Merge branch 'peterdmv/ssl/version_downgrade_protection/OTP-15189'Péter Dimitrov
* peterdmv/ssl/version_downgrade_protection/OTP-15189: ssl: Implement downgrade protection mechanism (TLS 1.3) Change-Id: I29a281c1278509608fdea9b0346ad91c62f886a8
2018-07-24Merge branch 'maint'John Högberg
* maint: Fix bad merge of otp_versions.table
2018-07-24Fix bad merge of otp_versions.tableJohn Högberg
2018-07-24Merge branch 'maint'John Högberg
* maint: Fix typo in xmerl_scan:string/1 Updated OTP version Prepare release ssl: Engine key trumps certfile option inets: Prepare for release inets: Improve error handling
2018-07-24Merge branch 'maint-20' into maintJohn Högberg
* maint-20: Updated OTP version Prepare release ssl: Engine key trumps certfile option inets: Prepare for release inets: Improve error handling
2018-07-23Refine types of functions in maps moduleMichał Muskała
This only touches functions that are not further manually enhanced in erl_bif_types. The hope is that this will allow dialyzer to discover more issues in code using maps.
2018-07-23Merge pull request #1887 from goofansu/xmerl/string-equiv-typo-fixLukas Larsson
Fix typo in xmerl_scan:string/1
2018-07-23Fix typo in xmerl_scan:string/1YeJun Su
2018-07-23erts: Fix configure check when cross-compilingFredrik Fornwall
Without the action-if-cross-compiling argument to AC_RUN_IFELSE the configure steps fails with the following message when cross-compiling: configure: error: cannot run test program while cross compiling
2018-07-20Fix spec for erl_syntax_lib:analyze_type_application/1Tomas Abrahamsson
2018-07-20erts: Add ERL_NIF_SELECT_CANCEL flag for enif_selectSverker Eriksson
to deselect read and/or writes without stop callback.
2018-07-20Merge branch 'peterdmv/ssl/version_extension_updates/OTP-15059'Péter Dimitrov
* peterdmv/ssl/version_extension_updates/OTP-15059: ssl: Fix handling of TLS record versions ssl: Update hello state (TLS 1.3) ssl: Implement 'supported_versions' extension ssl: Sort supported versions in handle_options ssl: Add experimental version 'tlsv1.3' Change-Id: I071d24242103cc066c5ee8154effc5ee01b04703
2018-07-20Merge branch 'maint'Sverker Eriksson
2018-07-20Merge PR-1881 from f3c0/mnesia-spec-fix OTP-15201Sverker Eriksson
fix type spec of mnesia:change_config
2018-07-20Merge PR-1878 from michalmuskala/mm/map-new-bif-2 OTP-15200Sverker Eriksson
maps:new/0 is no longer a BIF
2018-07-20Updated OTP versionOTP-20.3.8.3Erlang/OTP
2018-07-20Prepare releaseErlang/OTP
2018-07-20Merge branch ↵Erlang/OTP
'ingela/inets/error-handling-eisdir-mod-get/ERIERL-207/OTP-15192' into maint-20 * ingela/inets/error-handling-eisdir-mod-get/ERIERL-207/OTP-15192: inets: Prepare for release inets: Improve error handling
2018-07-20Merge branch 'sverker/crash-dump-crash-literals/OTP-15181' into maint-20Erlang/OTP
* sverker/crash-dump-crash-literals/OTP-15181: erts: Fix bug in crash dump generation
2018-07-20Merge branch 'sverker/ic/encode-long-buffer-overflow/OTP-15179' into maint-20Erlang/OTP
* sverker/ic/encode-long-buffer-overflow/OTP-15179: ic: Tweak tests to provoke more outbuf reallocations ic: Fix memory leak in oe_ei_decode_wstring ic: Fix correct external format sizes
2018-07-20Merge branch 'ingela/ssl/engine-vs-certfile/ERLERL-211/OTP-15193' into maint-20Erlang/OTP
* ingela/ssl/engine-vs-certfile/ERLERL-211/OTP-15193: ssl: Engine key trumps certfile option
2018-07-20Merge branch 'ingela/maint-20/chipher-suite-handling/OTP-15178' into maint-20Erlang/OTP
* ingela/maint-20/chipher-suite-handling/OTP-15178: ssl: Prepare for release ssl: Fix test case to only check relevant info for the test ssl: Correct connection_information on ECC-curves ssl: No cipher suite sign restriction in TLS-1.2 ssl: Add psk as anonymous key exchange in ssl_handshake:select_hashsign/5 ssl: anon test should use dh or ecdh anon keyexchange ssl: Correct key_usage check ssl: Fix ECDSA key decode clause ssl: Avoid hardcoding of cipher suites and fix ECDH suite handling ssl: Run all test case combinations ssl: Correct ECC suite and DTLS ECC handling
2018-07-20Merge branch 'sverker/kernel/silence-dialyzer/OTP-15170' into maint-20Erlang/OTP
* sverker/kernel/silence-dialyzer/OTP-15170: kernel: Silence dialyzer
2018-07-20Merge branch 'john/erts/inet-drv-race/OTP-15158/ERL-654' into maint-20Erlang/OTP
* john/erts/inet-drv-race/OTP-15158/ERL-654: Fix a race condition when generating async operation ids
2018-07-19Optimise functions in the maps moduleMichał Muskała
Using direct pattern matching on the map is more effient than pattern matching on the result of maps:find/2, because it avoids allocating the intermediate tuple.
2018-07-19ssl: Implement downgrade protection mechanism (TLS 1.3)Péter Dimitrov
If negotiating TLS 1.2, TLS 1.3 servers MUST set the last eight bytes of their Random value to the bytes: 44 4F 57 4E 47 52 44 01 If negotiating TLS 1.1 or below, TLS 1.3 servers MUST and TLS 1.2 servers SHOULD set the last eight bytes of their Random value to the bytes: 44 4F 57 4E 47 52 44 00 Change-Id: If35112f63f42a9af351f4ca9b1846fd3f5b08167
2018-07-19ssl: Fix handling of TLS record versionsPéter Dimitrov
- Introduce new macro ALL_TLS_RECORD_VERSIONS to decouple ALL_AVAILABLE_VERSIONS from the list of valid TLS record versions. It consists of versions allowed in TLSCiphertext.version (TLS 1.2 and prior) and TLSCiphertext.legacy_record_version (TLS 1.3). - TLS 1.3 sets TLSCiphertext.legacy_record_version to 0x0303 for all records generated other than an initial ClientHello, where it MAY also be 0x0301. - TLSPlaintext.legacy_record_version is ignored. Change-Id: Iabb1a954ab21f8be012e6460ae99ab533e31e123
2018-07-19ssl: Update hello state (TLS 1.3)Péter Dimitrov
Update hello state to handle the "supported_versions" extension defined by TLS 1.3: - If "supported_versions" is present in ServerHello, the client will aboirt the handshake with an "illegal_parameter" alert. - If "supported_versions" is present in ClientHello, the server will select a version from "supported_versions" and ignore ClientHello.legacy_version. If it only supports versions greater than "supported_versions", the server aborts the handshake with a "protocol_version" alert. - If "supported_versions" is absent in ClientHello, the server negotiates the minimum of ClientHello.legacy_version and TLS 1.2. If it only supports version greater than ClientHello.legacy_version, the server aborts the handshake with a "protocol_version" alert. Change-Id: I16eef15d77bf21209c6cc103546ddddca518483b
2018-07-19ssl: Implement 'supported_versions' extensionPéter Dimitrov
Change-Id: I8bb015e97ab4c317ef380123cf94350ed509c36f
2018-07-19ssl: Sort supported versions in handle_optionsPéter Dimitrov
Sort supported versions (highest first) in handle options to reflect the order expected by TLS 1.3. Change-Id: I06bb43ac81eeaca681c122d815a024c8444e3726
2018-07-19Merge branch 'maint'Sverker Eriksson
2018-07-19Merge PR-1882 from sverker/net_ticktime-docsSverker Eriksson
kernel: Improve net_ticktime docs
2018-07-19ssl: Add experimental version 'tlsv1.3'Péter Dimitrov
- Add 'tlsv1.3' to the available versions. It can be used to trigger experimental behavior while implementing TLS 1.3. - Add dummy clauses for handling version {3,4} of TLS. - Update ssl_logger to handle unknown versions of TLS. Change-Id: I564ffa47dca18b59f0dc16c9809dfd7adaf2d333
2018-07-19add more specific type spec for mnesia:change_configFerenc Böröczki