From 25779dfb4f10841499be3ff6157ab476cbcb12ae Mon Sep 17 00:00:00 2001 From: Maxime Vincent Date: Tue, 28 Mar 2017 13:28:36 +0200 Subject: [PATCH] Introduce HAPROXY config flag + get/set app_data --- configure.ac | 20 ++++++++++++++++++++ src/ssl.c | 16 ++++------------ wolfssl/ssl.h | 5 +++-- 3 files changed, 27 insertions(+), 14 deletions(-) diff --git a/configure.ac b/configure.ac index 12e6fed6f..021a3ebbd 100644 --- a/configure.ac +++ b/configure.ac @@ -189,6 +189,7 @@ then enable_certservice=yes enable_jni=yes enable_lighty=yes + enable_haproxy=yes enable_stunnel=yes enable_nginx=yes enable_pwdbased=yes @@ -2380,6 +2381,24 @@ then AM_CFLAGS="$AM_CFLAGS -DHAVE_EXT_CACHE -DHAVE_EX_DATA" fi +# haproxy Support +AC_ARG_ENABLE([haproxy], + [ --enable-haproxy Enable haproxy (default: disabled)], + [ ENABLED_HAPROXY=$enableval ], + [ ENABLED_HAPROXY=no ] + ) + +if test "$ENABLED_HAPROXY" = "yes" +then + AM_CFLAGS="$AM_CFLAGS -DWOLFSSL_HAPROXY" + # Requires opensslextra make sure on + if test "x$ENABLED_OPENSSLEXTRA" = "xno" + then + ENABLED_OPENSSLEXTRA="yes" + AM_CFLAGS="-DOPENSSL_EXTRA $AM_CFLAGS" + fi +fi + # stunnel Support AC_ARG_ENABLE([stunnel], @@ -3439,6 +3458,7 @@ echo " * CODING: $ENABLED_CODING" echo " * MEMORY: $ENABLED_MEMORY" echo " * I/O POOL: $ENABLED_IOPOOL" echo " * LIGHTY: $ENABLED_LIGHTY" +echo " * HAPROXY: $ENABLED_HAPROXY" echo " * STUNNEL: $ENABLED_STUNNEL" echo " * NGINX: $ENABLED_NGINX" echo " * ERROR_STRINGS: $ENABLED_ERROR_STRINGS" diff --git a/src/ssl.c b/src/ssl.c index 73a8fca30..6f6a21127 100644 --- a/src/ssl.c +++ b/src/ssl.c @@ -21713,21 +21713,13 @@ void* wolfSSL_GetRsaDecCtx(WOLFSSL* ssl) } - void* wolfSSL_get_app_data( const WOLFSSL *ssl) - { + void* wolfSSL_get_app_data( const WOLFSSL *ssl) { /* checkout exdata stuff... */ - (void)ssl; - WOLFSSL_ENTER("wolfSSL_get_app_data"); - WOLFSSL_STUB("wolfSSL_get_app_data"); - - return 0; + return wolfSSL_get_ex_data(ssl,0); } - void wolfSSL_set_app_data(WOLFSSL *ssl, void *arg) { - (void)ssl; - (void)arg; - WOLFSSL_ENTER("wolfSSL_set_app_data"); - WOLFSSL_STUB("wolfSSL_set_app_data"); + int wolfSSL_set_app_data(WOLFSSL *ssl, void *arg) { + return wolfSSL_set_ex_data(ssl,0,(char *)arg); } WOLFSSL_ASN1_OBJECT * wolfSSL_X509_NAME_ENTRY_get_object(WOLFSSL_X509_NAME_ENTRY *ne) { diff --git a/wolfssl/ssl.h b/wolfssl/ssl.h index 6e8bd8068..5e445f286 100644 --- a/wolfssl/ssl.h +++ b/wolfssl/ssl.h @@ -30,6 +30,7 @@ /* for users not using preprocessor flags*/ #include #include +#include /* for XFILE */ #ifdef HAVE_WOLF_EVENT #include @@ -2045,7 +2046,7 @@ WOLFSSL_API int wolfSSL_OBJ_sn2nid(const char *sn); WOLFSSL_API void wolfSSL_CTX_set_verify_depth(WOLFSSL_CTX *ctx,int depth); WOLFSSL_API void wolfSSL_set_verify_depth(WOLFSSL *ssl,int depth); WOLFSSL_API void* wolfSSL_get_app_data( const WOLFSSL *ssl); -WOLFSSL_API void wolfSSL_set_app_data(WOLFSSL *ssl, void *arg); +WOLFSSL_API int wolfSSL_set_app_data(WOLFSSL *ssl, void *arg); WOLFSSL_API WOLFSSL_ASN1_OBJECT * wolfSSL_X509_NAME_ENTRY_get_object(WOLFSSL_X509_NAME_ENTRY *ne); WOLFSSL_API WOLFSSL_X509_NAME_ENTRY *wolfSSL_X509_NAME_get_entry(WOLFSSL_X509_NAME *name, int loc); WOLFSSL_API void wolfSSL_sk_X509_NAME_pop_free(STACK_OF(WOLFSSL_X509_NAME)* sk, void f (WOLFSSL_X509_NAME*)); @@ -2209,7 +2210,7 @@ WOLFSSL_API unsigned long wolfSSL_ERR_peek_error_line_data(const char **file, int *line, const char **data, int *flags); #endif -#ifdef WOLFSSL_NGINX +#if defined WOLFSSL_NGINX || defined WOLFSSL_HAPROXY /* Not an OpenSSL API. */ WOLFSSL_LOCAL int wolfSSL_get_ocsp_response(WOLFSSL* ssl, byte** response); /* Not an OpenSSL API. */