--- src/init.c.orig +++ src/init.c @@ -1331,7 +1331,9 @@ cmd_spec_secure_protocol (const char *co { static const struct decode_item choices[] = { { "auto", secure_protocol_auto }, +#ifndef OPENSSL_NO_SSL2 { "sslv2", secure_protocol_sslv2 }, +#endif { "sslv3", secure_protocol_sslv3 }, { "tlsv1", secure_protocol_tlsv1 }, }; --- src/openssl.c.orig +++ src/openssl.c @@ -42,6 +42,7 @@ as that of the covered work. */ #include #include #include +#include #include "utils.h" #include "connect.h" @@ -178,15 +179,21 @@ ssl_init () SSL_load_error_strings (); SSLeay_add_all_algorithms (); SSLeay_add_ssl_algorithms (); +/* Load all bundled ENGINEs into memory and make them visible */ + ENGINE_load_builtin_engines(); +/* Register all of them for every algorithm they collectively implement */ + ENGINE_register_all_complete(); switch (opt.secure_protocol) { case secure_protocol_auto: meth = SSLv23_client_method (); break; +#ifndef OPENSSL_NO_SSL2 case secure_protocol_sslv2: meth = SSLv2_client_method (); break; +#endif case secure_protocol_sslv3: meth = SSLv3_client_method (); break; --- src/options.h.orig +++ src/options.h @@ -171,7 +171,9 @@ struct options #ifdef HAVE_SSL enum { secure_protocol_auto, +#ifndef OPENSSL_NO_SSL2 secure_protocol_sslv2, +#endif secure_protocol_sslv3, secure_protocol_tlsv1 } secure_protocol; /* type of secure protocol to use. */ --- src/iri.c.orig +++ src/iri.c @@ -114,7 +114,7 @@ check_encoding_name (char *encoding) static bool open_locale_to_utf8 (void) { - + return true; } /* Try converting string str from locale to UTF-8. Return a new string