Age | Commit message (Collapse) | Author |
|
|
|
* fredrik/ssh/ssh-internal-error/OTP-10731:
Fixed internal error on when client and server can not agree o which authmethod to use
|
|
* fredrik/ssh/port_in_use_error:
Fixed bug which lead to crash in startup of daemon, if port was in use
|
|
* ia/ssl/simplify-addition-of-keyexchange-algorithms/OTP-10709:
SSL: simplify server key encoding, decoding and signature handling
SSL: unify the different implementations signature check implementations
|
|
Remove filter mechanisms that made error messages backwards compatible
with old ssl but hid information about what actually happened.
This does not break the documented API however other reason
terms may be returned, so code that matches on the reason part of
{error, Reason} may fail.
|
|
* anders/diameter/length_error/OTP-10693:
More testcases in traffic suite
Test diameter_packet answers
Ensure correct setting of 3xxx result code
|
|
|
|
Search mode can be entered by pressing ctrl-r. Enter terms and press
ctrl-r again to search backwards, or ctrl-s to then search forward (if
you terminal doesn't eat up that one). Press enter to execute the line,
or use tab, arrow keys, or other control sequences (^D, ^K, etc.) to
exit search mode while remaining on the last found line. Exiting is also
possible by pressing the escape key twice.
The search mode is a simpler version of the one available in bash or
zsh shells.
This adds a few modes to the shell (search, on top of none and meta) in
group.erl for history search, and a few more in edlin.erl to change the
meaning of control sequences while searching.
|
|
|
|
This and record/list encode more systematically.
|
|
The following code:
check(<<"string">>, a1) ->
one;
check(_, a2) ->
two;
check(undefined, a3) ->
three.
produces an internal consistency failure:
check: function check/2+17:
Internal consistency check failed - please report this bug.
Instruction: {test,is_eq_exact,{f,7},[{x,0},{atom,undefined}]}
Error: {match_context,{x,0}}:
Actually, in the current implementation of the run-time system,
comparing a match context to an atom is safe, so I briefly considered
updating the beam_validator to let this code pass through. I
abandoned that approach because not all terms would be safe to
compare to a match context, and the implementation might change
in the future.
Therefore, fix this problem by not allowing any matching of non-variables
(in the argument position for binary being matched) following binary
matching. That solution is simple and safe, and since this kind of
code seems to be rare in practice, there is no need to pursue any
more compilicated solution.
Reported-by: Viktor Sovietov
|
|
|
|
A bad AVP Length (resulting in excess bytes from decode) but no other
errors caused the request to fail when attempting to set Result-Code.
A protocol error in combination with a 5xxx error caused the latter to
be set in an answer-message.
|
|
* nox/enable-silent-rules/OTP-10726:
Implement ./otp_build configure --enable-silent-rules
|
|
* egil/fix-LM_TRY_ENABLE_CFLAG:
Fix LM_TRY_ENABLE_CFLAG to use correct environment
|
|
|
|
|
|
* bjorn/kernel/undefined-function-handler/OTP-10617:
Teach error_handler to call '$handle_undefined_function'
|
|
* bjorn/remove-parameterized-modules/OTP-10616:
Remove support for parameterized modules
xref_SUITE: Don't test parameterized modules
shell_SUITE: Don't test parameterized modules
erl_expand_records_SUITE: Don't test parameterized modules
erl_eval: Don't test parameterized modules
|
|
|
|
|
|
* nox/rm-reverse-eta-conversion/OTP-10682:
Don't use fun references in cprof_SUITE
Make trace_local_SUITE work without the reverse eta conversion
Remove the reverse eta-conversion from v3_kernel
|
|
* nox/promote-inline_list_funcs/OTP-10690:
Raise a function_clause error with the right arguments when inlining
Properly guard against badly-typed arguments when inlining
Make inlined list functions fail with function_clause
Document compiler option 'inline_list_funcs'
Silence some wrong warnings triggered by inline_list_funcs
|
|
authmethod to use
|
|
Conflicts:
erts/vsn.mk
|
|
|
|
|
|
* bjorn/kernel/global_SUITE:
global_SUITE: Eliminate redundant registration of 'test_server' process
|
|
* ta/hipe/gitignore/OTP-10705:
Update .gitignore (lib/hipe/boot_ebin)
|
|
Running out and out_r one after another many times will copy one list
back and forth if another is empty. Change r2f and f2r to copy only half
of big list so such cases will happen more rarely
|
|
server key encoding depends to the negotiated key exchange. Before
the encoding was limited to diffie-hellman keys. This changes allows
to select the key structure to decode and verify. It also consolidates
the transport encoding of the parameters into one place.
|
|
ssl_handshake and ssl_connection where doing essentially the same when
checking a public key signature. This unify both into a single function
|
|
global_SUITE registers the name 'test_server' in the global registry
for what seems to be only historical reasons. Exactly how it happened
is lost in the mists of time, but I think the following is a reasonable
reconstruction:
* At one point in time, the test_server application started to do
a global registration of a 'test_server' process to support
embedded systems when the test_server application was run on both a
host and a target system.
* global_SUITE had to be modified to take the pre-existing
'test_server' registration into account.
* When Erlang/OTP switched to using common_test, global_SUITE was
modified to register the 'test_server' name itself in commit
8bd07f450816eaaae52d28740d89ead1f930cd02 (since the test_server
application does not register the 'test_server' name when run
under control of common_test).
To slightly reduce the size of global_SUITE, remove the redundant
registration and stop expecting 'test_server' to be registered.
|
|
* bjorn/remove-packages/OTP-10348:
compile: Remove vestiges of package support
Remove documentation about packages
|
|
* sal/get_env/OTP-10694:
Moved documentation in a separate entry
Removed obsolete ?line macro
Add application:get_key/3
|
|
Some file operations provided by the Erlang file module
didn't open the target file with all the file share flags.
This made some concurrent file operations against the
same file fail on Windows, while on other platforms such
as GNU/Linux or Mac OS X they succeed. The operations will
fail only if they're performed concurrently by different
threads (async IO threads or scheduler threads).
For example, one Erlang process does a file:delete/1 call
while another Erlang process is doing a filelib:file_size/1
call. This made the former process get an eacces error from
the file:delete/1 call. On GNU/Linux or Mac OS X the call would
succeed. Another example is if one Erlang process attempts to
open a file for reading while another one is in the middle of
a file:read_file_info/1 call (after it opened the file and
before it closed the file).
It's easy to verify that if a file is not open with all the
share flags, it's impossible for other threads (even if they
belong to the same OS process) to open the file while the
file is not closed by the first thread.
The following test program shows this:
#include <windows.h>
#include <iostream>
// Must be an existing file
//#define SHARE_FLAGS (FILE_SHARE_READ)
static DWORD WINAPI MyThreadFunction(LPVOID lpParam);
static char *lastError();
int main(int argc, char *argv[])
{
DWORD threadId;
HANDLE threadHandle, hFile;
hFile = CreateFile(FILENAME, GENERIC_READ, SHARE_FLAGS, NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile == INVALID_HANDLE_VALUE) {
std::cerr << "File open error from main: " <<
lastError() << std::endl;
return 1;
}
std::cout << "Main thread opened file successfully" << std::endl;
threadHandle = CreateThread(NULL, 0, MyThreadFunction, NULL, 0, &threadId);
if (threadHandle == INVALID_HANDLE_VALUE) {
std::cerr << "Thread create error from main: " <<
lastError() << std::endl;
return 1;
}
WaitForSingleObject(threadHandle, INFINITE);
CloseHandle(threadHandle);
CloseHandle(hFile);
return 0;
}
static DWORD WINAPI MyThreadFunction( LPVOID lpParam )
{
HANDLE hFile;
hFile = CreateFile(FILENAME, GENERIC_READ, SHARE_FLAGS, NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hFile == INVALID_HANDLE_VALUE) {
std::cerr << "File open error from second thread: " <<
lastError() << std::endl;
return 1;
}
std::cout << "Second thread opened file successfully" << std::endl;
CloseHandle(hFile);
return 0;
}
static char *lastError()
{
static char *buf = NULL;
DWORD dw = GetLastError();
if (buf != NULL) {
LocalFree((LPTSTR) &buf);
}
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL, dw, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
(LPTSTR) &buf, 0, NULL);
return buf;
}
Rnning this program with SHARE_FLAGS set to 0 (as efile_fileinfo()
does for e.g.), shows that the second thread is unable to open the
file:
C:\cygwin\home\fdmanana\tmp>touch foo.bar
C:\cygwin\home\fdmanana\tmp>threads_fopen_test.exe
Main thread opened file successfully
File open error from second thread: The process cannot access the
file because it is being used by another process.
Changing the program's SHARE_FLAGS to FILE_SHARE_READ, shows that
both threads are able to open the file:
C:\cygwin\home\fdmanana\tmp>touch foo.bar
C:\cygwin\home\fdmanana\tmp>threads_test.exe
Main thread opened file successfully
Second thread opened file successfully
Same logic applies to opening files for writing or deleting and
renaming files while they're open by some other thread that didn't
specify the flags FILE_SHARE_WRITE and FILE_SHARE_DELETE.
|
|
* mh/escript_emulator_flags_vs_shebang/OTP-10691:
escript to accept emulator arguments when script file has no shebang
|
|
* anders/diameter/application_id/OTP-10655:
Check application id in answers in traffic suite
Fix setting of Application-ID
|
|
* anders/diameter/timeout_event/OTP-10628:
Add event suite
Send CER/CEA timeout events as documented
|
|
* anders/diameter/start_event/OTP-10618:
Fix timing of service start event
|
|
* anders/diameter/packet_return/OTP-10614:
Add missing error handling clause for handle_request packet return
|
|
* anders/diameter/make_packet/OTP-10609:
Fix diameter_service:make_prepare_header/2
|
|
* ia/public_key/small-doc-fixes:
public_key: Fix spelling errors
|
|
|
|
Certificate db cleaning messages where sent to the wrong process after
restructuring to avoid bottlenecks.
It is possible that the ssl manager process gets two cleaning messages
for the same entry. E.i. first cleaning message is sent and before it
is processed a new reference is allocated and again released for the
entry, generating a second cleaning message.
Also in ssl_manger:handle_info/2 it is possible that there exists a
new reference to an "old" file name with a potential new content.
|
|
* ia/public_key/CRL/OTP-7045:
public_key: Enhance documentation
public_key: CTify test suites
public_key: Document pkix_path_validation/3 and pkix_crls_validate/3
Support CRL verification in public_key
All basic test cases pass
|
|
* yamt/erl_driver-ssize_t/OTP-10699:
Use correct way to pull the definition of ssize_t
|
|
Necessary for NetBSD with _POSIX_SOURCE at least.
|
|
|
|
|