summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/network/access/qhttpnetworkconnectionchannel.cpp17
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