view auto/lib/sha1/conf @ 5541:fdb67cfc957d

Fixed TCP_DEFER_ACCEPT handling (ticket #353). Backed out 05a56ebb084a, as it turns out that kernel can return connections without any delay if syncookies are used. This basically means we can't assume anything about connections returned with deferred accept set. To solve original problem the 05a56ebb084a tried to solve, i.e. to don't wait longer than needed if a connection was accepted after deferred accept timeout, this patch changes a timeout set with setsockopt(TCP_DEFER_ACCEPT) to 1 second, unconditionally. This is believed to be enough for speed improvements, and doesn't imply major changes to timeouts used. Note that before 2.6.32 connections were dropped after a timeout. Though it is believed that 1s is still appropriate for kernels before 2.6.32, as previously tcp_synack_retries controlled the actual timeout and 1s results in more than 1 minute actual timeout by default.
author Maxim Dounin <mdounin@mdounin.ru>
date Tue, 28 Jan 2014 15:40:46 +0400
parents b0a616778038
children 78f8ac479735
line wrap: on
line source


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


if [ $SHA1 != NONE ]; then

    have=NGX_HAVE_SHA1 . auto/have
    CORE_INCS="$CORE_INCS $SHA1"

    case "$NGX_CC_NAME" in

        msvc* | owc* | bcc)
            LINK_DEPS="$LINK_DEPS $SHA1/sha1.lib"
            CORE_LIBS="$CORE_LIBS $SHA1/sha1.lib"
        ;;

        icc*)
            LINK_DEPS="$LINK_DEPS $SHA1/libsha.a"

            # to allow -ipo optimization we link with the *.o but not library
            CORE_LIBS="$CORE_LIBS $SHA1/sha1_dgst.o"

            if [ $SHA1_ASM = YES ]; then
                CORE_LIBS="$CORE_LIBS $SHA1/asm/sx86-elf.o"
            fi
        ;;

        *)
            LINK_DEPS="$LINK_DEPS $SHA1/libsha.a"
            CORE_LIBS="$CORE_LIBS $SHA1/libsha.a"
            #CORE_LIBS="$CORE_LIBS -L $SHA1 -lsha"
        ;;

    esac

else

    if [ "$NGX_PLATFORM" != win32 ]; then

        SHA1=NO

        # FreeBSD

        ngx_feature="sha1 in system md library"
        ngx_feature_name=NGX_HAVE_SHA1
        ngx_feature_run=no
        ngx_feature_incs="#include <sha.h>"
        ngx_feature_path=
        ngx_feature_libs="-lmd"
        ngx_feature_test="SHA_CTX sha1; SHA1_Init(&sha1)"
        . auto/feature

        ngx_sha1_lib="system md"

        if [ $ngx_found = no ]; then

            # OpenSSL crypto library

            ngx_feature="sha1 in system OpenSSL crypto library"
            ngx_feature_incs="#include <openssl/sha.h>"
            ngx_feature_libs="-lcrypto"
            . auto/feature

            ngx_sha1_lib="system crypto"

            if [ $ngx_found = yes ]; then
                have=NGX_HAVE_OPENSSL_SHA1_H . auto/have
            fi
        fi

        if [ $ngx_found = yes ]; then
            CORE_LIBS="$CORE_LIBS $ngx_feature_libs"
            SHA1=YES
            SHA1_LIB=$ngx_sha1_lib
        fi
    fi

fi