mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-04 02:42:49 -04:00
support series of words in cipher_list
This commit is contained in:
parent
fdc8de25f8
commit
54ab266373
@ -95,6 +95,7 @@ HTTPChannel(HTTPClient *client) :
|
|||||||
_body_stream = NULL;
|
_body_stream = NULL;
|
||||||
_owns_body_stream = false;
|
_owns_body_stream = false;
|
||||||
_sbio = NULL;
|
_sbio = NULL;
|
||||||
|
_cipher_list = _client->get_cipher_list();
|
||||||
_last_status_code = 0;
|
_last_status_code = 0;
|
||||||
_last_run_time = 0.0f;
|
_last_run_time = 0.0f;
|
||||||
_download_to_ramfile = NULL;
|
_download_to_ramfile = NULL;
|
||||||
@ -1477,7 +1478,17 @@ run_setup_ssl() {
|
|||||||
SSL *ssl = NULL;
|
SSL *ssl = NULL;
|
||||||
BIO_get_ssl(_sbio, &ssl);
|
BIO_get_ssl(_sbio, &ssl);
|
||||||
nassertr(ssl != (SSL *)NULL, false);
|
nassertr(ssl != (SSL *)NULL, false);
|
||||||
string cipher_list = _client->get_cipher_list();
|
|
||||||
|
// We only take one word at a time from the _cipher_list. If that
|
||||||
|
// connection fails, then we take the next word.
|
||||||
|
string cipher_list = _cipher_list;
|
||||||
|
if (!cipher_list.empty()) {
|
||||||
|
size_t space = cipher_list.find(" ");
|
||||||
|
if (space != string::npos) {
|
||||||
|
cipher_list = cipher_list.substr(0, space);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (downloader_cat.is_debug()) {
|
if (downloader_cat.is_debug()) {
|
||||||
downloader_cat.debug()
|
downloader_cat.debug()
|
||||||
<< "Setting ssl-cipher-list '" << cipher_list << "'\n";
|
<< "Setting ssl-cipher-list '" << cipher_list << "'\n";
|
||||||
@ -1566,6 +1577,26 @@ run_ssl_handshake() {
|
|||||||
|
|
||||||
// It seems to be an error to free sbio at this point; perhaps
|
// It seems to be an error to free sbio at this point; perhaps
|
||||||
// it's already been freed?
|
// it's already been freed?
|
||||||
|
|
||||||
|
if (!_cipher_list.empty()) {
|
||||||
|
// If we've got another cipher to try, do so.
|
||||||
|
size_t space = _cipher_list.find(" ");
|
||||||
|
if (space != string::npos) {
|
||||||
|
while (space < _cipher_list.length() && _cipher_list[space] == ' ') {
|
||||||
|
++space;
|
||||||
|
}
|
||||||
|
_cipher_list = _cipher_list.substr(space);
|
||||||
|
if (!_cipher_list.empty()) {
|
||||||
|
close_connection();
|
||||||
|
reconsider_proxy();
|
||||||
|
_state = S_connecting;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// All done trying ciphers; they all failed.
|
||||||
|
_cipher_list = _client->get_cipher_list();
|
||||||
_status_entry._status_code = SC_ssl_no_handshake;
|
_status_entry._status_code = SC_ssl_no_handshake;
|
||||||
_state = S_failure;
|
_state = S_failure;
|
||||||
return false;
|
return false;
|
||||||
|
@ -423,6 +423,7 @@ private:
|
|||||||
ISocketStream *_body_stream;
|
ISocketStream *_body_stream;
|
||||||
bool _owns_body_stream;
|
bool _owns_body_stream;
|
||||||
BIO *_sbio;
|
BIO *_sbio;
|
||||||
|
string _cipher_list;
|
||||||
pvector<URLSpec> _redirect_trail;
|
pvector<URLSpec> _redirect_trail;
|
||||||
int _last_status_code;
|
int _last_status_code;
|
||||||
double _last_run_time;
|
double _last_run_time;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user