In the case we are truncating a multipart file because of reaching
request.body-limit, we used to not consume the whole buffer, but
keep expected_boundary_len bytes in case a new boundary begins
in these bytes.
Even if we cannot check the complete boundary, we can still check
the first bytes, as will be done in the rust version.
Ticket: #5952
(cherry picked from commit
578f328e06b3e03f3bdbbf852b5d121e20849b8b)
(cherry picked from commit
caf9940fd10f474bcbc7bf983e3849a83a8c7562)
if (chunks_buffer_len > expected_boundary_end_len) {
const uint8_t *filedata = chunks_buffer;
uint32_t filedata_len = chunks_buffer_len - expected_boundary_len;
+ for (; filedata_len < chunks_buffer_len; filedata_len++) {
+ // take as much as we can until the beginning of a new line
+ if (chunks_buffer[filedata_len] == '\r') {
+ if (filedata_len + 1 == chunks_buffer_len ||
+ chunks_buffer[filedata_len + 1] == '\n') {
+ break;
+ }
+ }
+ }
+
#ifdef PRINT
printf("FILEDATA (part) START: \n");
PrintRawDataFp(stdout, filedata, filedata_len);