fix problems with version 0.9.8

This commit is contained in:
David Rose 2006-08-29 19:15:22 +00:00
parent b046a3c33d
commit 8a6a9aa3a2

View File

@ -211,9 +211,16 @@ HTTPClient::
////////////////////////////////////////////////////////////////////
void HTTPClient::
init_random_seed() {
// This call is sufficient to kick OpenSSL into generating its
// random seed if it hasn't already.
RAND_status();
static bool _initialized = false;
if (!_initialized) {
_initialized = true;
// It is necessary to call this before making any other OpenSSL
// call, per the docs. Also, the docs say that making this call
// will seed the random number generator. Apparently you can get
// away with not calling it in versions prior to 0.9.8, however.
SSL_library_init();
}
}
////////////////////////////////////////////////////////////////////
@ -916,7 +923,13 @@ parse_http_version_string(const string &version) {
////////////////////////////////////////////////////////////////////
bool HTTPClient::
load_certificates(const Filename &filename) {
int result = load_verify_locations(_ssl_ctx, filename);
// The line below might be a recursive call, but it should be safe,
// since get_ssl_ctx() won't call load_certificates() until after it
// has assigned _ssl_ctx--guaranteeing that the second call to
// get_ssl_ctx() will be a no-op.
SSL_CTX *ctx = get_ssl_ctx();
int result = load_verify_locations(ctx, filename);
if (result <= 0) {
downloader_cat.info()
@ -1067,6 +1080,8 @@ get_ssl_ctx() {
return _ssl_ctx;
}
init_random_seed();
_ssl_ctx = SSL_CTX_new(SSLv23_client_method());
#if defined(SSL_097) && !defined(NDEBUG)