--- /dev/null
+--- a/openssl.c
++++ b/openssl.c
+@@ -174,7 +174,9 @@ ssl_init(void)
+ {
+ verbose = value("verbose") != NULL;
+ if (initialized == 0) {
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ SSL_library_init();
++#endif
+ initialized = 1;
+ }
+ if (rand_init == 0)
+@@ -215,12 +217,13 @@ ssl_verify_cb(int success, X509_STORE_CTX *store)
+ static const SSL_METHOD *
+ ssl_select_method(const char *uhp)
+ {
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ const SSL_METHOD *method;
+ char *cp;
+
+ cp = ssl_method_string(uhp);
+ if (cp != NULL) {
+-#if !defined(OPENSSL_NO_SSL2) && !OPENSSL_VERSION_NUMBER >= 0x10100000L
++#ifndef OPENSSL_NO_SSL2
+ if (equal(cp, "ssl2"))
+ method = SSLv2_client_method();
+ else
+@@ -240,6 +243,9 @@ ssl_select_method(const char *uhp)
+ } else
+ method = SSLv23_client_method();
+ return method;
++#else
++ return TLS_client_method();
++#endif
+ }
+
+ static void
+@@ -427,7 +433,9 @@ ssl_gen_err(const char *fmt, ...)
+ va_start(ap, fmt);
+ vfprintf(stderr, fmt, ap);
+ va_end(ap);
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
+ SSL_load_error_strings();
++#endif
+ fprintf(stderr, ": %s\n",
+ (ERR_error_string(ERR_get_error(), NULL)));
+ }