diff options
author | Mårten Nordheim <marten.nordheim@qt.io> | 2020-08-12 16:11:11 +0200 |
---|---|---|
committer | Mårten Nordheim <marten.nordheim@qt.io> | 2020-08-13 19:58:13 +0200 |
commit | 7e55642c87b71fdc41f30a1770efc45597e85837 (patch) | |
tree | 9f00d92d7d054a7aa39de2b41752b2f22f91689c /src/network/access | |
parent | 5ecc6eb36365e5382ac18b268a885fc17a3abf9f (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.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 |