Mercurial > hg > nginx
view auto/lib/conf @ 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 | 85dea406e18f |
line wrap: on
line source
# Copyright (C) Igor Sysoev # Copyright (C) Nginx, Inc. if [ $USE_PCRE = YES -o $PCRE != NONE ]; then . auto/lib/pcre/conf else if [ $USE_PCRE = DISABLED -a $HTTP_REWRITE = YES ]; then cat << END $0: error: the HTTP rewrite module requires the PCRE library. You can either disable the module by using --without-http_rewrite_module option or you have to enable the PCRE support. END exit 1 fi fi if [ $USE_OPENSSL = YES ]; then . auto/lib/openssl/conf fi if [ $USE_MD5 = YES ]; then if [ $USE_OPENSSL = YES ]; then have=NGX_HAVE_OPENSSL_MD5_H . auto/have have=NGX_OPENSSL_MD5 . auto/have have=NGX_HAVE_MD5 . auto/have MD5=YES MD5_LIB=OpenSSL else . auto/lib/md5/conf fi fi if [ $USE_SHA1 = YES ]; then if [ $USE_OPENSSL = YES ]; then have=NGX_HAVE_OPENSSL_SHA1_H . auto/have have=NGX_HAVE_SHA1 . auto/have SHA1=YES SHA1_LIB=OpenSSL else . auto/lib/sha1/conf fi fi if [ $USE_ZLIB = YES ]; then . auto/lib/zlib/conf fi if [ $USE_LIBXSLT = YES ]; then . auto/lib/libxslt/conf fi if [ $USE_LIBGD = YES ]; then . auto/lib/libgd/conf fi if [ $USE_PERL = YES ]; then . auto/lib/perl/conf fi if [ $HTTP_GEOIP = YES ]; then . auto/lib/geoip/conf fi if [ $NGX_GOOGLE_PERFTOOLS = YES ]; then . auto/lib/google-perftools/conf fi if [ $NGX_LIBATOMIC != NO ]; then . auto/lib/libatomic/conf fi