From c9e1ad7faf75aeda633e27ba6c042dabe4aa353d Mon Sep 17 00:00:00 2001 From: Magnus Hagander Date: Tue, 15 Jul 2014 18:04:43 +0200 Subject: [PATCH] Detect presence of SSL_get_current_compression Apparently we still build against OpenSSL so old that it doesn't have this function, so add an autoconf check for it to make the buildfarm happy. If the function doesn't exist, always return that compression is disabled, since presumably the actual compression functionality is always missing. For now, hardcode the function as present on MSVC, since we should hopefully be well beyond those old versions on that platform. --- configure | 11 +++++++++++ configure.in | 1 + src/include/pg_config.h.in | 3 +++ src/include/pg_config.h.win32 | 3 +++ src/include/port.h | 4 ++++ 5 files changed, 22 insertions(+) diff --git a/configure b/configure index 75979166efe..ac0d98e2a4d 100755 --- a/configure +++ b/configure @@ -8509,6 +8509,17 @@ else as_fn_error $? "library 'ssl' is required for OpenSSL" "$LINENO" 5 fi + for ac_func in SSL_get_current_compression +do : + ac_fn_c_check_func "$LINENO" "SSL_get_current_compression" "ac_cv_func_SSL_get_current_compression" +if test "x$ac_cv_func_SSL_get_current_compression" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_SSL_GET_CURRENT_COMPRESSION 1 +_ACEOF + +fi +done + else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing CRYPTO_new_ex_data" >&5 $as_echo_n "checking for library containing CRYPTO_new_ex_data... " >&6; } diff --git a/configure.in b/configure.in index 9d1f1187645..32eda48f631 100644 --- a/configure.in +++ b/configure.in @@ -950,6 +950,7 @@ if test "$with_openssl" = yes ; then if test "$PORTNAME" != "win32"; then AC_CHECK_LIB(crypto, CRYPTO_new_ex_data, [], [AC_MSG_ERROR([library 'crypto' is required for OpenSSL])]) AC_CHECK_LIB(ssl, SSL_library_init, [], [AC_MSG_ERROR([library 'ssl' is required for OpenSSL])]) + AC_CHECK_FUNCS([SSL_get_current_compression]) else AC_SEARCH_LIBS(CRYPTO_new_ex_data, eay32 crypto, [], [AC_MSG_ERROR([library 'eay32' or 'crypto' is required for OpenSSL])]) AC_SEARCH_LIBS(SSL_library_init, ssleay32 ssl, [], [AC_MSG_ERROR([library 'ssleay32' or 'ssl' is required for OpenSSL])]) diff --git a/src/include/pg_config.h.in b/src/include/pg_config.h.in index 2a40d6140bd..4383ad5172c 100644 --- a/src/include/pg_config.h.in +++ b/src/include/pg_config.h.in @@ -430,6 +430,9 @@ /* Define to 1 if you have the `srandom' function. */ #undef HAVE_SRANDOM +/* Define to 1 if you have the `SSL_get_current_compression' function. */ +#undef HAVE_SSL_GET_CURRENT_COMPRESSION + /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H diff --git a/src/include/pg_config.h.win32 b/src/include/pg_config.h.win32 index 1c9cd82b838..f7c2419252b 100644 --- a/src/include/pg_config.h.win32 +++ b/src/include/pg_config.h.win32 @@ -337,6 +337,9 @@ /* Define to 1 if you have the `srandom' function. */ /* #undef HAVE_SRANDOM */ +/* Define to 1 if you have the `SSL_get_current_compression' function. */ +#define HAVE_SSL_GET_CURRENT_COMPRESSION 1 + /* Define to 1 if you have the header file. */ /* #undef HAVE_STDINT_H */ diff --git a/src/include/port.h b/src/include/port.h index 3d974818344..9f8465e78ad 100644 --- a/src/include/port.h +++ b/src/include/port.h @@ -420,6 +420,10 @@ extern void unsetenv(const char *name); extern void srandom(unsigned int seed); #endif +#ifndef HAVE_SSL_GET_CURRENT_COMPRESSION +#define SSL_get_current_compression(x) 0 +#endif + /* thread.h */ extern char *pqStrerror(int errnum, char *strerrbuf, size_t buflen);