diff options
-rw-r--r-- | src/network/access/qhttpnetworkconnectionchannel.cpp | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/src/network/access/qhttpnetworkconnectionchannel.cpp b/src/network/access/qhttpnetworkconnectionchannel.cpp index 0c59c20255..d305fae094 100644 --- a/src/network/access/qhttpnetworkconnectionchannel.cpp +++ b/src/network/access/qhttpnetworkconnectionchannel.cpp @@ -367,11 +367,20 @@ bool QHttpNetworkConnectionChannel::ensureConnection() if (socket->proxy().type() == QNetworkProxy::HttpProxy) { // Make user-agent field available to HTTP proxy socket engine (QTBUG-17223) QByteArray value; - // ensureConnection is called before any request has been assigned, but can also be called again if reconnecting - if (request.url().isEmpty()) - value = connection->d_func()->predictNextRequest().headerField("user-agent"); - else + // ensureConnection is called before any request has been assigned, but can also be + // called again if reconnecting + if (request.url().isEmpty()) { + if (connection->connectionType() + == QHttpNetworkConnection::ConnectionTypeHTTP2Direct + || (connection->connectionType() == QHttpNetworkConnection::ConnectionTypeHTTP2 + && h2RequestsToSend.count() > 0)) { + value = h2RequestsToSend.first().first.headerField("user-agent"); + } else { + value = connection->d_func()->predictNextRequest().headerField("user-agent"); + } + } else { value = request.headerField("user-agent"); + } if (!value.isEmpty()) { QNetworkProxy proxy(socket->proxy()); proxy.setRawHeader("User-Agent", value); //detaches |