view auto/lib/openssl/make @ 4895:508e61393b6c

Event pipe: fixed handling of buf_to_file data. Input filter might free a buffer if there is no data in it, and in case of first buffer (used for cache header and request header, aka p->buf_to_file) this resulted in cache corruption. Buffer memory was reused to read upstream response before headers were written to disk. Fix is to avoid moving pointers in ngx_event_pipe_add_free_buf() to a buffer start if we were asked to free a buffer used by p->buf_to_file. This fixes occasional cache file corruption, usually resulted in "cache file ... has md5 collision" alerts. Reported by Anatoli Marinov.
author Maxim Dounin <mdounin@mdounin.ru>
date Tue, 30 Oct 2012 11:14:24 +0000
parents d620f497c50f
children f817f9d1cded
line wrap: on
line source


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


case "$CC" in

    cl)

        cat << END                                            >> $NGX_MAKEFILE

$OPENSSL/openssl/include/openssl/ssl.h:	$NGX_MAKEFILE
	\$(MAKE) -f auto/lib/openssl/makefile.msvc			\
		OPENSSL="$OPENSSL" OPENSSL_OPT="$OPENSSL_OPT"

END

    ;;

    bcc32)

        ngx_opt=`echo "-DOPENSSL=\"$OPENSSL\" -DOPENSSL_OPT=\"$OPENSSL_OPT\"" \
            | sed -e "s/\//$ngx_regex_dirsep/g"`

        cat << END                                            >> $NGX_MAKEFILE

`echo "$OPENSSL\\openssl\\lib\\libeay32.lib:				\
	$OPENSSL\\openssl\\include\\openssl\\ssl.h"			\
	| sed -e "s/\//$ngx_regex_dirsep/g"`

`echo "$OPENSSL\\openssl\\lib\\ssleay32.lib:				\
	$OPENSSL\\openssl\\include\\openssl\\ssl.h"			\
	| sed -e "s/\//$ngx_regex_dirsep/g"`

`echo "$OPENSSL\\openssl\\include\\openssl\\ssl.h:	$NGX_MAKEFILE"	\
	| sed -e "s/\//$ngx_regex_dirsep/g"`
	\$(MAKE) -f auto/lib/openssl/makefile.bcc $ngx_opt

END

    ;;

    *)
        case $USE_THREADS in
            NO) OPENSSL_OPT="$OPENSSL_OPT no-threads" ;;
            *)  OPENSSL_OPT="$OPENSSL_OPT threads" ;;
        esac

        case $OPENSSL in
            /*) ngx_prefix="$OPENSSL/.openssl" ;;
            *)  ngx_prefix="$PWD/$OPENSSL/.openssl" ;;
        esac

        cat << END                                            >> $NGX_MAKEFILE

$OPENSSL/.openssl/include/openssl/ssl.h:	$NGX_MAKEFILE
	cd $OPENSSL \\
	&& \$(MAKE) clean \\
	&& ./config --prefix=$ngx_prefix no-shared $OPENSSL_OPT \\
	&& \$(MAKE) \\
	&& \$(MAKE) install LIBDIR=lib

END

    ;;

esac