Fix chunked body handling in fallback routine (#1585)
This commit is contained in:
@@ -580,6 +580,18 @@ public:
|
|||||||
length -= consumed.first - had;
|
length -= consumed.first - had;
|
||||||
|
|
||||||
if (remainingStreamingBytes) {
|
if (remainingStreamingBytes) {
|
||||||
|
/* 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 {
|
||||||
// this is exactly the same as above!
|
// this is exactly the same as above!
|
||||||
if (remainingStreamingBytes >= (unsigned int) length) {
|
if (remainingStreamingBytes >= (unsigned int) length) {
|
||||||
void *returnedUser = dataHandler(user, std::string_view(data, length), remainingStreamingBytes == (unsigned int) length);
|
void *returnedUser = dataHandler(user, std::string_view(data, length), remainingStreamingBytes == (unsigned int) length);
|
||||||
@@ -598,6 +610,7 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
if (fallback.length() == MAX_FALLBACK_SIZE) {
|
if (fallback.length() == MAX_FALLBACK_SIZE) {
|
||||||
|
|||||||
Reference in New Issue
Block a user