- Nov 20, 2015
-
-
Matt Caswell authored
Even with _XOPEN_SOURCE defined OS-X still displays warnings that makecontext and friends are deprecated. This isn't a problem until you try and build with --strict-warnings, and the build fails. This change suppresses the warnings. We know they are deprecated but there is no alternative! Reviewed-by: Rich Salz <rsalz@openssl.org>
-
Matt Caswell authored
async_fibre_makecontext was initialise the fibre first and then calling getcontext(). It should be the other way around because the getcontext call may overwrite some of the things we just initialised. This didn't cause an issue on Linux and so the problem went unnoticed. On OS-X it causes a crash. Reviewed-by: Rich Salz <rsalz@openssl.org>
-
Matt Caswell authored
Make it clear that this function is ssl specific. Reviewed-by: Rich Salz <rsalz@openssl.org>
-
Matt Caswell authored
For some reason the dasync sha1 functions did not start with the dasync prefix like all of the other functions do. Changed for consistency. Reviewed-by: Rich Salz <rsalz@openssl.org>
-
Matt Caswell authored
Clarify that you must only call this after all async jobs have completed - otherwise you could get memory leaks. Reviewed-by: Rich Salz <rsalz@openssl.org>
-
Matt Caswell authored
OS-X complains if we don't have _XOPEN_SOURCE defined. Reviewed-by: Rich Salz <rsalz@openssl.org>
-
Matt Caswell authored
Make clang build without errors in the async code Reviewed-by: Rich Salz <rsalz@openssl.org>
-
Matt Caswell authored
_longjmp/_setjmp do not manipulate the signal mask whilst longjmp/setjmp may do. Online sources suggest this could result in a significant speed up in the context switching. Reviewed-by: Rich Salz <rsalz@openssl.org>
-
Matt Caswell authored
If config'd without -d (--debug), asynctest was crashing with: *** longjmp causes uninitialized stack frame *** This is because gcc will add certain checks for some functions (including longjmp). The checks assume you can only longjmp down the stack not up. However, if we are actually jumping to a different fibre then it can appear as if we are going up the stack when we are not really. This change disables the check. Reviewed-by: Rich Salz <rsalz@openssl.org>
-
Matt Caswell authored
Add some clarifications to the async documentation. Also changed ASYNC_pause_job() so that it returns success if you are not within the context of a job. This is so that engines can be used either asynchronously or synchronously and can treat an error from ASYNC_pause_job() as a real error. Reviewed-by: Rich Salz <rsalz@openssl.org>
-
Matt Caswell authored
Tidy up the libssl async calls and make sure all IO functions are covered. Reviewed-by: Rich Salz <rsalz@openssl.org>
-
Matt Caswell authored
Reviewed-by: Rich Salz <rsalz@openssl.org>
-
Matt Caswell authored
Add ASYNCerr support to give some meaningful error message in the event of a failure. Reviewed-by: Rich Salz <rsalz@openssl.org>
-
Matt Caswell authored
Add a CHANGES entry for the new async code. Reviewed-by: Rich Salz <rsalz@openssl.org>
-
Matt Caswell authored
s_server already had the ability to wait on an async file descriptor. This adds it to s_client too. Reviewed-by: Rich Salz <rsalz@openssl.org>
-
Matt Caswell authored
0 is a valid file descriptor so SSL_get_async_wait_fd should instead return -1 on error. Reviewed-by: Rich Salz <rsalz@openssl.org>
-
Matt Caswell authored
Document the libssl and command line application aspects of async. Reviewed-by: Rich Salz <rsalz@openssl.org>
-
Matt Caswell authored
Tidied up the naming of functions and structures to be consistent Reviewed-by: Rich Salz <rsalz@openssl.org>
-
Matt Caswell authored
Fix some warnings in the async code when compiling on windows. Reviewed-by: Rich Salz <rsalz@openssl.org>
-
Matt Caswell authored
Don't recreate a new ASYNC_CTX every time we call ASYNC_start_job() - the same one can be used for the life of the thread. Instead we only free it up when we call ASYNC_free_pool(). Reviewed-by: Rich Salz <rsalz@openssl.org>
-
Matt Caswell authored
The ASYNC null implementation has not kept pace with the rest of the async development and so was failing to compile. Reviewed-by: Rich Salz <rsalz@openssl.org>
-
Matt Caswell authored
Add a suite of tests for the ASYNC_* functions Reviewed-by: Rich Salz <rsalz@openssl.org>
-
Matt Caswell authored
The ASYNC_in_job() function is redundant. The same effect can be achieved by using ASYNC_get_current_job(). Reviewed-by: Rich Salz <rsalz@openssl.org>
-
Matt Caswell authored
Reviewed-by: Rich Salz <rsalz@openssl.org>
-
Matt Caswell authored
Reviewed-by: Rich Salz <rsalz@openssl.org>
-
Matt Caswell authored
Port the async pool and notify code to windows. Reviewed-by: Rich Salz <rsalz@openssl.org>
-
Matt Caswell authored
s_client was not freeing up the async pool if async mode was enabled. Reviewed-by: Rich Salz <rsalz@openssl.org>
-
Matt Caswell authored
If an async event occurs during a renegotiation in SSL_read then s_server was looping around, detecting we were in init and calling init_ssl_connection instead of re-calling SSL_read. Reviewed-by: Rich Salz <rsalz@openssl.org>
-
Matt Caswell authored
Implement the ASYNC_JOB as a local thread pool. Remove the API support for global pools. Reviewed-by: Rich Salz <rsalz@openssl.org>
-
Matt Caswell authored
Initial API implemented for notifying applications that an ASYNC_JOB has completed. Currently only s_server is using this. The Dummy Async engine "cheats" in that it notifies that it has completed *before* it pauses the job. A normal async engine would not do that. Only the posix version of this has been implemented so far, so it will probably fail to compile on Windows at the moment. Reviewed-by: Rich Salz <rsalz@openssl.org>
-
Matt Caswell authored
It is expensive to create the ASYNC_JOB objects due to the "makecontext" call. This change adds support for pools of ASYNC_JOB objects so that we don't have to create a new ASYNC_JOB every time we want to use one. Reviewed-by: Rich Salz <rsalz@openssl.org>
-
Matt Caswell authored
Where we can we should use longjmp and setjmp in preference to swapcontext/ setcontext as they seem to be more performant. Reviewed-by: Rich Salz <rsalz@openssl.org>
-
Matt Caswell authored
The s_server option -WWW was not async aware, and therefore was not handling SSL_ERROR_WANT_ASYNC conditions. This commit fixes that. Reviewed-by: Rich Salz <rsalz@openssl.org>
-
Matt Caswell authored
Removed the function ASYNC_job_is_waiting() as it was redundant. The only time user code has a handle on a job is when one is waiting, so all they need to do is check whether the job is NULL. Also did some cleanups to make sure the job really is NULL after it has been freed! Reviewed-by: Rich Salz <rsalz@openssl.org>
-
Matt Caswell authored
Some assembler code puts a lot of stuff on the stack, so up the stack size. Reviewed-by: Rich Salz <rsalz@openssl.org>
-
Matt Caswell authored
Create a "null" async implementation for platforms that lack support. This just does nothing when called and therefore performs synchronously. Reviewed-by: Rich Salz <rsalz@openssl.org>
-
Matt Caswell authored
Reviewed-by: Rich Salz <rsalz@openssl.org>
-
Matt Caswell authored
Reviewed-by: Rich Salz <rsalz@openssl.org>
-
Matt Caswell authored
A new -async option is added which activates SSL_MODE_ASYNC. Also SSL_WANT_ASYNC errors are handled appropriately. Reviewed-by: Rich Salz <rsalz@openssl.org>
-
Matt Caswell authored
The following entry points have been made async aware: SSL_accept SSL_read SSL_write Also added is a new mode - SSL_MODE_ASYNC. Calling the above functions with the async mode enabled will initiate a new async job. If an async pause is encountered whilst executing the job (such as for example if using SHA1/RSA with the Dummy Async engine), then the above functions return with SSL_WANT_ASYNC. Calling the functions again (with exactly the same args as per non-blocking IO), will resume the job where it left off. Reviewed-by: Rich Salz <rsalz@openssl.org>
-