view auto/lib/perl/conf @ 4232:487ab473f393

Event pipe: fixes for complex protocols. 1. In ngx_event_pipe_write_chain_to_temp_file() make sure to fully write all shadow buffers up to last_shadow. With this change recycled buffers cannot appear in p->out anymore. This also fixes segmentation faults observed due to ngx_event_pipe_write_chain_to_temp() not freeing any raw buffers while still returning NGX_OK. 2. In ngx_event_pipe_write_to_downstream() we now properly check for busy size as a size of buffers, not a size of data in these buffers. This fixes situations where all available buffers became busy (including segmentation faults due to this). 3. The ngx_event_pipe_free_shadow_raw_buf() function is dropped. It's incorrect and not needed.
author Maxim Dounin <mdounin@mdounin.ru>
date Mon, 31 Oct 2011 09:53:16 +0000
parents 9581fba9ea12
children d620f497c50f
line wrap: on
line source


# Copyright (C) Igor Sysoev


echo "checking for perl"


NGX_PERL_VER=`$NGX_PERL -v 2>&1 | grep '^This is perl' 2>&1 \
                                | sed -e 's/^This is perl, \(.*\)/\1/'`

if test -n "$NGX_PERL_VER"; then
    echo " + perl version: $NGX_PERL_VER"

    if [ "`echo 'use 5.006001; print "OK"' | $NGX_PERL 2>&1`" != OK ]; then
        echo
        echo "$0: error: perl 5.6.1 or higher is required"
        echo

        exit 1;
    fi

    NGX_PERL_CFLAGS="$CFLAGS `$NGX_PERL -MExtUtils::Embed -e ccopts`"
    NGX_PM_CFLAGS=`$NGX_PERL -MExtUtils::Embed -e ccopts`

    # gcc 4.1/4.2 warn about unused values in pTHX_
    NGX_PERL_CFLAGS=`echo $NGX_PERL_CFLAGS \
                     | sed -e 's/-Wunused-value/-Wno-unused-value/'`
    # icc8 warns 'declaration hides parameter "my_perl"' in ENTER and LEAVE
    NGX_PERL_CFLAGS=`echo $NGX_PERL_CFLAGS \
                     | sed -e 's/-wd171/-wd171 -wd1599/'`

    ngx_perl_ldopts=`$NGX_PERL -MExtUtils::Embed -e ldopts`

    if $NGX_PERL -V:usemultiplicity | grep define > /dev/null; then
        have=NGX_HAVE_PERL_MULTIPLICITY . auto/have
        echo " + perl interpreter multiplicity found"
    fi

    if $NGX_PERL -V:useithreads | grep undef > /dev/null; then
        # FreeBSD port wants to link with -pthread non-threaded perl
        ngx_perl_ldopts=`echo $ngx_perl_ldopts | sed 's/ -pthread//'`
    fi

    CORE_LINK="$CORE_LINK $ngx_perl_ldopts"
    LINK_DEPS="$LINK_DEPS $NGX_OBJS/src/http/modules/perl/blib/arch/auto/nginx/nginx.so"

    if test -n "$NGX_PERL_MODULES"; then
        have=NGX_PERL_MODULES value="(u_char *) \"$NGX_PERL_MODULES\""
        . auto/define
        NGX_PERL_MODULES_MAN=$NGX_PERL_MODULES/man3
    fi

else
    echo
    echo "$0: error: perl 5.6.1 or higher is required"
    echo

    exit 1;
fi