view auto/lib/md5/conf @ 3755:76e3a93821b1

fix race condition if during reconfiguration two cache managers try to delete old inactive entries: one of them removes a entry just locked by other manager from the queue and the rbtree as long inactive entry, causes the latter manager to segfault leaving cache mutex locked, the bug has been introduced in r3727
author Igor Sysoev <igor@sysoev.ru>
date Thu, 02 Sep 2010 14:31:47 +0000
parents 4d47a0658e7d
children b659514a3948
line wrap: on
line source


# Copyright (C) Igor Sysoev


if [ $MD5 != NONE ]; then

    if grep MD5_Init $MD5/md5.h 2>&1 >/dev/null; then
        # OpenSSL md5
        OPENSSL_MD5=YES
        have=NGX_HAVE_OPENSSL_MD5 . auto/have
        have=NGX_OPENSSL_MD5 . auto/have
    else
        # rsaref md5
        OPENSSL_MD5=NO
    fi

    CORE_INCS="$CORE_INCS $MD5"

    case "$NGX_CC_NAME" in

        msvc* | owc* | bcc)
            LINK_DEPS="$LINK_DEPS $MD5/md5.lib"
            CORE_LIBS="$CORE_LIBS $MD5/md5.lib"
        ;;

        icc*)
            LINK_DEPS="$LINK_DEPS $MD5/libmd5.a"

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

            if [ $MD5_ASM = YES ]; then
                CORE_LIBS="$CORE_LIBS $MD5/asm/mx86-elf.o"
            fi
        ;;

        *)
            LINK_DEPS="$LINK_DEPS $MD5/libmd5.a"
            CORE_LIBS="$CORE_LIBS $MD5/libmd5.a"
            #CORE_LIBS="$CORE_LIBS -L $MD5 -lmd5"
        ;;

    esac

else

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

            MD5=NO

            # FreeBSD, Solaris 10

            ngx_feature="system md library"
            ngx_feature_name=
            ngx_feature_run=no
            ngx_feature_incs="#include <md5.h>"
            ngx_feature_path=
            ngx_feature_libs="-lmd"
            ngx_feature_test="MD5_CTX md5; MD5Init(&md5)"
            . auto/feature

            ngx_md5_lib="system md"

        if [ $ngx_found = no ]; then

            # Solaris 8/9

            ngx_feature="system md5 library"
            ngx_feature_libs="-lmd5"
            . auto/feature

            ngx_md5_lib="system md5"
        fi

        if [ $ngx_found = no ]; then

            # OpenSSL crypto library

            ngx_feature="OpenSSL md5 crypto library"
            ngx_feature_name="NGX_OPENSSL_MD5"
            ngx_feature_incs="#include <openssl/md5.h>"
            ngx_feature_libs="-lcrypto"
            ngx_feature_test="MD5_CTX md5; MD5_Init(&md5)"
            . auto/feature

            ngx_md5_lib="system crypto"

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

        if [ $ngx_found = yes ]; then
            CORE_LIBS="$CORE_LIBS $ngx_feature_libs"
            MD5=YES
            MD5_LIB=$ngx_md5_lib
        fi
    fi

    if [ $MD5 != YES ]; then
cat << END

$0: error: the HTTP cache module requires md5 functions
from OpenSSL library.  You can either disable the module by using
--without-http-cache option, or install the OpenSSL library into the system,
or build the OpenSSL library statically from the source with nginx by using
--with-http_ssl_module --with-openssl=<path> options.

END
        exit 1
    fi

fi