Make https requests fail fast when configured without ssl support
authorShane Kearns <ext-shane.2.kearns@nokia.com>
Mon, 20 Feb 2012 16:18:29 +0000 (16:18 +0000)
committerQt by Nokia <qt-info@nokia.com>
Tue, 21 Feb 2012 14:28:40 +0000 (15:28 +0100)
Restored the Qt4 behaviour where attempting a https request using
QNetworkAccessManager fails with ProtocolUnsupportedError instead
of timing out or hanging.

Covered by existing autotests.

Task-number: QTBUG-17189
Change-Id: Iceb1ba6558c7d2b1af8ddf8d4ea9315a5b44d970
Reviewed-by: Richard J. Moore <rich@kde.org>
src/network/access/qhttpnetworkconnectionchannel.cpp
src/network/access/qnetworkaccessmanager.cpp

index 70368d5..b6b37db 100644 (file)
@@ -610,6 +610,9 @@ bool QHttpNetworkConnectionChannel::ensureConnection()
             // here and there.
             socket->setReadBufferSize(64*1024);
 #else
+            // Need to dequeue the request so that we can emit the error.
+            if (!reply)
+                connection->d_func()->dequeueRequest(socket);
             connection->d_func()->emitReplyError(socket, reply, QNetworkReply::ProtocolUnknownError);
 #endif
         } else {
index 7be9d27..a5a73e6 100644 (file)
@@ -974,7 +974,11 @@ QNetworkReply *QNetworkAccessManager::createRequest(QNetworkAccessManager::Opera
 
 #ifndef QT_NO_HTTP
     // Since Qt 5 we use the new QNetworkReplyHttpImpl
-    if (scheme == QLatin1String("http") || scheme == QLatin1String("https") ) {
+    if (scheme == QLatin1String("http")
+#ifndef QT_NO_SSL
+        || scheme == QLatin1String("https")
+#endif
+        ) {
         QNetworkReplyHttpImpl *reply = new QNetworkReplyHttpImpl(this, request, op, outgoingData);
 #ifndef QT_NO_BEARERMANAGEMENT
         connect(this, SIGNAL(networkSessionConnected()),