Async error handling and MacOS/X fixes
authorViktor Dukhovni <openssl-users@dukhovni.org>
Sun, 22 Nov 2015 01:14:43 +0000 (20:14 -0500)
committerViktor Dukhovni <openssl-users@dukhovni.org>
Sun, 22 Nov 2015 21:54:43 +0000 (16:54 -0500)
commit6e8ac5087061350a5a98ddc24dad6ceef9baf991
tree35d5c7c7d42f03ccf97e67066b70a58e209667db
parent3d32218812e87221344f2985512e42e4aaa88745
Async error handling and MacOS/X fixes

In the async code for MacOS/X define _XOPEN_SOURCE (if not already
defined) as early as possible.  We must do this before including
any header files, because on MacOS/X <stlib.h> includes <signal.h>
which includes <ucontext.h>.  If we delay defining _XOPEN_SOURCE
and include <ucontext.h> after various system headers are included,
we are very likely to end up with the wrong (truncated) definition
of ucontext_t.

Also, better error handling and some code cleanup in POSIX fibre
construction and destruction.  We make sure that async_fibre_makecontext()
always initializes the fibre to a state that can be freed.

For all implementations, check for error returns from
async_fibre_makecontext().

Reviewed-by: Matt Caswell <matt@openssl.org>
crypto/async/arch/async_null.c
crypto/async/arch/async_posix.c
crypto/async/arch/async_posix.h
crypto/async/arch/async_win.c
crypto/async/arch/async_win.h
crypto/async/async.c
crypto/async/async_locl.h