Reproducable apache 1.3.26 /modproxy issue viewing www.kbb.com

Reproducable apache 1.3.26 /modproxy issue viewing www.kbb.com

am 10.08.2002 01:32:06 von Geff

--=-CwGOfDDpyvWMPkaI9tMN
Content-Type: text/plain
Content-Transfer-Encoding: 7bit

Howdy,

Overview: The shows a blank page instead of the website.

To Reproduce: (I'm including exact version numbers of the browser I
used, but I've seen it with other versions and different browsers as
well (ie 5.5 -blehhh) :)).

Client and Server Machine: Redhat 7.3 x86.

Steps:
- Download, build and install, apache 1.3.26
./configure --enable-module=most --prefix=/usr/local/apache
make
make install
blah blah :)
- Configure proxy services in apache. I have attached my httpd.conf.
- Configure Mozilla Build ID 2002051319 to use proxy.
- Flush memory cache and disk cache in browser.
- remove cache file in apache if exists - .../w/L/D/xIxiP9wnPxSezgrSfhQ
- Visit www.kbb.com with your browser
(at this point you should see .../w/L/D/xIxiP9wnPxSezgrSfhQ in the cache
and it should look good)
- once the page is done rendering do a shift 'reload' in mozilla
(which sends a Pragma: no-cache and a Cache-Control: no-cache, which
results in forcing the the cache to "revalidate")
- You should see a blank browser page
(at this point check the apache "cached file", you should see
Content-Length:0 in addition you see a "X-Cache: HIT from hostname (with
revalidation)\r\n" in a network (ethereal or other) trace. I have
included the prefix of the proper cache file as well as a corrupted one
below).

Has anyone seen this yet? Can others reproduce?

The information I have says that kbb.com is not akamaized, however I
didn't speak to them personally so I can't be sure how accurate that
report is.

Any help of any kind would be appreciated.

Is there anything further I need to provide?

Thanks much for your time. Sorry for the lengthy post.

Geff

-----


Proper cache file:

[root@boing D]$ more xIxiP9wnPxSezgrSfhQ
000000003D544BA6 000000003D4AB385 000000003D5540F1 0000000000000001
000000003D544B55 000000003D544B55 0000000000005D48
X-URL: http://www.kbb.com/
Accept:
text/xml,application/xml,application/xhtml+xml,text/html;q=0 .9,text/plain;q=0.8,video/x-mng,image/png,image/jpeg,image/g if;q=0.2,text/css,*/*;q=0.1
Accept-Charset: ISO-8859-1, utf-8;q=0.66, *;q=0.66
Accept-Encoding: gzip, deflate, compress;q=0.9
Accept-Language: en-us, en;q=0.50
Cookie: WEBTRENDS_ID=204.252.147.229-33195152.29507513;
KBBUser_ID=204.252.147.229WEB4-02089B5EBJWYYP0
Host: www.kbb.com
Keep-Alive: 300
Proxy-Connection: keep-alive
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.9)
Gecko/20020513

HTTP/1.1 200 OK
Server: Microsoft-IIS/5.0
Content-Location: http://www.kbb.com/index.html
Date: Fri, 09 Aug 2002 23:09:26 GMT
Content-Type: text/html
Accept-Ranges: bytes
Last-Modified: Fri, 02 Aug 2002 16:29:57 GMT
ETag: "60c713d7413ac21:a99"
Content-Length: 23880
Via: 1.1 localhost.localdomain




Kelley Blue Book - Used Car Bluebook Values and New Car<br /> Pricing


-----


Cache file after a "revalidation" occurs from the no-cache directive:

000000003D5447C6 000000003D4AB385 000000003D553CAE 0000000000000002
000000003D544775 000000003D544775 0000000000000000
X-URL: http://www.kbb.com/
Accept:
text/xml,application/xml,application/xhtml+xml,text/html;q=0 .9,text/plain;q=0.8,video/x-mng,image/png,image/jpeg,image/g if;q=0.2,text/css,*/*;q=0.1
Accept-Charset: ISO-8859-1, utf-8;q=0.66, *;q=0.66
Accept-Encoding: gzip, deflate, compress;q=0.9
Accept-Language: en-us, en;q=0.50
Cookie: WEBTRENDS_ID=204.252.147.229-33195152.29507513;
KBBUser_ID=204.252.147.229WEB4-02089B5EBJWYYP0
Host: www.kbb.com
Keep-Alive: 300
Proxy-Connection: keep-alive
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.9)
Gecko/20020513

HTTP/1.1 200 OK
Content-Type: text/html
Accept-Ranges: bytes
Last-Modified: Fri, 02 Aug 2002 16:29:57 GMT
Server: Microsoft-IIS/5.0
Date: Fri, 09 Aug 2002 22:52:54 GMT
Content-Location: http://www.kbb.com/index.html
ETag: "60c713d7413ac21:a90"
Content-Length: 0
Via: 1.1 localhost.localdomain



--=-CwGOfDDpyvWMPkaI9tMN
Content-Disposition: attachment; filename=httpd.conf
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; name=httpd.conf; charset=ISO-8859-15

##
## httpd.conf -- Apache HTTP server configuration file
##

#
# Based upon the NCSA server configuration files originally by Rob McCool.
#
# This is the main Apache server configuration file. It contains the
# configuration directives that give the server its instructions.
# See for detailed information about
# the directives.
#
# Do NOT simply read the instructions in here without understanding
# what they do. They're here only as hints or reminders. If you are unsur=
e
# consult the online docs. You have been warned. =20
#
# After this file is processed, the server will look for and process
# /usr/local/apache/conf/srm.conf and then /usr/local/apache/conf/access.co=
nf
# unless you have overridden these with ResourceConfig and/or
# AccessConfig directives here.
#
# The configuration directives are grouped into three basic sections:
# 1. Directives that control the operation of the Apache server process as=
a
# whole (the 'global environment').
# 2. Directives that define the parameters of the 'main' or 'default' serv=
er,
# which responds to requests that aren't handled by a virtual host.
# These directives also provide default values for the settings
# of all virtual hosts.
# 3. Settings for virtual hosts, which allow Web requests to be sent to
# different IP addresses or hostnames and have them handled by the
# same Apache server process.
#
# Configuration and logfile names: If the filenames you specify for many
# of the server's control files begin with "/" (or "drive:/" for Win32), th=
e
# server will use that explicit path. If the filenames do *not* begin
# with "/", the value of ServerRoot is prepended -- so "logs/foo.log"
# with ServerRoot set to "/usr/local/apache" will be interpreted by the
# server as "/usr/local/apache/logs/foo.log".
#

### Section 1: Global Environment
#
# The directives in this section affect the overall operation of Apache,
# such as the number of concurrent requests it can handle or where it
# can find its configuration files.
#

#
# ServerType is either inetd, or standalone. Inetd mode is only supported =
on
# Unix platforms.
#
ServerType standalone

#
# ServerRoot: The top of the directory tree under which the server's
# configuration, error, and log files are kept.
#
# NOTE! If you intend to place this on an NFS (or otherwise network)
# mounted filesystem then please read the LockFile documentation
# (available at );
# you will save yourself a lot of trouble.
#
ServerRoot "/usr/local/apache"

#
# The LockFile directive sets the path to the lockfile used when Apache
# is compiled with either USE_FCNTL_SERIALIZED_ACCEPT or
# USE_FLOCK_SERIALIZED_ACCEPT. This directive should normally be left at
# its default value. The main reason for changing it is if the logs
# directory is NFS mounted, since the lockfile MUST BE STORED ON A LOCAL
# DISK. The PID of the main server process is automatically appended to
# the filename.=20
#
#LockFile /usr/local/apache/logs/httpd.lock

#
# PidFile: The file in which the server should record its process
# identification number when it starts.
#
PidFile /usr/local/apache/logs/httpd.pid

#
# ScoreBoardFile: File used to store internal server process information.
# Not all architectures require this. But if yours does (you'll know becau=
se
# this file will be created when you run Apache) then you *must* ensure th=
at
# no two invocations of Apache share the same scoreboard file.
#
ScoreBoardFile /usr/local/apache/logs/httpd.scoreboard

#
# In the standard configuration, the server will process httpd.conf (this=20
# file, specified by the -f command line option), srm.conf, and access.conf=
=20
# in that order. The latter two files are now distributed empty, as it is=20
# recommended that all directives be kept in a single file for simplicity. =
=20
# The commented-out values below are the built-in defaults. You can have t=
he=20
# server ignore these files altogether by using "/dev/null" (for Unix) or
# "nul" (for Win32) for the arguments to the directives.
#
#ResourceConfig conf/srm.conf
#AccessConfig conf/access.conf

#
# Timeout: The number of seconds before receives and sends time out.
#
Timeout 300

#
# KeepAlive: Whether or not to allow persistent connections (more than
# one request per connection). Set to "Off" to deactivate.
#
KeepAlive On

#
# MaxKeepAliveRequests: The maximum number of requests to allow
# during a persistent connection. Set to 0 to allow an unlimited amount.
# We recommend you leave this number high, for maximum performance.
#
MaxKeepAliveRequests 100

#
# KeepAliveTimeout: Number of seconds to wait for the next request from the
# same client on the same connection.
#
KeepAliveTimeout 15

#
# Server-pool size regulation. Rather than making you guess how many
# server processes you need, Apache dynamically adapts to the load it
# sees --- that is, it tries to maintain enough server processes to
# handle the current load, plus a few spare servers to handle transient
# load spikes (e.g., multiple simultaneous requests from a single
# Netscape browser).
#
# It does this by periodically checking how many servers are waiting
# for a request. If there are fewer than MinSpareServers, it creates
# a new spare. If there are more than MaxSpareServers, some of the
# spares die off. The default values are probably OK for most sites.
#
MinSpareServers 5
MaxSpareServers 10

#
# Number of servers to start initially --- should be a reasonable ballpark
# figure.
#
StartServers 5

#
# Limit on total number of servers running, i.e., limit on the number
# of clients who can simultaneously connect --- if this limit is ever
# reached, clients will be LOCKED OUT, so it should NOT BE SET TOO LOW.
# It is intended mainly as a brake to keep a runaway server from taking
# the system with it as it spirals down...
#
MaxClients 150

#
# MaxRequestsPerChild: the number of requests each child process is
# allowed to process before the child dies. The child will exit so
# as to avoid problems after prolonged use when Apache (and maybe the
# libraries it uses) leak memory or other resources. On most systems, this
# isn't really needed, but a few (such as Solaris) do have notable leaks
# in the libraries. For these platforms, set to something like 10000
# or so; a setting of 0 means unlimited.
#
# NOTE: This value does not include keepalive requests after the initial
# request per connection. For example, if a child process handles
# an initial request and 10 subsequent "keptalive" requests, it
# would only count as 1 request towards this limit.
#
MaxRequestsPerChild 0

#
# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, in addition to the default. See also the
# directive.
#
#Listen 3000
#Listen 12.34.56.78:80

#
# BindAddress: You can support virtual hosts with this option. This directi=
ve
# is used to tell the server which IP address to listen to. It can either
# contain "*", an IP address, or a fully qualified Internet domain name.
# See also the and Listen directives.
#
#BindAddress *

#
# Dynamic Shared Object (DSO) Support
#
# To be able to use the functionality of a module which was built as a DSO =
you
# have to place corresponding `LoadModule' lines at this location so the
# directives contained in it are actually available _before_ they are used.
# Please read the file http://httpd.apache.org/docs/dso.html for more
# details about the DSO mechanism and run `httpd -l' for the list of alread=
y
# built-in (statically linked and thus always available) modules in your ht=
tpd
# binary.
#
# Note: The order in which modules are loaded is important. Don't change
# the order below without expert advice.
#
# Example:
# LoadModule foo_module libexec/mod_foo.so

#
# ExtendedStatus controls whether Apache will generate "full" status
# information (ExtendedStatus On) or just basic information (ExtendedStatus
# Off) when the "server-status" handler is called. The default is Off.
#
#ExtendedStatus On

### Section 2: 'Main' server configuration
#
# The directives in this section set up the values used by the 'main'
# server, which responds to any requests that aren't handled by a
# definition. These values also provide defaults for
# any containers you may define later in the file.
#
# All of these directives may appear inside containers,
# in which case these default settings will be overridden for the
# virtual host being defined.
#

#
# If your ServerType directive (set earlier in the 'Global Environment'
# section) is set to "inetd", the next few directives don't have any
# effect since their settings are defined by the inetd configuration.
# Skip ahead to the ServerAdmin directive.
#

#
# Port: The port to which the standalone server listens. For
# ports < 1023, you will need httpd to be run as root initially.
#
Port 80

#
# If you wish httpd to run as a different user or group, you must run
# httpd as root initially and it will switch. =20
#
# User/Group: The name (or #number) of the user/group to run httpd as.
# . On SCO (ODT 3) use "User nouser" and "Group nogroup".
# . On HPUX you may not be able to use shared memory as nobody, and the
# suggested workaround is to create a user www and use that user.
# NOTE that some kernels refuse to setgid(Group) or semctl(IPC_SET)
# when the value of (unsigned)Group is above 60000;=20
# don't use Group nobody on these systems!
#
User nobody
Group nobody

#
# ServerAdmin: Your address, where problems with the server should be
# e-mailed. This address appears on some server-generated pages, such
# as error documents.
#
ServerAdmin boing@boing.tms.toyota.com

#
# ServerName allows you to set a host name which is sent back to clients fo=
r
# your server if it's different than the one the program would get (i.e., u=
se
# "www" instead of the host's real name).
#
# Note: You cannot just invent host names and hope they work. The name you=20
# define here must be a valid DNS name for your host. If you don't understa=
nd
# this, ask your network administrator.
# If your host doesn't have a registered DNS name, enter its IP address her=
e.
# You will have to access it by its address (e.g., http://123.45.67.89/)
# anyway, and this will make redirections work in a sensible way.
#
# 127.0.0.1 is the TCP/IP local loop-back address, often named localhost. Y=
our=20
# machine always knows itself by this address. If you use Apache strictly f=
or=20
# local testing and development, you may use 127.0.0.1 as the server name.
#
#ServerName boing.tms.toyota.com

#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/usr/local/apache/htdocs"

#
# Each directory to which Apache has access, can be configured with respect
# to which services and features are allowed and/or disabled in that
# directory (and its subdirectories).=20
#
# First, we configure the "default" to be a very restrictive set of=20
# permissions. =20
#

Options FollowSymLinks
AllowOverride None


#
# Note that from this point forward you must specifically allow
# particular features to be enabled - so if something's not working as
# you might expect, make sure that you have specifically enabled it
# below.
#

#
# This should be changed to whatever you set DocumentRoot to.
#


#
# This may also be "None", "All", or any combination of "Indexes",
# "Includes", "FollowSymLinks", "ExecCGI", or "MultiViews".
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
Options Indexes FollowSymLinks MultiViews

#
# This controls which options the .htaccess files in directories can
# override. Can also be "All", or any combination of "Options", "FileInfo",=
=20
# "AuthConfig", and "Limit"
#
AllowOverride None

#
# Controls who can get stuff from this server.
#
Order allow,deny
Allow from all


#
# UserDir: The name of the directory which is appended onto a user's home
# directory if a ~user request is received.
#

UserDir public_html


#
# Control access to UserDir directories. The following is an example
# for a site where these directories are restricted to read-only.
#
#
# AllowOverride FileInfo AuthConfig Limit
# Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
#
# Order allow,deny
# Allow from all
#

#
# Order deny,allow
# Deny from all
#

#


#
# DirectoryIndex: Name of the file or files to use as a pre-written HTML
# directory index. Separate multiple entries with spaces.
#

DirectoryIndex index.html


#
# AccessFileName: The name of the file to look for in each directory
# for access control information.
#
AccessFileName .htaccess

#
# The following lines prevent .htaccess files from being viewed by
# Web clients. Since .htaccess files often contain authorization
# information, access is disallowed for security reasons. Comment
# these lines out if you want Web visitors to see the contents of
# .htaccess files. If you change the AccessFileName directive above,
# be sure to make the corresponding changes here.
#
# Also, folks tend to use names such as .htpasswd for password
# files, so this will protect those as well.
#

Order allow,deny
Deny from all
Satisfy All


#
# CacheNegotiatedDocs: By default, Apache sends "Pragma: no-cache" with eac=
h
# document that was negotiated on the basis of content. This asks proxy
# servers not to cache the document. Uncommenting the following line disabl=
es
# this behavior, and proxies will be allowed to cache the documents.
#
#CacheNegotiatedDocs

#
# UseCanonicalName: (new for 1.3) With this setting turned on, whenever
# Apache needs to construct a self-referencing URL (a URL that refers back
# to the server the response is coming from) it will use ServerName and
# Port to form a "canonical" name. With this setting off, Apache will
# use the hostname:port that the client supplied, when possible. This
# also affects SERVER_NAME and SERVER_PORT in CGI scripts.
#
UseCanonicalName On

#
# TypesConfig describes where the mime.types file (or equivalent) is
# to be found.
#

TypesConfig /usr/local/apache/conf/mime.types


#
# DefaultType is the default MIME type the server will use for a document
# if it cannot otherwise determine one, such as from filename extensions.
# If your server contains mostly text or HTML documents, "text/plain" is
# a good value. If most of your content is binary, such as applications
# or images, you may want to use "application/octet-stream" instead to
# keep browsers from trying to display binary files as though they are
# text.
#
DefaultType text/plain

#
# The mod_mime_magic module allows the server to use various hints from the
# contents of the file itself to determine its type. The MIMEMagicFile
# directive tells the module where the hint definitions are located.
# mod_mime_magic is not part of the default server (you have to add
# it yourself with a LoadModule [see the DSO paragraph in the 'Global
# Environment' section], or recompile the server and include mod_mime_magic
# as part of the configuration), so it's enclosed in an containe=
r.
# This means that the MIMEMagicFile directive will only be processed if the
# module is part of the server.
#

MIMEMagicFile /usr/local/apache/conf/magic


#
# HostnameLookups: Log the names of clients or just their IP addresses
# e.g., www.apache.org (on) or 204.62.129.132 (off).
# The default is off because it'd be overall better for the net if people
# had to knowingly turn this feature on, since enabling it means that
# each client request will result in AT LEAST one lookup request to the
# nameserver.
#
HostnameLookups Off

#
# ErrorLog: The location of the error log file.
# If you do not specify an ErrorLog directive within a
# container, error messages relating to that virtual host will be
# logged here. If you *do* define an error logfile for a
# container, that host's errors will be logged there and not here.
#
ErrorLog /usr/local/apache/logs/error_log

#
# LogLevel: Control the number of messages logged to the error_log.
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
#
LogLevel warn

#
# The following directives define some format nicknames for use with
# a CustomLog directive (see below).
#
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" co=
mbined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent

#
# The location and format of the access logfile (Common Logfile Format).
# If you do not define any access logfiles within a
# container, they will be logged here. Contrariwise, if you *do*
# define per- access logfiles, transactions will be
# logged therein and *not* in this file.
#
CustomLog /usr/local/apache/logs/access_log common

#
# If you would like to have agent and referer logfiles, uncomment the
# following directives.
#
#CustomLog /usr/local/apache/logs/referer_log referer
#CustomLog /usr/local/apache/logs/agent_log agent

#
# If you prefer a single logfile with access, agent, and referer informatio=
n
# (Combined Logfile Format) you can use the following directive.
#
#CustomLog /usr/local/apache/logs/access_log combined

#
# Optionally add a line containing the server version and virtual host
# name to server-generated pages (error documents, FTP directory listings,
# mod_status and mod_info output etc., but not CGI generated documents).
# Set to "EMail" to also include a mailto: link to the ServerAdmin.
# Set to one of: On | Off | EMail
#
ServerSignature On

# EBCDIC configuration:
# (only for mainframes using the EBCDIC codeset, currently one of:
# Fujitsu-Siemens' BS2000/OSD, IBM's OS/390 and IBM's TPF)!!
# The following default configuration assumes that "text files"
# are stored in EBCDIC (so that you can operate on them using the
# normal POSIX tools like grep and sort) while "binary files" are
# stored with identical octets as on an ASCII machine.
#
# The directives are evaluated in configuration file order, with
# the EBCDICConvert directives applied before EBCDICConvertByType.
#
# If you want to have ASCII HTML documents and EBCDIC HTML documents
# at the same time, you can use the file extension to force
# conversion off for the ASCII documents:
# > AddType text/html .ahtml
# > EBCDICConvert Off=3DInOut .ahtml
#
# EBCDICConvertByType On=3DInOut text/* message/* multipart/*
# EBCDICConvertByType On=3DIn application/x-www-form-urlencoded
# EBCDICConvertByType On=3DInOut application/postscript model/vrml
# EBCDICConvertByType Off=3DInOut */*


#
# Aliases: Add here as many aliases as you need (with no limit). The format=
is=20
# Alias fakename realname
#


#
# Note that if you include a trailing / on fakename then the server wil=
l
# require it to be present in the URL. So "/icons" isn't aliased in th=
is
# example, only "/icons/". If the fakename is slash-terminated, then t=
he=20
# realname must also be slash terminated, and if the fakename omits the=
=20
# trailing slash, the realname must also omit it.
#
Alias /icons/ "/usr/local/apache/icons/"


Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all


# This Alias will project the on-line documentation tree under /manual/
# even if you change the DocumentRoot. Comment it if you don't want to=20
# provide access to the on-line documentation.
#
Alias /manual/ "/usr/local/apache/htdocs/manual/"


Options Indexes FollowSymlinks MultiViews
AllowOverride None
Order allow,deny
Allow from all


#
# ScriptAlias: This controls which directories contain server scripts.
# ScriptAliases are essentially the same as Aliases, except that
# documents in the realname directory are treated as applications and
# run by the server when requested rather than as documents sent to the=
client.
# The same rules about trailing "/" apply to ScriptAlias directives as =
to
# Alias.
#
ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/"

#
# "/usr/local/apache/cgi-bin" should be changed to whatever your Script=
Aliased
# CGI directory exists, if you have that configured.
#

AllowOverride None
Options None
Order allow,deny
Allow from all



# End of aliases.

#
# Redirect allows you to tell clients about documents which used to exist i=
n
# your server's namespace, but do not anymore. This allows you to tell the
# clients where to look for the relocated document.
# Format: Redirect old-URI new-URL
#

#
# Directives controlling the display of server-generated directory listings=
..
#


#
# FancyIndexing is whether you want fancy directory indexing or standar=
d
#
IndexOptions FancyIndexing

#
# AddIcon* directives tell the server which icon to show for different
# files or filename extensions. These are only displayed for
# FancyIndexed directories.
#
AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip

AddIconByType (TXT,/icons/text.gif) text/*
AddIconByType (IMG,/icons/image2.gif) image/*
AddIconByType (SND,/icons/sound2.gif) audio/*
AddIconByType (VID,/icons/movie.gif) video/*

AddIcon /icons/binary.gif .bin .exe
AddIcon /icons/binhex.gif .hqx
AddIcon /icons/tar.gif .tar
AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
AddIcon /icons/a.gif .ps .ai .eps
AddIcon /icons/layout.gif .html .shtml .htm .pdf
AddIcon /icons/text.gif .txt
AddIcon /icons/c.gif .c
AddIcon /icons/p.gif .pl .py
AddIcon /icons/f.gif .for
AddIcon /icons/dvi.gif .dvi
AddIcon /icons/uuencoded.gif .uu
AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
AddIcon /icons/tex.gif .tex
AddIcon /icons/bomb.gif core

AddIcon /icons/back.gif ..
AddIcon /icons/hand.right.gif README
AddIcon /icons/folder.gif ^^DIRECTORY^^
AddIcon /icons/blank.gif ^^BLANKICON^^

#
# DefaultIcon is which icon to show for files which do not have an icon
# explicitly set.
#
DefaultIcon /icons/unknown.gif

#
# AddDescription allows you to place a short description after a file i=
n
# server-generated indexes. These are only displayed for FancyIndexed
# directories.
# Format: AddDescription "description" filename
#
#AddDescription "GZIP compressed document" .gz
#AddDescription "tar archive" .tar
#AddDescription "GZIP compressed tar archive" .tgz

#
# ReadmeName is the name of the README file the server will look for by
# default, and append to directory listings.
#
# HeaderName is the name of a file which should be prepended to
# directory indexes.=20
#
# If MultiViews are amongst the Options in effect, the server will
# first look for name.html and include it if found. If name.html
# doesn't exist, the server will then look for name.txt and include
# it as plaintext if found.
#
ReadmeName README
HeaderName HEADER

#
# IndexIgnore is a set of filenames which directory indexing should ign=
ore
# and not include in the listing. Shell-style wildcarding is permitted=
..
#
IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t


# End of indexing directives.

#
# Document types.
#


#
# AddEncoding allows you to have certain browsers (Mosaic/X 2.1+) uncom=
press
# information on the fly. Note: Not all browsers support this.
# Despite the name similarity, the following Add* directives have nothi=
ng
# to do with the FancyIndexing customization directives above.
#
AddEncoding x-compress Z
AddEncoding x-gzip gz tgz

#
# AddLanguage allows you to specify the language of a document. You can
# then use content negotiation to give a browser a file in a language
# it can understand. =20
#
# Note 1: The suffix does not have to be the same as the language=20
# keyword --- those with documents in Polish (whose net-standard=20
# language code is pl) may wish to use "AddLanguage pl .po" to=20
# avoid the ambiguity with the common suffix for perl scripts.
#
# Note 2: The example entries below illustrate that in quite
# some cases the two character 'Language' abbreviation is not
# identical to the two character 'Country' code for its country,
# E.g. 'Danmark/dk' versus 'Danish/da'.
#
# Note 3: In the case of 'ltz' we violate the RFC by using a three char=
=20
# specifier. But there is 'work in progress' to fix this and get=20
# the reference data for rfc1766 cleaned up.
#
# Danish (da) - Dutch (nl) - English (en) - Estonian (ee)
# French (fr) - German (de) - Greek-Modern (el)
# Italian (it) - Korean (kr) - Norwegian (no) - Norwegian Nynorsk (nn)
# Portugese (pt) - Luxembourgeois* (ltz)
# Spanish (es) - Swedish (sv) - Catalan (ca) - Czech(cz)
# Polish (pl) - Brazilian Portuguese (pt-br) - Japanese (ja)
# Russian (ru)
#
AddLanguage da .dk
AddLanguage nl .nl
AddLanguage en .en
AddLanguage et .ee
AddLanguage fr .fr
AddLanguage de .de
AddLanguage el .el
AddLanguage he .he
AddCharset ISO-8859-8 .iso8859-8
AddLanguage it .it
AddLanguage ja .ja
AddCharset ISO-2022-JP .jis
AddLanguage kr .kr
AddCharset ISO-2022-KR .iso-kr
AddLanguage nn .nn
AddLanguage no .no
AddLanguage pl .po
AddCharset ISO-8859-2 .iso-pl
AddLanguage pt .pt
AddLanguage pt-br .pt-br
AddLanguage ltz .lu
AddLanguage ca .ca
AddLanguage es .es
AddLanguage sv .sv
AddLanguage cz .cz
AddLanguage ru .ru
AddLanguage zh-tw .tw
AddLanguage tw .tw
AddCharset Big5 .Big5 .big5
AddCharset WINDOWS-1251 .cp-1251
AddCharset CP866 .cp866
AddCharset ISO-8859-5 .iso-ru
AddCharset KOI8-R .koi8-r
AddCharset UCS-2 .ucs2
AddCharset UCS-4 .ucs4
AddCharset UTF-8 .utf8

# LanguagePriority allows you to give precedence to some languages
# in case of a tie during content negotiation.
#
# Just list the languages in decreasing order of preference. We have
# more or less alphabetized them here. You probably want to change this=
..
#

LanguagePriority en da nl et fr de el it ja kr no pl pt pt-br ru lt=
z ca es sv tw


#
# AddType allows you to tweak mime.types without actually editing it, o=
r to
# make certain files to be certain types.
#
AddType application/x-tar .tgz

#
# AddHandler allows you to map certain file extensions to "handlers",
# actions unrelated to filetype. These can be either built into the ser=
ver
# or added with the Action command (see below)
#
# If you want to use server side includes, or CGI outside
# ScriptAliased directories, uncomment the following lines.
#
# To use CGI scripts:
#
#AddHandler cgi-script .cgi

#
# To use server-parsed HTML files
#
#AddType text/html .shtml
#AddHandler server-parsed .shtml

#
# Uncomment the following line to enable Apache's send-asis HTTP file
# feature
#
#AddHandler send-as-is asis

#
# If you wish to use server-parsed imagemap files, use
#
#AddHandler imap-file map

#
# To enable type maps, you might want to use
#
#AddHandler type-map var


# End of document types.

#
# Action lets you define media types that will execute a script whenever
# a matching file is called. This eliminates the need for repeated URL
# pathnames for oft-used CGI file processors.
# Format: Action media/type /cgi-script/location
# Format: Action handler-name /cgi-script/location
#

#
# MetaDir: specifies the name of the directory in which Apache can find
# meta information files. These files contain additional HTTP headers
# to include when sending the document
#
#MetaDir .web

#
# MetaSuffix: specifies the file name suffix for the file containing the
# meta information.
#
#MetaSuffix .meta

#
# Customizable error response (Apache style)
# these come in three flavors
#
# 1) plain text
#ErrorDocument 500 "The server made a boo boo.
# n.b. the single leading (") marks it as text, it does not get output
#
# 2) local redirects
#ErrorDocument 404 /missing.html
# to redirect to local URL /missing.html
#ErrorDocument 404 /cgi-bin/missing_handler.pl
# N.B.: You can redirect to a script or a document using server-side-inclu=
des.
#
# 3) external redirects
#ErrorDocument 402 http://some.other-server.com/subscription_info.html
# N.B.: Many of the environment variables associated with the original
# request will *not* be available to such a script.

#
# Customize behaviour based on the browser
#


#
# The following directives modify normal HTTP response behavior.
# The first directive disables keepalive for Netscape 2.x and browsers =
that
# spoof it. There are known problems with these browser implementations=
..
# The second directive is for Microsoft Internet Explorer 4.0b2
# which has a broken HTTP/1.1 implementation and does not properly
# support keepalive when it is used on 301 or 302 (redirect) responses.
#
BrowserMatch "Mozilla/2" nokeepalive
BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.=
0

#
# The following directive disables HTTP/1.1 responses to browsers which
# are in violation of the HTTP/1.0 spec by not being able to grok a
# basic 1.1 response.
#
BrowserMatch "RealPlayer 4\.0" force-response-1.0
BrowserMatch "Java/1\.0" force-response-1.0
BrowserMatch "JDK/1\.0" force-response-1.0


# End of browser customization directives

#
# Allow server status reports, with the URL of http://servername/server-sta=
tus
# Change the ".your-domain.com" to match your domain to enable.
#
#
# SetHandler server-status
# Order deny,allow
# Deny from all
# Allow from .your-domain.com
#


#
# Allow remote server configuration reports, with the URL of
# http://servername/server-info (requires that mod_info.c be loaded).
# Change the ".your-domain.com" to match your domain to enable.
#
#
# SetHandler server-info
# Order deny,allow
# Deny from all
# Allow from .your-domain.com
#


#
# There have been reports of people trying to abuse an old bug from pre-1.1
# days. This bug involved a CGI script distributed as a part of Apache.
# By uncommenting these lines you can redirect these attacks to a logging=20
# script on phf.apache.org. Or, you can record them yourself, using the sc=
ript
# support/phf_abuse_log.cgi.
#
#
# Deny from all
# ErrorDocument 403 http://phf.apache.org/phf_abuse_log.cgi
#


#
# Proxy Server directives. Uncomment the following lines to
# enable the proxy server:
#

ProxyRequests On


Order deny,allow
Deny from all
# Allow from .your-domain.com
Allow from 127.0.0.1


#
# Enable/disable the handling of HTTP/1.1 "Via:" headers.
# ("Full" adds the server version; "Block" removes all outgoing Via: he=
aders)
# Set to one of: Off | On | Full | Block
#
ProxyVia On

#
# To enable the cache as well, edit and uncomment the following lines:
# (no cacheing without CacheRoot)
#
CacheRoot "/usr/local/apache/proxy"
CacheSize 5
CacheGcInterval 4
CacheMaxExpire 24
CacheLastModifiedFactor 0.1
CacheDefaultExpire 1
# NoCache a-domain.com another-domain.edu joes.garage-sale.com


# End of proxy directives.

### Section 3: Virtual Hosts
#
# VirtualHost: If you want to maintain multiple domains/hostnames on your
# machine you can setup VirtualHost containers for them. Most configuration=
s
# use only name-based virtual hosts so the server doesn't need to worry abo=
ut
# IP addresses. This is indicated by the asterisks in the directives below.
#
# Please see the documentation at
# for further details before you try to setup virtual hosts.
#
# You may use the command line option '-S' to verify your virtual host
# configuration.

#
# Use name-based virtual hosting.
#
#NameVirtualHost *

#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for requests without a known
# server name.
#
#
# ServerAdmin webmaster@dummy-host.example.com
# DocumentRoot /www/docs/dummy-host.example.com
# ServerName dummy-host.example.com
# ErrorLog logs/dummy-host.example.com-error_log
# CustomLog logs/dummy-host.example.com-access_log common
#


--=-CwGOfDDpyvWMPkaI9tMN--

Re: Reproducable apache 1.3.26 /modproxy issue viewing www.kbb.com

am 10.08.2002 19:26:19 von Geff

Geff wrote:

> Overview: The shows a blank page instead of the website.


^^^^^^ er ... Overview: The browser shows a blank page instead of the
website. :)

-----

I'd also like to say that this issue doesn't just affect the 'no-cache'
case but it also seems to affect the case when the cache decides it
needs to revalidate a resource with the original server. The 'no-cache'
method is just a convenient way to demonstrate the problem and force the
cache to try to revalidate the resource.

Geff

Re: Reproducable apache 1.3.26 /modproxy issue viewing www.kbb.com

am 12.08.2002 19:04:21 von Geff

Geff wrote:
Overview: The shows a blank page instead of the website.

^^^^^^ er ... Overview: The browser shows a blank page instead of the
website. :)

-----

I'd also like to say that this issue doesn't just affect the 'no-cache'
case but it also seems to affect the case when the cache decides it
needs to revalidate a resource with the original server. The 'no-cache'
method is just a convenient way to demonstrate the problem and force the
cache to try to revalidate the resource.

Geff

Re: Reproducable apache 1.3.26 /modproxy issue viewing www.kbb.com

am 12.08.2002 20:47:58 von Graham Leggett

Geff wrote:

> I'd also like to say that this issue doesn't just affect the 'no-cache'
> case but it also seems to affect the case when the cache decides it
> needs to revalidate a resource with the original server. The 'no-cache'
> method is just a convenient way to demonstrate the problem and force the
> cache to try to revalidate the resource.

From what I understand this is caused by some buggy versions of IIS v5
which send Content-Length: 0 along with 304 responses.

Regards,
Graham
--
-----------------------------------------
minfrin@sharp.fm
"There's a moon
over Bourbon Street
tonight..."

Re: Reproducable apache 1.3.26 /modproxy issue viewing www.kbb.com

am 12.08.2002 23:19:07 von Geff

Graham,

Thanks for your response. That is EXACTLY what I found from my
weekend's research as well. I hadn't seen anything come to this list
regarding it so I posted the question. I also saw your post here:

http://www.apachelabs.org/apache-mbox/200205.mbox/%3C3CD785C 5.CE9E3FB5@sharp.fm%3E

another related post here by a different author:

http://www.apachelabs.org/apache-mbox/200205.mbox/%3C2002050 6155811.GC25734@fermat.math.technion.ac.il%3E


I'm looking for the Microsoft bug report. Does anyone know if any
service pack fixes it?. This is causing me a ton of trouble. Thanks
for your help. Sorry to waste your time with this. And sorry to blame
apache.

Geff

On Mon, 2002-08-12 at 11:47, Graham Leggett wrote:
> Geff wrote:
>
> > I'd also like to say that this issue doesn't just affect the 'no-cache'
> > case but it also seems to affect the case when the cache decides it
> > needs to revalidate a resource with the original server. The 'no-cache'
> > method is just a convenient way to demonstrate the problem and force the
> > cache to try to revalidate the resource.
>
> From what I understand this is caused by some buggy versions of IIS v5
> which send Content-Length: 0 along with 304 responses.
>
> Regards,
> Graham
> --
> -----------------------------------------
> minfrin@sharp.fm
> "There's a moon
> over Bourbon Street
> tonight..."
>

Re: Reproducable apache 1.3.26 /modproxy issue viewing www.kbb.com

am 13.08.2002 02:50:58 von Geff

--=-NuhsM1NNabos5hq1UK8F
Content-Type: text/plain
Content-Transfer-Encoding: 7bit

I've written a patch that seems to address the problem.

I just wanted others to have the option to apply it. I think it's
ridiculous to have to break apache, an RFC compliant server to be able
to view a website. But what am I going to do about it? :) The truth is
the patch should remove ANY entity-header variable. But I only chose to
deal with the Content-Length variable in the short term.

Comments are welcome as always.

Enjoy,

Geff

On Mon, 2002-08-12 at 11:47, Graham Leggett wrote:
> Geff wrote:
>
> > I'd also like to say that this issue doesn't just affect the 'no-cache'
> > case but it also seems to affect the case when the cache decides it
> > needs to revalidate a resource with the original server. The 'no-cache'
> > method is just a convenient way to demonstrate the problem and force the
> > cache to try to revalidate the resource.
>
> From what I understand this is caused by some buggy versions of IIS v5
> which send Content-Length: 0 along with 304 responses.
>
> Regards,
> Graham
> --
> -----------------------------------------
> minfrin@sharp.fm
> "There's a moon
> over Bourbon Street
> tonight..."
>





--=-NuhsM1NNabos5hq1UK8F
Content-Disposition: attachment; filename=cl.patch
Content-Transfer-Encoding: quoted-printable
Content-Type: text/x-patch; name=cl.patch; charset=ISO-8859-15

*** /home/boing/apache_1.3.26/src/modules/proxy/proxy_cache.c Mon Aug 12 17=
:20:58 2002
--- proxy_cache.c Mon Aug 12 17:43:03 2002
***************
*** 1519,1524 ****
--- 1519,1530 ----
ap_log_error(APLOG_MARK, APLOG_DEBUG | APLOG_NOERRNO, r->server, =
"Expiry date calculated %ld", (long)expc);
}
=20
+ /* Accommodate BUSTED IIS servers. Microsoft can't seem to pay attention=
to RFC 2616.
+ * When sending a response of code 304 (HTTP_NOT_MODIFIED) you cannot sen=
d any=20
+ * entity-header variables. This patch deletes only the Content-Length v=
ariable. */
+ if (r->status == HTTP_NOT_MODIFIED) {
+ ap_table_unset(resp_hdrs,"Content-Length");
+ }
/* get the content-length header */
clen =3D ap_table_get(resp_hdrs, "Content-Length");
if (clen == NULL)

--=-NuhsM1NNabos5hq1UK8F--

Re: Reproducable apache 1.3.26 /modproxy issue viewing www.kbb.com

am 13.08.2002 10:19:19 von rl

--HlL+5n6rz5pIUxbD
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

Dear Geff,

I have sent the attached mail to the apache developers list back in May. I said
exactly the same thing, but the group decided that IIS bugs are not their
responsibility. This was very disappointing... I modified the proxy_cache code
myself

--- apache_1.3.24/src/modules/proxy/proxy_cache.c 2002-03-13 23:05:32+02
+++ apache_1.3.24/src/modules/proxy/proxy_cache.c 2002-05-07 20:13:08+03
@@ -1477,6 +1487,10 @@
ap_log_error(APLOG_MARK, APLOG_DEBUG|APLOG_NOERRNO, r->server, "Expiry
date calculated %ld", (long)expc);
}

+/* Ignore content-length on 304 reponse, buggy IIS sends it! */
+ if (r->status == HTTP_NOT_MODIFIED) {
+ ap_table_unset(resp_hdrs, "Content-Length");
+ }
/* get the content-length header */
clen = ap_table_get(resp_hdrs, "Content-Length");
if (clen == NULL)

which is essentially what you suggest. It is frustrating to hear that other
people fall again and again to the same trap I fell into!

On Mon, 12 Aug 2002 17:50:58 -0700, Geff wrote about "Re: Reproducable apache 1.3.26 /modproxy issue viewing www.kbb.com":
> I've written a patch that seems to address the problem.
>
> I just wanted others to have the option to apply it. I think it's
> ridiculous to have to break apache, an RFC compliant server to be able
> to view a website. But what am I going to do about it? :) The truth is
> the patch should remove ANY entity-header variable. But I only chose to
> deal with the Content-Length variable in the short term.
>
> Comments are welcome as always.
>
> Enjoy,
>
> Geff
>
> On Mon, 2002-08-12 at 11:47, Graham Leggett wrote:
> > Geff wrote:
> >
> > > I'd also like to say that this issue doesn't just affect the 'no-cache'
> > > case but it also seems to affect the case when the cache decides it
> > > needs to revalidate a resource with the original server. The 'no-cache'
> > > method is just a convenient way to demonstrate the problem and force the
> > > cache to try to revalidate the resource.
> >
> > From what I understand this is caused by some buggy versions of IIS v5
> > which send Content-Length: 0 along with 304 responses.
> >
> > Regards,
> > Graham
> > --
> > -----------------------------------------
> > minfrin@sharp.fm
> > "There's a moon
> > over Bourbon Street
> > tonight..."
> >
>
>
>
>


--
Dr. Zvi Har'El mailto:rl@math.technion.ac.il Department of Mathematics
tel:+972-54-227607 Technion - Israel Institute of Technology
fax:+972-4-8324654 http://www.math.technion.ac.il/~rl/ Haifa 32000, ISRAEL
"If you can't say somethin' nice, don't say nothin' at all." -- Thumper (1942)
Tuesday, 5 Elul 5762, 13 August 2002, 11:05AM

--HlL+5n6rz5pIUxbD
Content-Type: message/rfc822
Content-Disposition: inline

Date: Mon, 6 May 2002 18:58:11 +0300
From: Zvi Har'El
To: Apache Developer List
Cc: Nadav Har'El
Bcc: Yuval Pemper , Asaf Oren
Subject: proxy_cache handles "304 Not Modified" incorrectly
Message-ID: <20020506155811.GC25734@fermat.math.technion.ac.il>
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
User-Agent: Mutt/1.3.99i
Hebrew-Date: 24 Iyyar 5762

Dear Apache developers,

I have noticed today that when Microsoft-IIS/5.0 sends a "304 Not Modified"
response to IMS GET request, it (incorrectly IMHO) sends with it a
"Content-Length: 0" header. This is (again IMHO) a bug in IIS, but because of
that, IMS GET request with "Pragma: no-cache" headers are not handled
correctly: When the cache revalidation is done, in ap_proxy_cache_update(), the
content length is reset (in line 1481 in apache_1.3.24, line 1508 in the
current snapshot of apache_1.3.25-dev, file proxy_cache.c), before the status
is checked to be HTTP_NOT_MODIFIED (in line 1513 or 1547 resp). This makes the
erroneous Content-Length: 0 header replace the real length in the cache file
headers, and the file is destroyed. Not this doesn't happen without the
"Pragma: no-cache" header. A possible fix would be do ignore the
"Content-Length" in the response in case of "304 Not Modified", but I think
that perhaps no header in such a response should replace the cached headers!

Best,

Zvi.


--
Dr. Zvi Har'El mailto:rl@math.technion.ac.il Department of Mathematics
tel:+972-54-227607 Technion - Israel Institute of Technology
fax:+972-4-8324654 http://www.math.technion.ac.il/~rl/ Haifa 32000, ISRAEL
"If you can't say somethin' nice, don't say nothin' at all." -- Thumper (1942)
Monday, 25 Iyyar 5762, 6 May 2002, 6:42PM

--HlL+5n6rz5pIUxbD--

Re: Reproducable apache 1.3.26 /modproxy issue viewing www.kbb.com

am 13.08.2002 18:10:19 von Geff

Zvi and all,

I have mixed thoughts about the whole thing. There are two sides to
the story.

1. mod_proxy is RFC compliant - So why break apache to accommodate M$'s
lack of ability to read and implement a standard that was published in
June 1999? Yesterday I was talking to an MCS consultant and he said,
"well that standard is so old!" I responded with, "yeah .. three years
and MS still hasn't had time to read it." :) I was laughing, he wasn't.
:)

2. There are a LOT of IIS servers on the Internet - So until EVERY ONE
of them is patched this will be a problem for folks using apache as a
proxy/cache. I was considering reworking the previous patch (yours and
mine, very similar) to incorporate *ALL* of the entity-headers in
section 7.1 to insulate against contamination via IIS servers into the
apache proxy. Unfortunately, as I previously stated, there are a *TON*
(tm) of IIS servers on the Internet. Until they are *ALL* patched,
assuming such a patch exists or is created, we are all at risk. I
really consider this type of patch to be a defensive patch for
mod_proxy, more than anything else.

Thoughts?

I'd like to thank Graham for sending me down the path to solution.

Geff

Re: Reproducable apache 1.3.26 /modproxy issue viewing www.kbb.com

am 13.08.2002 18:30:33 von Alex Rousskov

On 13 Aug 2002, Geff wrote:

> 1. mod_proxy is RFC compliant - So why break apache to
> accommodate M$'s lack of ability to read and implement a standard
> that was published in June 1999?

IMO, removing Content-Length header from 304 responses will not change
alleged mod_proxy compliance. In fact, one could argue that removing
entity headers is the right thing to do for proxy implementations
trying to follow IETF cornerstone principle of "garbage in, compliance
out".

Personally, I would not remove all entity headers in fear of
introducing incompatibilities with broken clients that were tested
with (written for) MS servers only. Removing just the Content-Length
header seems to be sufficient to fix the problem at hand. Note that
according to RFC 2616, 304s never have a body so filtering or ignoring
Content-Length header should be safe.

Alex.

--
| HTTP performance - Web Polygraph benchmark
www.measurement-factory.com | HTTP compliance+ - Co-Advisor test suite
| all of the above - PolyBox appliance

Re: Reproducable apache 1.3.26 /modproxy issue viewing www.kbb.com

am 13.08.2002 19:57:27 von Geff

On Tue, 2002-08-13 at 09:30, Alex Rousskov wrote:
> On 13 Aug 2002, Geff wrote:
>
> > 1. mod_proxy is RFC compliant - So why break apache to
> > accommodate M$'s lack of ability to read and implement a standard
> > that was published in June 1999?
>
> IMO, removing Content-Length header from 304 responses will not change
> alleged mod_proxy compliance. In fact, one could argue that removing
> entity headers is the right thing to do for proxy implementations
> trying to follow IETF cornerstone principle of "garbage in, compliance
> out".
>

But to your point of Garbage in -> compliance out. 10.3.5 says, "no
entity headers in a 304 response." So it seems to make more sense to
remove all or none.

Geff

Re: Reproducable apache 1.3.26 /modproxy issue viewing www.kbb.com

am 13.08.2002 20:29:57 von Alex Rousskov

On 13 Aug 2002, Geff wrote:

> On Tue, 2002-08-13 at 09:30, Alex Rousskov wrote:
> > On 13 Aug 2002, Geff wrote:
> >
> > > 1. mod_proxy is RFC compliant - So why break apache to
> > > accommodate M$'s lack of ability to read and implement a standard
> > > that was published in June 1999?
> >
> > IMO, removing Content-Length header from 304 responses will not change
> > alleged mod_proxy compliance. In fact, one could argue that removing
> > entity headers is the right thing to do for proxy implementations
> > trying to follow IETF cornerstone principle of "garbage in, compliance
> > out".
> >
>
> But to your point of Garbage in -> compliance out. 10.3.5 says, "no
> entity headers in a 304 response." So it seems to make more sense to
> remove all or none.

That is why I prepended the second paragraph with "personally" :-).
Yes, if one follows IETF principle to the letter, one should probably
remove all entity headers. However, real-world operation often
requires supporting known incompliant behavior. That is why I would
not try to clean up garbage more than we know is necessary.

$0.02,

Alex.

--
| HTTP performance - Web Polygraph benchmark
www.measurement-factory.com | HTTP compliance+ - Co-Advisor test suite
| all of the above - PolyBox appliance