From 3c5b9977cde8ede3377fc5c53faaf19c258256a6 Mon Sep 17 00:00:00 2001 From: Timur Pocheptsov Date: Wed, 17 Aug 2016 12:27:31 +0200 Subject: [PATCH] HTTP/2 - do not set END_HEADERS if we have CONTINUATIONs Setting END_HEADERS flag on a HEADERS frame means we do not have CONTINUATION frame(s). So do NOT set it too early, only if we fit into a single frame. Change-Id: I891a2db227cee59e4eacfe7c2f18b431cd85fe47 Reviewed-by: Edward Welbourne --- src/network/access/http2/http2frames.cpp | 1 + src/network/access/qhttp2protocolhandler.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/network/access/http2/http2frames.cpp b/src/network/access/http2/http2frames.cpp index 95f00dd286..763d1bb90f 100644 --- a/src/network/access/http2/http2frames.cpp +++ b/src/network/access/http2/http2frames.cpp @@ -478,6 +478,7 @@ bool FrameWriter::writeHEADERS(QAbstractSocket &socket, quint32 sizeLimit) sizeLimit = quint32(maxPayloadSize); if (quint32(frameBuffer.size() - frameHeaderSize) <= sizeLimit) { + addFlag(FrameFlag::END_HEADERS); updatePayloadSize(); return write(socket); } diff --git a/src/network/access/qhttp2protocolhandler.cpp b/src/network/access/qhttp2protocolhandler.cpp index f50224f64a..a8de698741 100644 --- a/src/network/access/qhttp2protocolhandler.cpp +++ b/src/network/access/qhttp2protocolhandler.cpp @@ -328,7 +328,7 @@ bool QHttp2ProtocolHandler::sendHEADERS(Stream &stream) { using namespace HPack; - outboundFrame.start(FrameType::HEADERS, FrameFlag::PRIORITY | FrameFlag::END_HEADERS, + outboundFrame.start(FrameType::HEADERS, FrameFlag::PRIORITY, stream.streamID); if (!stream.data()) {