--- asio-1.4.1.orig/include/asio/ssl/detail/openssl_context_service.hpp
+++ asio-1.4.1/include/asio/ssl/detail/openssl_context_service.hpp
@@ -21,6 +21,7 @@
 #include "asio/detail/push_options.hpp"
 #include <cstring>
 #include <string>
+#include <stdexcept>
 #include <boost/function.hpp>
 #include "asio/detail/pop_options.hpp"
 
@@ -66,9 +67,16 @@
   // Create a new context implementation.
   void create(impl_type& impl, context_base::method m)
   {
-    ::SSL_METHOD* ssl_method = 0;
+    const ::SSL_METHOD* ssl_method = 0;
     switch (m)
     {
+#if defined(OPENSSL_NO_SSL2)
+    case context_base::sslv2:
+    case context_base::sslv2_client:
+    case context_base::sslv2_server:
+      boost::throw_exception(std::runtime_error("SSLv2 is not supported in your OpenSSL"));
+      break;
+#else
     case context_base::sslv2:
       ssl_method = ::SSLv2_method();
       break;
@@ -78,6 +86,7 @@
     case context_base::sslv2_server:
       ssl_method = ::SSLv2_server_method();
       break;
+#endif
     case context_base::sslv3:
       ssl_method = ::SSLv3_method();
       break;
