]> git.kaiwu.me - nginx.git/commit
Fixed sendfile() limit handling on Linux.
authorMaxim Dounin <mdounin@mdounin.ru>
Fri, 29 Oct 2021 17:21:51 +0000 (20:21 +0300)
committerMaxim Dounin <mdounin@mdounin.ru>
Fri, 29 Oct 2021 17:21:51 +0000 (20:21 +0300)
commit6b0d773fbd95675b64ceaa34aefd60ae92b2a96b
treecbb6329257bcf64c2060b7744fc5094716b355d4
parent00f4be1ce498df08e097925b08cfb1f84a8fda29
Fixed sendfile() limit handling on Linux.

On Linux starting with 2.6.16, sendfile() silently limits all operations
to MAX_RW_COUNT, defined as (INT_MAX & PAGE_MASK).  This incorrectly
triggered the interrupt check, and resulted in 0-sized writev() on the
next loop iteration.

Fix is to make sure the limit is always checked, so we will return from
the loop if the limit is already reached even if number of bytes sent is
not exactly equal to the number of bytes we've tried to send.
src/os/unix/ngx_linux_sendfile_chain.c