view auto/lib/zlib/make @ 5876:973fded4f461

Gzip, gunzip: flush busy buffers if any. Previous code resulted in transfer stalls when client happened to read all the data in buffers at once, while all gzip buffers were exhausted (but ctx->nomem wasn't set). Make sure to call next body filter at least once per call if there are busy buffers. Additionally, handling of calls with NULL chain was changed to follow the same logic, i.e., next body filter is only called with NULL chain if there are busy buffers. This is expected to fix "output chain is empty" alerts as reported by some users after c52a761a2029 (1.5.7).
author Maxim Dounin <mdounin@mdounin.ru>
date Wed, 15 Oct 2014 22:57:23 +0400
parents 3d2d3e1cf427
children 78f8ac479735
line wrap: on
line source


# Copyright (C) Igor Sysoev
# Copyright (C) Nginx, Inc.


case "$NGX_CC_NAME" in

    msvc*)
        ngx_makefile=makefile.msvc
        ngx_opt="CPU_OPT=\"$CPU_OPT\" LIBC=$LIBC"
        ngx_zlib="ZLIB=\"$ZLIB\""

    ;;

    owc*)
        ngx_makefile=makefile.owc
        ngx_opt="CPU_OPT=\"$CPU_OPT\""
        ngx_zlib=`echo ZLIB=\"$ZLIB\" | sed -e "s/\//$ngx_regex_dirsep/g"`
    ;;

    bcc)
        ngx_makefile=makefile.bcc
        ngx_opt="-DCPU_OPT=\"$CPU_OPT\""
        ngx_zlib=`echo \-DZLIB=\"$ZLIB\" | sed -e "s/\//$ngx_regex_dirsep/g"`
    ;;

    *)
        ngx_makefile=
    ;;

esac


done=NO


case "$NGX_PLATFORM" in

    win32)

        if [ -n "$ngx_makefile" ]; then
            cat << END                                        >> $NGX_MAKEFILE

`echo "$ZLIB/zlib.lib:	$NGX_MAKEFILE" | sed -e "s/\//$ngx_regex_dirsep/g"`
	\$(MAKE) -f auto/lib/zlib/$ngx_makefile $ngx_opt $ngx_zlib

END

        else

            cat << END                                        >> $NGX_MAKEFILE

$ZLIB/libz.a:	$NGX_MAKEFILE
	cd $ZLIB \\
	&& \$(MAKE) distclean \\
	&& \$(MAKE) -f win32/Makefile.gcc \\
		CFLAGS="$ZLIB_OPT" CC="\$(CC)" \\
		libz.a

END

        fi

        done=YES
    ;;

    # FreeBSD: i386
    # Linux: i686

    *:i386 | *:i686)
        case $ZLIB_ASM in
            pentium)

                cat << END                                    >> $NGX_MAKEFILE

$ZLIB/libz.a:	$NGX_MAKEFILE
	cd $ZLIB \\
	&& \$(MAKE) distclean \\
	&& cp contrib/asm586/match.S . \\
	&& CFLAGS="$ZLIB_OPT -DASMV" CC="\$(CC)" \\
		./configure \\
	&& \$(MAKE) OBJA=match.o libz.a

END

                done=YES
            ;;

            pentiumpro)

                cat << END                                    >> $NGX_MAKEFILE

$ZLIB/libz.a:	$NGX_MAKEFILE
	cd $ZLIB \\
	&& \$(MAKE) distclean \\
	&& cp contrib/asm686/match.S . \\
	&& CFLAGS="$ZLIB_OPT -DASMV" CC="\$(CC)" \\
		./configure \\
	&& \$(MAKE) OBJA=match.o libz.a

END

                done=YES
            ;;

            NO)
            ;;

            *)
                echo "$0: error: invalid --with-zlib-asm=$ZLIB_ASM option."
                echo "The valid values are \"pentium\" and \"pentiumpro\" only".
                echo

                exit 1;
            ;;
        esac
    ;;

esac


if [ $done = NO ]; then

    cat << END                                                >> $NGX_MAKEFILE

$ZLIB/libz.a:	$NGX_MAKEFILE
	cd $ZLIB \\
	&& \$(MAKE) distclean \\
	&& CFLAGS="$ZLIB_OPT" CC="\$(CC)" \\
		./configure \\
	&& \$(MAKE) libz.a

END

fi