From 457309c9fa0e189314c1abc039706c765f56d505 Mon Sep 17 00:00:00 2001 From: Anton Kudryavtsev Date: Wed, 1 Nov 2023 14:46:55 +0300 Subject: [PATCH] QHttp2ProtocolHandler: optimize updateStream MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Use QBAV more to reduce allocations Change-Id: I009144156fafa64dd241c446bd4081fe197aa2bf Reviewed-by: MÃ¥rten Nordheim --- src/network/access/qhttp2protocolhandler.cpp | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/network/access/qhttp2protocolhandler.cpp b/src/network/access/qhttp2protocolhandler.cpp index 9ac3f8fd84..145d7046b7 100644 --- a/src/network/access/qhttp2protocolhandler.cpp +++ b/src/network/access/qhttp2protocolhandler.cpp @@ -1098,7 +1098,7 @@ void QHttp2ProtocolHandler::updateStream(Stream &stream, const HPack::HttpHeader int statusCode = 0; for (const auto &pair : headers) { const auto &name = pair.name; - auto value = pair.value; + const auto value = QByteArrayView(pair.value); // TODO: part of this code copies what SPDY protocol handler does when // processing headers. Binary nature of HTTP/2 and SPDY saves us a lot @@ -1118,10 +1118,8 @@ void QHttp2ProtocolHandler::updateStream(Stream &stream, const HPack::HttpHeader if (ok) httpReply->setContentLength(length); } else { - QByteArray binder(", "); - if (name == "set-cookie") - binder = "\n"; - httpReply->appendHeaderField(name, value.replace('\0', binder)); + const auto binder = name == "set-cookie" ? QByteArrayView("\n") : QByteArrayView(", "); + httpReply->appendHeaderField(name, QByteArray(pair.value).replace('\0', binder)); } }