diff options
Diffstat (limited to 'src/network/access/qhttpnetworkconnectionchannel.cpp')
-rw-r--r-- | src/network/access/qhttpnetworkconnectionchannel.cpp | 42 |
1 files changed, 20 insertions, 22 deletions
diff --git a/src/network/access/qhttpnetworkconnectionchannel.cpp b/src/network/access/qhttpnetworkconnectionchannel.cpp index a3e46d8cd2..51076c6c22 100644 --- a/src/network/access/qhttpnetworkconnectionchannel.cpp +++ b/src/network/access/qhttpnetworkconnectionchannel.cpp @@ -1025,31 +1025,29 @@ void QHttpNetworkConnectionChannel::_q_disconnected() void QHttpNetworkConnectionChannel::_q_connected() { // For the Happy Eyeballs we need to check if this is the first channel to connect. - if (!pendingEncrypt) { - if (connection->d_func()->networkLayerState == QHttpNetworkConnectionPrivate::InProgress) { - if (connection->d_func()->delayedConnectionTimer.isActive()) - connection->d_func()->delayedConnectionTimer.stop(); - if (networkLayerPreference == QAbstractSocket::IPv4Protocol) + if (connection->d_func()->networkLayerState == QHttpNetworkConnectionPrivate::InProgress) { + if (connection->d_func()->delayedConnectionTimer.isActive()) + connection->d_func()->delayedConnectionTimer.stop(); + if (networkLayerPreference == QAbstractSocket::IPv4Protocol) + connection->d_func()->networkLayerState = QHttpNetworkConnectionPrivate::IPv4; + else if (networkLayerPreference == QAbstractSocket::IPv6Protocol) + connection->d_func()->networkLayerState = QHttpNetworkConnectionPrivate::IPv6; + else { + if (socket->peerAddress().protocol() == QAbstractSocket::IPv4Protocol) connection->d_func()->networkLayerState = QHttpNetworkConnectionPrivate::IPv4; - else if (networkLayerPreference == QAbstractSocket::IPv6Protocol) + else connection->d_func()->networkLayerState = QHttpNetworkConnectionPrivate::IPv6; - else { - if (socket->peerAddress().protocol() == QAbstractSocket::IPv4Protocol) - connection->d_func()->networkLayerState = QHttpNetworkConnectionPrivate::IPv4; - else - connection->d_func()->networkLayerState = QHttpNetworkConnectionPrivate::IPv6; - } - connection->d_func()->networkLayerDetected(networkLayerPreference); - } else { - if (((connection->d_func()->networkLayerState == QHttpNetworkConnectionPrivate::IPv4) && (networkLayerPreference != QAbstractSocket::IPv4Protocol)) - || ((connection->d_func()->networkLayerState == QHttpNetworkConnectionPrivate::IPv6) && (networkLayerPreference != QAbstractSocket::IPv6Protocol))) { - close(); - // This is the second connection so it has to be closed and we can schedule it for another request. - QMetaObject::invokeMethod(connection, "_q_startNextRequest", Qt::QueuedConnection); - return; - } - //The connections networkLayerState had already been decided. } + connection->d_func()->networkLayerDetected(networkLayerPreference); + } else { + if (((connection->d_func()->networkLayerState == QHttpNetworkConnectionPrivate::IPv4) && (networkLayerPreference != QAbstractSocket::IPv4Protocol)) + || ((connection->d_func()->networkLayerState == QHttpNetworkConnectionPrivate::IPv6) && (networkLayerPreference != QAbstractSocket::IPv6Protocol))) { + close(); + // This is the second connection so it has to be closed and we can schedule it for another request. + QMetaObject::invokeMethod(connection, "_q_startNextRequest", Qt::QueuedConnection); + return; + } + //The connections networkLayerState had already been decided. } // improve performance since we get the request sent by the kernel ASAP |