Mercurial > hg > nginx-quic
view auto/feature @ 8672:a2613fc1bce5
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.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Fri, 29 Oct 2021 20:21:51 +0300 |
parents | e3faa5fb7772 |
children |
line wrap: on
line source
# Copyright (C) Igor Sysoev # Copyright (C) Nginx, Inc. echo $ngx_n "checking for $ngx_feature ...$ngx_c" cat << END >> $NGX_AUTOCONF_ERR ---------------------------------------- checking for $ngx_feature END ngx_found=no if test -n "$ngx_feature_name"; then ngx_have_feature=`echo $ngx_feature_name \ | tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ` fi if test -n "$ngx_feature_path"; then for ngx_temp in $ngx_feature_path; do ngx_feature_inc_path="$ngx_feature_inc_path -I $ngx_temp" done fi cat << END > $NGX_AUTOTEST.c #include <sys/types.h> $NGX_INCLUDE_UNISTD_H $ngx_feature_incs int main(void) { $ngx_feature_test; return 0; } END ngx_test="$CC $CC_TEST_FLAGS $CC_AUX_FLAGS $ngx_feature_inc_path \ -o $NGX_AUTOTEST $NGX_AUTOTEST.c $NGX_TEST_LD_OPT $ngx_feature_libs" ngx_feature_inc_path= eval "/bin/sh -c \"$ngx_test\" >> $NGX_AUTOCONF_ERR 2>&1" if [ -x $NGX_AUTOTEST ]; then case "$ngx_feature_run" in yes) # /bin/sh is used to intercept "Killed" or "Abort trap" messages if /bin/sh -c $NGX_AUTOTEST >> $NGX_AUTOCONF_ERR 2>&1; then echo " found" ngx_found=yes if test -n "$ngx_feature_name"; then have=$ngx_have_feature . auto/have fi else echo " found but is not working" fi ;; value) # /bin/sh is used to intercept "Killed" or "Abort trap" messages if /bin/sh -c $NGX_AUTOTEST >> $NGX_AUTOCONF_ERR 2>&1; then echo " found" ngx_found=yes cat << END >> $NGX_AUTO_CONFIG_H #ifndef $ngx_feature_name #define $ngx_feature_name `$NGX_AUTOTEST` #endif END else echo " found but is not working" fi ;; bug) # /bin/sh is used to intercept "Killed" or "Abort trap" messages if /bin/sh -c $NGX_AUTOTEST >> $NGX_AUTOCONF_ERR 2>&1; then echo " not found" else echo " found" ngx_found=yes if test -n "$ngx_feature_name"; then have=$ngx_have_feature . auto/have fi fi ;; *) echo " found" ngx_found=yes if test -n "$ngx_feature_name"; then have=$ngx_have_feature . auto/have fi ;; esac else echo " not found" echo "----------" >> $NGX_AUTOCONF_ERR cat $NGX_AUTOTEST.c >> $NGX_AUTOCONF_ERR echo "----------" >> $NGX_AUTOCONF_ERR echo $ngx_test >> $NGX_AUTOCONF_ERR echo "----------" >> $NGX_AUTOCONF_ERR fi rm -rf $NGX_AUTOTEST*