diff --git a/src/network/access/qnetworkaccesshttpbackend.cpp b/src/network/access/qnetworkaccesshttpbackend.cpp index f005939..ea5f48e 100644 --- a/src/network/access/qnetworkaccesshttpbackend.cpp +++ b/src/network/access/qnetworkaccesshttpbackend.cpp @@ -155,7 +155,7 @@ protected: }; QNetworkAccessHttpBackend::QNetworkAccessHttpBackend() - : QNetworkAccessBackend(), httpReply(0), http(0), uploadDevice(0) + : QNetworkAccessBackend(), httpReply(0), http(0), uploadDevice(0), pendingSslConfiguration(0) { } @@ -163,6 +163,7 @@ QNetworkAccessHttpBackend::~QNetworkAccessHttpBackend() { if (http) disconnectFromHttp(); + delete pendingSslConfiguration; } void QNetworkAccessHttpBackend::disconnectFromHttp() @@ -251,6 +252,11 @@ void QNetworkAccessHttpBackend::postRequest() httpReply = http->sendRequest(httpRequest); httpReply->setParent(this); + if (pendingSslConfiguration) { + httpReply->setSslConfiguration(*pendingSslConfiguration); + delete pendingSslConfiguration; + pendingSslConfiguration = 0; + } connect(httpReply, SIGNAL(readyRead()), SLOT(replyReadyRead())); connect(httpReply, SIGNAL(finished()), SLOT(replyFinished())); @@ -595,12 +601,20 @@ void QNetworkAccessHttpBackend::ignoreSslErrors() void QNetworkAccessHttpBackend::fetchSslConfiguration(QSslConfiguration &config) const { - config = httpReply->sslConfiguration(); + if (httpReply) + config = httpReply->sslConfiguration(); + else if (pendingSslConfiguration) + config = *pendingSslConfiguration; } void QNetworkAccessHttpBackend::setSslConfiguration(const QSslConfiguration &newconfig) { - httpReply->setSslConfiguration(newconfig); + if (httpReply) + httpReply->setSslConfiguration(newconfig); + else if (pendingSslConfiguration) + *pendingSslConfiguration = newconfig; + else + pendingSslConfiguration = new QSslConfiguration(newconfig); } #endif diff --git a/src/network/access/qnetworkaccesshttpbackend_p.h b/src/network/access/qnetworkaccesshttpbackend_p.h index 15cfcb5..514def2 100644 --- a/src/network/access/qnetworkaccesshttpbackend_p.h +++ b/src/network/access/qnetworkaccesshttpbackend_p.h @@ -77,6 +77,9 @@ private: QHttpNetworkReply *httpReply; QPointer http; QNetworkAccessHttpBackendIODevice *uploadDevice; +#ifndef QT_NO_OPENSSL + QSslConfiguration *pendingSslConfiguration; +#endif void finished(); // override void disconnectFromHttp();