diff options
author | Matt Caswell <matt@openssl.org> | 2016-03-16 10:38:39 +0000 |
---|---|---|
committer | Richard Levitte <levitte@openssl.org> | 2016-03-16 18:12:56 +0100 |
commit | c521edc3a12042701b2dda93e6bb9855e351c929 (patch) | |
tree | df41419a22717985055398a06a4b66b148562847 /test | |
parent | 685b6f293b4b29bf1ee5c7af19cf1348567828b4 (diff) |
Some platforms provide getcontext() but it does not work
Some platforms claim to be POSIX but their getcontext() implementation
does not work. Therefore we update the ASYNC_is_capable() function to test
for this.
RT#4366
Reviewed-by: Richard Levitte <levitte@openssl.org>
Diffstat (limited to 'test')
-rw-r--r-- | test/asynctest.c | 45 |
1 files changed, 14 insertions, 31 deletions
diff --git a/test/asynctest.c b/test/asynctest.c index 31f04e92e4..4694fda23c 100644 --- a/test/asynctest.c +++ b/test/asynctest.c @@ -61,21 +61,6 @@ #include <openssl/crypto.h> #include <../apps/apps.h> -#if (defined(OPENSSL_SYS_UNIX) || defined(OPENSSL_SYS_CYGWIN)) && defined(OPENSSL_THREADS) -# include <unistd.h> -# if _POSIX_VERSION >= 200112L -# define ASYNC_POSIX -# endif -#elif defined(_WIN32) -# define ASYNC_WIN -#endif - -#if !defined(ASYNC_POSIX) && !defined(ASYNC_WIN) -# define ASYNC_NULL -#endif - -#ifndef ASYNC_NULL - static int ctr = 0; static ASYNC_JOB *currjob = NULL; @@ -308,25 +293,23 @@ static int test_ASYNC_block_pause() return 1; } -#endif - int main(int argc, char **argv) { - -#ifdef ASYNC_NULL - fprintf(stderr, "NULL implementation - skipping async tests\n"); -#else - CRYPTO_set_mem_debug(1); - CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON); - - if ( !test_ASYNC_init_thread() - || !test_ASYNC_start_job() - || !test_ASYNC_get_current_job() - || !test_ASYNC_WAIT_CTX_get_all_fds() - || !test_ASYNC_block_pause()) { - return 1; + if (!ASYNC_is_capable()) { + fprintf(stderr, + "OpenSSL build is not ASYNC capable - skipping async tests\n"); + } else { + CRYPTO_set_mem_debug(1); + CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON); + + if ( !test_ASYNC_init_thread() + || !test_ASYNC_start_job() + || !test_ASYNC_get_current_job() + || !test_ASYNC_WAIT_CTX_get_all_fds() + || !test_ASYNC_block_pause()) { + return 1; + } } -#endif printf("PASS\n"); return 0; } |