Age | Commit message (Collapse) | Author |
|
|
|
* rb/ssl-transport-accept-fix:
Fix ssl:transport_accept/2 to return properly when socket is closed
OTP-8560 rb/ssl-transport-accept-fix
Fixed ssl:transport_accept/2 to return properly when socket is closed.
Thanks to Rory Byrne.
|
|
|
|
* ta/doc-fakefop:
Build placeholder PDF files if FOP is not found
OTP-8559 ta/doc-fakefop
If the 'fop' program (needed for building PDF files) cannot not be found,
it is now possible to build the HTML and man pages anyway (there will also
be dummy PDF files with no real content created).
|
|
* jb/pp_arm-imm-fix:
Modify pp_arm to decode imm8m constants
|
|
|
|
|
|
All Erlang files are now built by the test server instead of the test
directory Makefile.
Erlang files in data directories are now built by the test suites instead
of using prebuilt versions under version control.
Removed a number of obsolete guards.
|
|
A badmatch exception is thrown from ssl:transport_accept/2 when
ssl:close/1 is called on the socket. This fixes it to return
{error,closed} as expected.
|
|
Improve readability by decoding imm8m constants before printing them.
Signed-off-by: Johan Bengtsson <[email protected]>
|
|
* bg/ts_run:
ts_run: Don't run make:all/1 without a good reason
OTP-8556 bg/ts_run
|
|
|
|
* rb/ssl-opts-fix:
Fix verification of ssl client when fail_if_no_peer_cert
Fix mishandling of valid ssl options
OTP-8557 rb/ssl-opts-fix
|
|
If FOP is not found create PDF files with fakefop script.
Signed-off-by: Tuncer Ayaz <[email protected]>
|
|
The SSL handshake fails when an ssl server is configured with the
'fail_if_no_peer_cert' option and a valid client sends its certificate
as instructed. On the server-side ssl:ssl_accept/2 will return
{error,esslerrssl}, and it will send an "Unexpected Message" SSL Alert
(type 10) to the client.
|
|
Using certain valid options in the new ssl implementation results
in badarg exceptions. This happens for one documented option
'fail_if_no_peer_cert' and two undocumented options
'verify_client_once' and 'cb_info'.
|
|
|
|
ts:run() runs make:all/1 to facilitate interactive development
of a test suite - when you have changed your test suite, just
run ts:run() and it will rebuild the test suite for you.
Some test suites, such as for the public_key application,
are meant to be built once and for all by "make release_tests".
Re-building it later with make:all/1 will fail because
it references an internal .hrl file in the source directory
for public_key.
Running make:all/1 for the public_key test suite would not
cause any harm in most circumstances, because make:all/1 would
consider the *.beam files to be up-to-date and therefore not
actually try to re-build anything.
In 2c6d9b57ce4557a431bcf02565c3634a0ed7ca61, however, the
public_key test suite started to include "test_server.hrl"
using -include_lib() instead of -include(). That means that
"test_server.hrl" will be included from the Erlang/OTP
system being tested, and if that system has been built
*after* the test suite was built, the *.beam files in the
test suite will be out-of-date and make:all/1 will try to
re-build them (and fail).
To avoid this problem, modify ts:run() as follows:
* If the test suite has an Emakefile (such as the emulator test
suite), it is clearly meant to be (re-)built by make:all/1,
so we run make:all/1.
* If there is no Emakefile and no .beam files (such as in the
erl_interface test suite), it also seems clear that the
test suite is meant to be built by make:all/1. To make sure
that the test suite will also be *re-built*, create an
Emakefile that will re-build all *.erl files in the
directory for the test suite.
* If there is no Emakefile and there are *.beam files (such
as for the public_key test suite), we assume that the test
suite are not meant to re-built. However, there may be
generated *_SUITE_make.erl files (if there are *_SUITE_data
directories containg Makefile.src files, as in the xmerl
application). If there are any *_SUITE_make.erl files,
generate an Emakefile for compiling only those files
and run make:all/1. Otherwise, don't run make:all/1.
|
|
|
|
|
|
|
|
Now supports SQL_TYPE_TIMESTAMP on the format {{YY, MM, DD}, {HH, MM, SS}}.
Thanks to Juhani Ränkimies.
|
|
|
|
|
|
* au/crypto:
Add missing docs for crypto:md4/1
Add des_ecb_encrypt/2 and des_ecb_decrypt/2 to crypto module
OTP-8551 au/crypto
des_ecb_encrypt/2 and des_ecb_decrypt/2 has been added to the crypto
module. The crypto:md4/1 function has been documented.
|
|
|
|
* bg/compiler-inliner:
pmod_SUITE: Again test inlining parameterized modules
compiler tests: Cope with missing args in function_clause for native code
compiler tests: Compile a few more modules with 'inline'
Consistently rewrite an inlined function_clause exception to case_clause
compiler tests: Test the 'inline' option better
compiler: Suppress bs_context_to_binary/1 for a literal operand
compiler: Fix binary matching bug in the inliner
sys_core_inline: Don't generated multiple compiler_generated annos
OTP-8552 bg/compiler-inliner
Several problems in the inliner have been fixed.
|
|
The runtime system crashed if fewer logical processors were found than
reported by sysconf( SC_NPROCESSORS_CONF).
|
|
The use of mmap() was unnecessarily disabled when cross compiling.
The configure arguments --with-ssl, and --with-odbc refused to accept
libraries outside of $erl_xcomp_sysroot when cross compiling for no good
reason.
The configure argument --with-odbc didn't handle the value yes correct.
The configure arguments --with-odbc, and --without-odbc have also been
added to the configure help.
(Thanks to Steve Vinoski for reporting these issues)
|
|
hence not covered by test cases.
|
|
|
|
|
|
|
|
Unfortunately, commit 1e2ecf8c492b6d499880b8676e3c1fe0c5793103
removed all cond support except for two lines.
|
|
* mh/doc-inet-getopts:
Doc fix: inet:getopts/2 returns {ok, OptionValues}, not just OptionValues
|
|
* mh/doc-loose-lose:
Fix spelling: "loose" is not a verb
|
|
* se/decode_packet:
Fix erlang:decode_packet(httph_bin,..) to not return faulty header strings
OTP-8548 se/decode_packet
erlang:decode_packet(httph_bin,..) could return corrupt header strings or
even crash the VM. This has been fixed. It only happened on 32-bit VM if
the header name was unknown and between 16 and 20 characters long. Sockets
with simular packet option did not suffer from this bug.
|
|
* bd/mnesia-activity-subscription:
Add mnesia activity subscription message
|
|
A process that calls mnesia:subscribe(activity) will receive the message:
{mnesia_activity_event, ActivityID, complete}
when any activity that caused a change to a database has finished
committing its changes. This allows a subscriber to collect messages
already available through the mnesia:subscribe({table, ...}) system
to group them as completed transactions.
|
|
* dgud/wx-new-doxygen:
Added a non existing macro on windows.
Commit of the generated code with previous commit.
Fixed code generation from newer doxygen versions.
Whitespace fixes
OTP-8547 dgud/wx-new-doxygen
|
|
Commit 91de9d0670c6fe1cff08cefa6e1c396effba47b8 stopped testing
inlining of parameterized modules, because of a bug in the inliner.
|
|
Unrecognized Http header names was sometimes returned as corrupt
sub-binaries pointing to a stack allocated buffer. This only happened
on 32-bit VM if the header name was between 16 and 20 characters
long. It could in some cases lead to segmentation fault.
The solution was to avoid creating sub-binary if the returned string
was not part of the original binary.
|
|
|
|
|
|
"Lose" means not "not win", but "loose" means "not tight".
Change "loose" to "lose" where appropriate.
|
|
Native-compiled code generates a different stack trace for
function_clause exceptions - instead of the arguments for the
function, only the arity is reported. Accept missing arguments
if the test suite is native-compiled.
|
|
Since a function_clause exception in an inlined function will
be changed to a case_clause exception, we must test for both.
|
|
A function_clause exception is generated by jumping to a func_info/3
instruction at the beginning of the function. The x registers are
assumed to contain the arguments for the function. That means
that a func_info/3 instruction copied from another function
(or even from the same function if not at the top level) will
not work, so it must be replaced with an instruction that
generates a case_clause exception.
In Core Erlang, a func_info/3 instruction is represented as
a the primop match_fail({function_clause,Arg1,...ArgN}).
The current mechanism that is supposed to replace the
primop match_fail(function_clause) with match_fail(case_clause)
will fail to do that in the following circumstances:
1. If the inliner has inlined a function into itself.
Fix that by having the inliner clear the function_name annotations
on all match_fail primops in functions that are inlined. (To simplify
doing that, the annotation is now on the primop node itself and not on
the 'function_clause' atom inside it.)
2. If the inliner has rewritten the tuple node in the primop node
to a literal (when inlining a function call with literal arguments),
v3_kernel would not recognize the match_fail(function_clause) primop
and would not rewrite it. Fix it by making v3_kernel smarter.
Also simplify the "old" inliner (sys_core_inline) to only clear
the function_name annotations instead of rewriting function_clause
execptions to case_clause execptions itself.
|
|
Clone some test suites and compile them with the 'inline' option
to test inlining more thorughly.
|
|
The inliner can cause illegal uses of the bs_context_to_binary/1
instruction, such as:
bs_context_to_binary {literal,"string"}
or
bs_context_to_binary {integer,1}
Remove the bs_context_to_binary/1 instruction if the operand
is not a register (it is clearly not needed).
|