mirror of
https://github.com/nextcloud/desktop.git
synced 2024-10-24 13:25:52 +03:00
Apply http2 patch from owncloud
Signed-off-by: XNG <Milokita@users.noreply.github.com>
This commit is contained in:
parent
c42332a5ee
commit
cf1532acf1
2 changed files with 33 additions and 1 deletions
|
@ -160,6 +160,37 @@ void AbstractNetworkJob::slotFinished()
|
|||
qCWarning(lcNetworkJob) << "SslHandshakeFailedError: " << errorString() << " : can be caused by a webserver wanting SSL client certificates";
|
||||
}
|
||||
|
||||
// Qt doesn't yet transparently resend HTTP2 requests, do so here
|
||||
const auto maxHttp2Resends = 5;
|
||||
QByteArray verb = requestVerb(*reply());
|
||||
if (_reply->error() == QNetworkReply::ContentReSendError
|
||||
&& _reply->attribute(QNetworkRequest::HTTP2WasUsedAttribute).toBool()) {
|
||||
|
||||
if ((_requestBody && !_requestBody->isSequential()) || verb.isEmpty()) {
|
||||
qCWarning(lcNetworkJob) << "Can't resend HTTP2 request, verb or body not suitable"
|
||||
<< _reply->request().url() << verb << _requestBody;
|
||||
} else if (_http2ResendCount >= maxHttp2Resends) {
|
||||
qCWarning(lcNetworkJob) << "Not resending HTTP2 request, number of resends exhausted"
|
||||
<< _reply->request().url() << _http2ResendCount;
|
||||
} else {
|
||||
qCInfo(lcNetworkJob) << "HTTP2 resending" << _reply->request().url();
|
||||
_http2ResendCount++;
|
||||
|
||||
resetTimeout();
|
||||
if (_requestBody) {
|
||||
if(!_requestBody->isOpen())
|
||||
_requestBody->open(QIODevice::ReadOnly);
|
||||
_requestBody->seek(0);
|
||||
}
|
||||
sendRequest(
|
||||
verb,
|
||||
_reply->request().url(),
|
||||
_reply->request(),
|
||||
_requestBody);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (_reply->error() != QNetworkReply::NoError) {
|
||||
if (!_ignoreCredentialFailure || _reply->error() != QNetworkReply::AuthenticationRequiredError) {
|
||||
qCWarning(lcNetworkJob) << _reply->error() << errorString()
|
||||
|
|
|
@ -188,7 +188,8 @@ private:
|
|||
QPointer<QNetworkReply> _reply; // (QPointer because the NetworkManager may be destroyed before the jobs at exit)
|
||||
QString _path;
|
||||
QTimer _timer;
|
||||
int _redirectCount;
|
||||
int _redirectCount = 0;
|
||||
int _http2ResendCount = 0;
|
||||
|
||||
// Set by the xyzRequest() functions and needed to be able to redirect
|
||||
// requests, should it be required.
|
||||
|
|
Loading…
Reference in a new issue