Skip to content

Commit 159b59b

Browse files
committed
Fix wrong received frame size evaluation
1 parent dc599c9 commit 159b59b

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

libshviotqt/src/rpc/socket.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -134,16 +134,18 @@ QList<int> StreamFrameReader::addData(std::string_view data)
134134
if (len <= 0) {
135135
throw std::runtime_error("Read RPC message length data error.");
136136
}
137-
auto consumed_len = static_cast<size_t>(len);
137+
auto frame_len_size = static_cast<size_t>(len);
138138
if (auto rqid = tryToReadMeta(in); rqid > 0) {
139139
response_request_ids << rqid;
140140
}
141-
if (consumed_len + frame_size <= m_readBuffer.size()) {
141+
if (frame_len_size + frame_size <= m_readBuffer.size()) {
142142
if (!m_dataStart.has_value()) {
143143
throw std::runtime_error("Read RPC message meta data error.");
144144
}
145-
auto frame_data = std::string(m_readBuffer, m_dataStart.value(), frame_size);
146-
m_readBuffer = std::string(m_readBuffer, consumed_len + frame_size);
145+
auto data_start = m_dataStart.value();
146+
auto data_len = frame_len_size + frame_size - m_dataStart.value();
147+
auto frame_data = std::string(m_readBuffer, data_start, data_len);
148+
m_readBuffer = std::string(m_readBuffer, frame_len_size + frame_size);
147149
m_frames.emplace_back(m_protocol, std::move(m_meta), std::move(frame_data));
148150
m_meta = {};
149151
m_dataStart = {};

0 commit comments

Comments
 (0)