Skip to content

Commit 9232c78

Browse files
martindukecopybara-github
authored andcommitted
No public description
PiperOrigin-RevId: 676868509
1 parent 7cebd70 commit 9232c78

File tree

1 file changed

+10
-5
lines changed

1 file changed

+10
-5
lines changed

quiche/quic/moqt/moqt_parser.cc

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -845,14 +845,19 @@ void MoqtDataParser::ProcessData(absl::string_view data, bool fin) {
845845
while (!buffered_message_.empty() && !data.empty()) {
846846
absl::string_view chunk = data.substr(0, chunk_size_);
847847
absl::StrAppend(&buffered_message_, chunk);
848-
data.remove_prefix(chunk.size());
849-
850-
buffered_message_.assign(
851-
ProcessDataInner(buffered_message_, fin && data.empty()));
848+
absl::string_view unprocessed =
849+
ProcessDataInner(buffered_message_, fin && data.size() == chunk.size());
850+
if (unprocessed.size() >= chunk.size()) {
851+
// chunk didn't allow any processing at all.
852+
data.remove_prefix(chunk.size());
853+
} else {
854+
buffered_message_.clear();
855+
data.remove_prefix(chunk.size() - unprocessed.size());
856+
}
852857
}
853858

854859
// Happy path: there is no buffered data.
855-
if (buffered_message_.empty()) {
860+
if (buffered_message_.empty() && !data.empty()) {
856861
buffered_message_.assign(ProcessDataInner(data, fin));
857862
}
858863

0 commit comments

Comments
 (0)