This prevents forming empty records out of such buffers. Particularly it fixes
double end-of-stream records with chunked transfer encoding, or when HTTP/2 is
used and the END_STREAM flag has been sent without data. In both cases there
is an empty buffer at the end of the request body chain with the "last_buf"
flag set.
The canonical libfcgi, as well as php implementation, tolerates such records,
while the HHVM parser is more strict and drops the connection (ticket #950).
while (body) {
+ if (ngx_buf_special(body->buf)) {
+ body = body->next;
+ continue;
+ }
+
if (body->buf->in_file) {
file_pos = body->buf->file_pos;