From 617ba6f1c40edb40f0364603d8201dd2413fdf69 Mon Sep 17 00:00:00 2001 From: Timur Pocheptsov Date: Fri, 29 Sep 2017 04:17:27 +0000 Subject: Revert "HTTP/2 protocol handler: set the redirect URL on reply" This reverts commit 9e268185bbb39285ee087868f9d904d7c9f6fe61. Reasons: must go into 5.9 + the logic in this patch needs fixing, not good as it is now. Change-Id: I92516ddb1d2661d85ce77c54a1307f45df1ab635 Reviewed-by: Andy Shaw Reviewed-by: Edward Welbourne --- src/network/access/qhttp2protocolhandler.cpp | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) diff --git a/src/network/access/qhttp2protocolhandler.cpp b/src/network/access/qhttp2protocolhandler.cpp index cf1be28337..5032f6017f 100644 --- a/src/network/access/qhttp2protocolhandler.cpp +++ b/src/network/access/qhttp2protocolhandler.cpp @@ -1042,18 +1042,12 @@ void QHttp2ProtocolHandler::updateStream(Stream &stream, const HPack::HttpHeader } const auto httpReplyPrivate = httpReply->d_func(); - int statusCode = 0; for (const auto &pair : headers) { const auto &name = pair.name; auto value = pair.value; if (name == ":status") { - // TODO: part of this code copies what SPDY does when processing - // headers. It would be nice to re-factor HTTP/2 protocol handler - // to make it more strict in extracting things. For example, the - // status code below ... yeah, should be an integer, right? - statusCode = value.left(3).toInt(); - httpReply->setStatusCode(statusCode); + httpReply->setStatusCode(value.left(3).toInt()); httpReplyPrivate->reasonPhrase = QString::fromLatin1(value.mid(4)); } else if (name == ":version") { httpReplyPrivate->majorVersion = value.at(5) - '0'; @@ -1064,17 +1058,6 @@ void QHttp2ProtocolHandler::updateStream(Stream &stream, const HPack::HttpHeader if (ok) httpReply->setContentLength(length); } else { - if (statusCode > 300 && statusCode <= 308 && name == "location") { - // For HTTP/1 'location' is handled (and redirect URL set) when - // a protocol handler emits channel->allDone(). Http/2 protocol - // handler never emits allDone, since we have many requests - // multiplexed in one channel at any moment and we are never - // done :) So it's time to extract location. - const QUrl redirectUrl(QUrl::fromEncoded(value)); - if (redirectUrl.isValid()) - httpReply->setRedirectUrl(redirectUrl); - } - QByteArray binder(", "); if (name == "set-cookie") binder = "\n"; -- cgit v1.2.3