Mercurial > hg > nginx-quic
changeset 5868:6bbad2e73245
Fixed counting of sent bytes in the send chain functions on EINTR.
Previously, a value of the "send" variable wasn't properly adjusted
in a rare case when syscall was interrupted by a signal. As a result,
these functions could send less data than the limit allows.
author | Valentin Bartenev <vbart@nginx.com> |
---|---|
date | Wed, 27 Aug 2014 20:51:01 +0400 |
parents | 26d28506282a |
children | fd283aa92e04 |
files | src/os/unix/ngx_darwin_sendfile_chain.c src/os/unix/ngx_freebsd_sendfile_chain.c src/os/unix/ngx_linux_sendfile_chain.c src/os/unix/ngx_solaris_sendfilev_chain.c src/os/unix/ngx_writev_chain.c |
diffstat | 5 files changed, 5 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/os/unix/ngx_darwin_sendfile_chain.c +++ b/src/os/unix/ngx_darwin_sendfile_chain.c @@ -308,6 +308,7 @@ ngx_darwin_sendfile_chain(ngx_connection in = ngx_handle_sent_chain(in, sent); if (eintr) { + send = prev_send + sent; continue; }
--- a/src/os/unix/ngx_freebsd_sendfile_chain.c +++ b/src/os/unix/ngx_freebsd_sendfile_chain.c @@ -378,6 +378,7 @@ ngx_freebsd_sendfile_chain(ngx_connectio } if (eintr) { + send = prev_send + sent; continue; }
--- a/src/os/unix/ngx_linux_sendfile_chain.c +++ b/src/os/unix/ngx_linux_sendfile_chain.c @@ -316,6 +316,7 @@ ngx_linux_sendfile_chain(ngx_connection_ in = ngx_handle_sent_chain(in, sent); if (eintr) { + send = prev_send; continue; }