summaryrefslogtreecommitdiff
path: root/http
diff options
context:
space:
mode:
Diffstat (limited to 'http')
-rw-r--r--http/http2_connection.hpp24
1 files changed, 15 insertions, 9 deletions
diff --git a/http/http2_connection.hpp b/http/http2_connection.hpp
index 749ac282ef..4b1b2dcb91 100644
--- a/http/http2_connection.hpp
+++ b/http/http2_connection.hpp
@@ -104,7 +104,10 @@ class HTTP2Connection :
}
Http2StreamData& stream = streamIt->second;
BMCWEB_LOG_DEBUG("File read callback length: {}", length);
-
+ if (!stream.writer)
+ {
+ return NGHTTP2_ERR_TEMPORAL_CALLBACK_FAILURE;
+ }
boost::beast::error_code ec;
boost::optional<std::pair<boost::asio::const_buffer, bool>> out =
stream.writer->getWithMaxSize(ec, length);
@@ -230,10 +233,11 @@ class HTTP2Connection :
close();
return -1;
}
- if (it->second.reqReader)
+ auto& reqReader = it->second.reqReader;
+ if (reqReader)
{
boost::beast::error_code ec;
- it->second.reqReader->finish(ec);
+ reqReader->finish(ec);
if (ec)
{
BMCWEB_LOG_CRITICAL("Failed to finalize payload");
@@ -289,15 +293,17 @@ class HTTP2Connection :
close();
return -1;
}
- if (!thisStream->second.reqReader)
+
+ std::optional<bmcweb::HttpBody::reader>& reqReader =
+ thisStream->second.reqReader;
+ if (!reqReader)
{
- thisStream->second.reqReader.emplace(
- thisStream->second.req.req.base(),
- thisStream->second.req.req.body());
+ BMCWEB_LOG_ERROR("No reader init {}", streamId);
+ close();
+ return -1;
}
boost::beast::error_code ec;
- thisStream->second.reqReader->put(boost::asio::const_buffer(data, len),
- ec);
+ reqReader->put(boost::asio::const_buffer(data, len), ec);
if (ec)
{
BMCWEB_LOG_CRITICAL("Failed to write payload");