Mercurial > hg > nginx-quic
view auto/os/conf @ 6428:545b5e4d83b2
Upstream: avoid closing client connection in edge case.
If proxy_cache is enabled, and proxy_no_cache tests true, it was previously
possible for the client connection to be closed after a 304. The fix is to
recheck r->header_only after the final cacheability is determined, and end the
request if no longer cacheable.
Example configuration:
proxy_cache foo;
proxy_cache_bypass 1;
proxy_no_cache 1;
If a client sends If-None-Match, and the upstream server returns 200 with a
matching ETag, no body should be returned to the client. At the start of
ngx_http_upstream_send_response proxy_no_cache is not yet tested, thus cacheable
is still 1 and downstream_error is set.
However, by the time the downstream_error check is done in process_request,
proxy_no_cache has been tested and cacheable is set to 0. The client connection
is then closed, regardless of keepalive.
author | Justin Li <jli.justinli@gmail.com> |
---|---|
date | Tue, 08 Mar 2016 22:31:55 -0500 |
parents | a88e309f839b |
children | 639e48c382a6 |
line wrap: on
line source
# Copyright (C) Igor Sysoev # Copyright (C) Nginx, Inc. echo "checking for $NGX_SYSTEM specific features" case "$NGX_PLATFORM" in FreeBSD:*) . auto/os/freebsd ;; Linux:*) . auto/os/linux ;; SunOS:*) . auto/os/solaris ;; Darwin:*) . auto/os/darwin ;; win32) . auto/os/win32 ;; DragonFly:*) have=NGX_FREEBSD . auto/have_headers CORE_INCS="$UNIX_INCS" CORE_DEPS="$UNIX_DEPS $FREEBSD_DEPS" CORE_SRCS="$UNIX_SRCS $FREEBSD_SRCS" echo " + sendfile() found" have=NGX_HAVE_SENDFILE . auto/have CORE_SRCS="$CORE_SRCS $FREEBSD_SENDFILE_SRCS" ngx_spacer=' ' ;; HP-UX:*) # HP/UX have=NGX_HPUX . auto/have_headers CORE_INCS="$UNIX_INCS" CORE_DEPS="$UNIX_DEPS $POSIX_DEPS" CORE_SRCS="$UNIX_SRCS" CC_AUX_FLAGS="$CC_AUX_FLAGS -D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1" CC_AUX_FLAGS="$CC_AUX_FLAGS -D_HPUX_ALT_XOPEN_SOCKET_API" ;; OSF1:*) # Tru64 UNIX have=NGX_TRU64 . auto/have_headers have=NGX_HAVE_STRERROR_R . auto/nohave CORE_INCS="$UNIX_INCS" CORE_DEPS="$UNIX_DEPS $POSIX_DEPS" CORE_SRCS="$UNIX_SRCS" ;; GNU:*) # GNU Hurd have=NGX_GNU_HURD . auto/have_headers CORE_INCS="$UNIX_INCS" CORE_DEPS="$UNIX_DEPS $POSIX_DEPS" CORE_SRCS="$UNIX_SRCS" CC_AUX_FLAGS="$CC_AUX_FLAGS -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64" ;; *) CORE_INCS="$UNIX_INCS" CORE_DEPS="$UNIX_DEPS $POSIX_DEPS" CORE_SRCS="$UNIX_SRCS" ;; esac case "$NGX_MACHINE" in i386 | i686 | i86pc) have=NGX_HAVE_NONALIGNED . auto/have NGX_MACH_CACHE_LINE=32 ;; amd64 | x86_64) have=NGX_HAVE_NONALIGNED . auto/have NGX_MACH_CACHE_LINE=64 ;; sun4u | sun4v | sparc | sparc64) have=NGX_ALIGNMENT value=16 . auto/define # TODO NGX_MACH_CACHE_LINE=64 ;; ia64 ) have=NGX_ALIGNMENT value=16 . auto/define # TODO NGX_MACH_CACHE_LINE=64 ;; *) have=NGX_ALIGNMENT value=16 . auto/define NGX_MACH_CACHE_LINE=32 ;; esac if test -z "$NGX_CPU_CACHE_LINE"; then NGX_CPU_CACHE_LINE=$NGX_MACH_CACHE_LINE fi have=NGX_CPU_CACHE_LINE value=$NGX_CPU_CACHE_LINE . auto/define