Skip to content

Commit

Permalink
Fix chunked body handling in fallback routine (#1585)
Browse files Browse the repository at this point in the history
  • Loading branch information
webcarrot authored Mar 6, 2023
1 parent 6243be0 commit 8410f7e
Showing 1 changed file with 24 additions and 11 deletions.
35 changes: 24 additions & 11 deletions src/HttpParser.h
Original file line number Diff line number Diff line change
Expand Up @@ -580,21 +580,34 @@ struct HttpParser {
length -= consumed.first - had;

if (remainingStreamingBytes) {
// this is exactly the same as above!
if (remainingStreamingBytes >= (unsigned int) length) {
void *returnedUser = dataHandler(user, std::string_view(data, length), remainingStreamingBytes == (unsigned int) length);
remainingStreamingBytes -= length;
return returnedUser;
/* It's either chunked or with a content-length */
if (isParsingChunkedEncoding(remainingStreamingBytes)) {
std::string_view dataToConsume(data, length);
for (auto chunk : uWS::ChunkIterator(&dataToConsume, &remainingStreamingBytes)) {
dataHandler(user, chunk, chunk.length() == 0);
}
if (isParsingInvalidChunkedEncoding(remainingStreamingBytes)) {
return FULLPTR;
}
data = (char *) dataToConsume.data();
length = (unsigned int) dataToConsume.length();
} else {
void *returnedUser = dataHandler(user, std::string_view(data, remainingStreamingBytes), true);
// this is exactly the same as above!
if (remainingStreamingBytes >= (unsigned int) length) {
void *returnedUser = dataHandler(user, std::string_view(data, length), remainingStreamingBytes == (unsigned int) length);
remainingStreamingBytes -= length;
return returnedUser;
} else {
void *returnedUser = dataHandler(user, std::string_view(data, remainingStreamingBytes), true);

data += remainingStreamingBytes;
length -= remainingStreamingBytes;
data += remainingStreamingBytes;
length -= remainingStreamingBytes;

remainingStreamingBytes = 0;
remainingStreamingBytes = 0;

if (returnedUser != user) {
return returnedUser;
if (returnedUser != user) {
return returnedUser;
}
}
}
}
Expand Down

0 comments on commit 8410f7e

Please sign in to comment.