aboutsummaryrefslogtreecommitdiffstats
path: root/lib
AgeCommit message (Collapse)Author
2016-09-12ssl: Add documentation of bypass_pem_cache application environment configurationIngela Anderton Andin
2016-09-02ssl: Add new benchmarks to skip file for normal testingIngela Anderton Andin
2016-08-31Adding PEM cache bypass benchmark entriesFred Hebert
The benchmarks run through the local node only, as an attempt to show more potential contention on certificate usage.
2016-08-22Fixing CRL searching in cache bypassFred Hebert
2016-08-19Add option to bypass SSL PEM cacheFred Hebert
The current SSL implementation has a PEM cache running through the ssl manager process, whose primary role is caching CA chains from files on disk. This is intended as a way to save on disk operation when the requested certificates are often the same, and those cache values are both time-bound and reference-counted. The code path also includes caching the Erlang-formatted certificate as decoded by the public_key application The same code path is used for DER-encoded certificates, which are passed in memory and do not require file access. These certificates are cached, but not reference-counted and also not shared across connections. For heavy usage of DER-encoded certificates, the PEM cache becomes a central bottleneck for a server, forcing the decoding of every one of them individually through a single critical process. It is also not clear if the cache remains useful for disk certificates in all cases. This commit adds a configuration variable for the ssl application (bypass_pem_cache = true | false) which allows to open files and decode certificates in the calling connection process rather than the manager. When this action takes place, the operations to cache and return data are replaced to strictly return data. To provide a transparent behaviour, the 'CacheDbRef' used to keep track of the certificates in the cache is replaced by the certificates itself, and all further lookup functions or folds can be done locally. This has proven under benchmark to more than triple the performance of the SSL application under load (once the session cache had also been disabled).
2016-08-17Merge branch 'maint-19' into maintLukas Larsson
* maint-19: Updated OTP version Prepare release erts: Make sure to flush potential exit message
2016-08-16Prepare releaseErlang/OTP
2016-08-16erts: Make sure to flush potential exit messageLukas Larsson
2016-08-12Merge branch 'bjorn/compiler/ambiguous_catch_try_state/ERL-209/OTP-13804' ↵Björn Gustavsson
into maint * bjorn/compiler/ambiguous_catch_try_state/ERL-209/OTP-13804: [ERL-209] Fix ambiguous_catch_try_state inconsistency error
2016-08-12Merge branch 'bjorn/asn1/support-parallel-build/OTP-13624' into maintBjörn Gustavsson
* bjorn/asn1/support-parallel-build/OTP-13624: asn1_test_lib: Compile ASN.1 modules in parallel Support 'make -j' when compiling ASN.1 modules
2016-08-12asn1_test_lib: Compile ASN.1 modules in parallelBjörn Gustavsson
Test that the changes in the previous commit allows us to compile ASN.1 modules in parallel.
2016-08-12Support 'make -j' when compiling ASN.1 modulesBjörn Gustavsson
When attempting to build multiple ASN.1 modules in parallel (e.g. by running 'make -j'), the ASN.1 compiler could crash because the names of the .asn1db files clashed. For example, if A.asn1 and B.asn1 both import from C.asn1, the compiler would write a C.asn1db file when compiling A.asn1 and when compiling B.asn1. We can avoid this problem if the compiler only writes the module's own .asn1db file. That is, when compiling A.asn1, the compiler would only write A.asn1db, not C.asn1db. Also, make sure that we make the write atomic by first writing to a temporary file that is then renamed.
2016-08-12Merge branch 'lukas/erts/fix_init_stop_code_load_race/OTP-13802' into maintLukas Larsson
* lukas/erts/fix_init_stop_code_load_race/OTP-13802: erts/kernel: Fix code loading deadlock during init:stop
2016-08-12erts/kernel: Fix code loading deadlock during init:stopLukas Larsson
When init:stop is called it walks the application hierarchy and terminates each process. Some of these processes may do something while terminating and sometimes that something needs to load some new code in order to work. When this happens the code_server could just be in the process of terminating or the erl_prim_loader could be active. In both these cases the request to load the new code would cause a deadlock in the termination of the system. This commit fixes this by init rejecting attempts to load new code when init:stop has been called and fixing a termination race in the code_server. This however means that the process that tried to do something when told to terminate (for instance logging that it is terminating) will crash instead of loading the code.
2016-08-12Merge branch 'binarin/even-more-absolute-paths/PR-1103/OTP-13800' into maintLukas Larsson
* binarin/even-more-absolute-paths/PR-1103/OTP-13800: Use perl discovered by configure Don't make assumptions about build tools paths
2016-08-11[ERL-209] Fix ambiguous_catch_try_state inconsistency errorBjörn Gustavsson
It is not safe to share code between 'catch' blocks.
2016-08-09ssl: Conform to dialyzer specIngela Anderton Andin
2016-08-09Merge branch 'maint-19' into maintLukas Larsson
Conflicts: lib/ssl/src/ssl.appup.src
2016-08-08Prepare releaseErlang/OTP
2016-08-08Merge branch 'lukas/kernel/fix_os_cmd_background_compat/OTP-13741' into maint-19Erlang/OTP
* lukas/kernel/fix_os_cmd_background_compat/OTP-13741: kernel: Use ^D as eot for os:cmd on unix platforms
2016-08-08Merge branch 'raimo/ssl/version-selection/maint-19/OTP-13753' into maint-19Erlang/OTP
* raimo/ssl/version-selection/maint-19/OTP-13753: Improve version selection
2016-08-08kernel: Use ^D as eot for os:cmd on unix platformsLukas Larsson
This is needed as doing only an 'exit' will only exit the program, but any children started in the program that have stdout/stderr still open will keep the port open until they terminate. i.e. os:cmd("while true; do echo sleep 1; sleep 1; done&"). would block os:cmd forever because the while loop keeps its copies of stdout/stderr open forever. It could be argued that this is correct behaviour, and it is the way it works on windows, but changing this breaks backwards compatability for os:cmd which is not acceptable.
2016-08-08inets: Prepare for releaseIngela Anderton Andin
2016-08-08inets: Fix typo in docIngela Anderton Andin
2016-08-08inets: Add mod_esi test for PUTRaimo Niskanen
2016-08-08inets: Unify mod_esi "PUT" callback inputRaimo Niskanen
Change it to { Input :: string() | undefined, Body :: string() }
2016-08-08inets: Add mod_esi support for PUT AND DELETEIngela Anderton Andin
2016-08-08Merge branch 'duncaen/crypto/fix-algo_cipher-array-size/PR-1140/OTP-13789' ↵Raimo Niskanen
into maint * duncaen/crypto/fix-algo_cipher-array-size/PR-1140/OTP-13789: Fix segfault in crypto by increasing algo_cipher array
2016-08-05Merge branch 'bjorn/compiler/not_live/ERL-202/OTP-13780' into maintBjörn Gustavsson
* bjorn/compiler/not_live/ERL-202/OTP-13780: beam_block: Fix potentially unsafe optimization in move_allocates/1
2016-08-05beam_block: Fix potentially unsafe optimization in move_allocates/1Björn Gustavsson
beam_block has an optimization that only is safe when it is applied immediately after code generation. That is pointed out in a comment: NOTE: Moving allocation instructions is only safe because it is done immediately after code generation so that we KNOW that if {x,X} is initialized, all x registers with lower numbers are also initialized. That assumption may not be true after other optimizations, such as the beam_utils:live_opt/1 optimization. The new beam_reorder pass added in OTP 19 runs before beam_block. Therefore, the optimization is potentially unsafe. The optimization is also unsafe if compilation is started from assembly code in a .S file. Rewrite the optimization to make it safe. See the newly added comment for details. ERL-202
2016-08-05Merge branch 'elbrujohalcon/dialyzer/fix-spec/PR-1134/OTP-13786' into maintBjörn Gustavsson
* elbrujohalcon/dialyzer/fix-spec/PR-1134/OTP-13786: Improve format_warning/1 spec
2016-08-04Merge branch 'ellbee/odbc/configure-OS-X-El-Capitan/PR-1137/OTP-13781' into ↵Raimo Niskanen
maint * ellbee/odbc/configure-OS-X-El-Capitan/PR-1137/OTP-13781: Make ODBC configure handle OS X El Capitan
2016-08-03Fix segfault in crypto by increasing algo_cipher arrayDuncaen
2016-08-02Merge branch 'efine/inets/validate-inet6fb4/ERL-200/PR-1132/OTP-13776' into ↵Raimo Niskanen
maint * efine/inets/validate-inet6fb4/ERL-200/PR-1132/OTP-13776: Test inet6fb4 in basic suite Actually verify result of testcase Fix inets_sup_SUITE for local tests Add test for inet6fb4 validation Fix httpd_conf:validate_properties/1 for ipfamily
2016-08-01Merge branch 'comtihon/fprof/fix-gc-tags/PR-1136/OTP-13778' into maintBjörn-Egil Dahlberg
* comtihon/fprof/fix-gc-tags/PR-1136/OTP-13778: fix gc_start\end bug
2016-08-01Merge branch 'raimo/SCTP-socket-stats/ERL-102/OTP-13773' into maintRaimo Niskanen
* raimo/SCTP-socket-stats/ERL-102/OTP-13773: Fix SCTP send stats in inet_drv Test inet:getstat/1 dead for SCTP send Fix test suite compilation warnings
2016-08-01Test inet6fb4 in basic suiteRaimo Niskanen
2016-07-29Make ODBC configure handle OS X El CapitanLee Bannard
Change ODBC configure.in script to recognize OS X El Capitan (Darwin v15.x)
2016-07-29Actually verify result of testcaseRaimo Niskanen
2016-07-29Fix inets_sup_SUITE for local testsRaimo Niskanen
2016-07-29fix gc_start\end bugTihon
2016-07-28Add test for inet6fb4 validationEdwin Fine
2016-07-28Test inet:getstat/1 dead for SCTP sendRaimo Niskanen
2016-07-28Fix test suite compilation warningsRaimo Niskanen
2016-07-26Improve format_warning/1 specBrujo Benavides
Let it handle `dial_warning()` input as well, to match what `format_warning/2` expects.
2016-07-26Merge branch 'okumin/kernel/remove-duplicated-line/PR-1119/OTP-13771' into maintBjörn-Egil Dahlberg
* okumin/kernel/remove-duplicated-line/PR-1119/OTP-13771: Remove a duplicated pattern matching in erl_epmd.erl
2016-07-26Merge branch 'lemenkov/kernel/fix-register_ipv6_epmd/PR-1129/OTP-13770' into ↵Björn-Egil Dahlberg
maint * lemenkov/kernel/fix-register_ipv6_epmd/PR-1129/OTP-13770: Respect -proto_dist switch while connection to EPMD
2016-07-25Merge branch 'maint-18' into maintRaimo Niskanen
Conflicts: OTP_VERSION erts/doc/src/notes.xml erts/vsn.mk lib/common_test/doc/src/notes.xml lib/common_test/vsn.mk lib/ssl/doc/src/notes.xml lib/ssl/src/ssl.appup.src lib/ssl/vsn.mk lib/stdlib/test/ets_SUITE.erl otp_versions.table
2016-07-24Fix httpd_conf:validate_properties/1 for ipfamilyEdwin Fine
inets:start/2 fails when using the legacy option inet6fb4 with a configuration proplist. It is not translated to inet as documented. This breaks existing code that relies on the documented behavior. This commit fixes the issue by translating inet6fb4 everywhere it is encountered in httpd_conf:validate_properties/1. From inets documentation (http://erlang.org/doc/man/httpd.html): {ipfamily, inet | inet6} Default is inet, legacy option inet6fb4 no longer makes sense and will be translated to inet. Fixes ERL-200.
2016-07-23Prepare releaseErlang/OTP