summaryrefslogtreecommitdiffstats
path: root/src/network/access
diff options
context:
space:
mode:
authorMårten Nordheim <marten.nordheim@qt.io>2020-08-12 16:11:11 +0200
committerMårten Nordheim <marten.nordheim@qt.io>2020-08-13 19:58:13 +0200
commit7e55642c87b71fdc41f30a1770efc45597e85837 (patch)
tree9f00d92d7d054a7aa39de2b41752b2f22f91689c /src/network/access
parent5ecc6eb36365e5382ac18b268a885fc17a3abf9f (diff)
QNAM: HTTP/2: Set user-agent for the HTTP proxy's header
The user-agent should be propagated to the proxy as well or else we get our default one. Change-Id: Id2283a8f2ade1a32f7fcf3d691be8d380d334b50 Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
Diffstat (limited to 'src/network/access')
-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