#5453 closed Bugs (fixed)
Compile error in Boost.Asio with OPENSSL_NO_SSL2
Reported by: | Owned by: | chris_kohlhoff | |
---|---|---|---|
Milestone: | To Be Determined | Component: | asio |
Version: | Boost 1.46.1 | Severity: | Problem |
Keywords: | Cc: |
Description
A compile error occurs in asio/ssl/detail/openssl_context_service.hpp if OPENSSL_NO_SSL2 is defined (this is the default of Debian's OpenSSL package). openssl_context_service.hpp should check OPENSSL_NO_* macros. Show error messages below.
$ g++ -v Using built-in specs. COLLECT_GCC=g++ COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.5.2/lto-wrapper Target: x86_64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Debian 4.5.2-8' --with-bugurl=file:///usr/share/doc/gcc-4.5/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.5 --enable-shared --enable-multiarch --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.5 --libdir=/usr/lib --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-plugin --enable-gold --enable-ld=default --with-plugin-ld=ld.gold --enable-objc-gc --with-arch-32=i586 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu Thread model: posix gcc version 4.5.2 (Debian 4.5.2-8)
$ g++ /usr/include/boost/asio/ssl.hpp In file included from /usr/include/boost/asio/ssl/context_service.hpp:25:0,
from /usr/include/boost/asio/ssl/context.hpp:21, from /usr/include/boost/asio/ssl.hpp:19:
/usr/include/boost/asio/ssl/detail/openssl_context_service.hpp: In member function ‘void boost::asio::ssl::detail::openssl_context_service::create(SSL_CTX*&, boost::asio::ssl::context_base::method)’: /usr/include/boost/asio/ssl/detail/openssl_context_service.hpp:70:28: error: ‘::SSLv2_method’ has not been declared /usr/include/boost/asio/ssl/detail/openssl_context_service.hpp:73:28: error: ‘::SSLv2_client_method’ has not been declared /usr/include/boost/asio/ssl/detail/openssl_context_service.hpp:76:28: error: ‘::SSLv2_server_method’ has not been declared
$ grep -n2 OPENSSL_NO_SSL2 /usr/include/openssl/*.h /usr/include/openssl/opensslconf.h-30-# define OPENSSL_NO_RFC3779 /usr/include/openssl/opensslconf.h-31-#endif /usr/include/openssl/opensslconf.h:32:#ifndef OPENSSL_NO_SSL2 /usr/include/openssl/opensslconf.h:33:# define OPENSSL_NO_SSL2 /usr/include/openssl/opensslconf.h-34-#endif /usr/include/openssl/opensslconf.h-35-#ifndef OPENSSL_NO_STORE -- /usr/include/openssl/opensslconf.h-75-# define NO_RFC3779 /usr/include/openssl/opensslconf.h-76-# endif /usr/include/openssl/opensslconf.h:77:# if defined(OPENSSL_NO_SSL2) && !defined(NO_SSL2) /usr/include/openssl/opensslconf.h-78-# define NO_SSL2 /usr/include/openssl/opensslconf.h-79-# endif -- /usr/include/openssl/ssl.h-345-#endif /usr/include/openssl/ssl.h-346-
defined(OPENSSL_NO_MD5)) && !defined(OPENSSL_NO_SSL2) |
/usr/include/openssl/ssl.h:348:#define OPENSSL_NO_SSL2 /usr/include/openssl/ssl.h-349-#endif /usr/include/openssl/ssl.h-350- -- /usr/include/openssl/ssl.h-1630-int SSL_CTX_set_ssl_version(SSL_CTX *ctx, const SSL_METHOD *meth); /usr/include/openssl/ssl.h-1631- /usr/include/openssl/ssl.h:1632:#ifndef OPENSSL_NO_SSL2 /usr/include/openssl/ssl.h-1633-const SSL_METHOD *SSLv2_method(void); /* SSLv2 */ /usr/include/openssl/ssl.h-1634-const SSL_METHOD *SSLv2_server_method(void); /* SSLv2 */
Should be fixed in release branch as of [72428].