Find file
Fetching contributors…
Cannot retrieve contributors at this time
119 lines (83 sloc) 4.89 KB
Please note that this file is no longer maintained. Please refer to the
changes files in doc/
Change log for Varnish 1.0.4
Changes between 1.0.3 and 1.0.4
• The request workflow has been redesigned to simplify request processing and
eliminate code duplication. All codepaths which need to speak HTTP now
share a single implementation of the protocol. Some new VCL hooks have been
added, though they aren't much use yet. The only real user-visible change
should be that Varnish now handles persistent backend connections correctly
(see ticket #56).
• Support for multiple listen addresses has been added.
• An "include" facility has been added to VCL, allowing VCL code to pull in
code fragments from multiple files.
• Multiple definitions of the same VCL function are now concatenated into one
in the order in which they appear in the source. This simplifies the
mechanism for falling back to the built-in default for cases which aren't
handled in custom code, and facilitates modularization.
• The code used to format management command arguments before passing them on
to the child process would underestimate the amount of space needed to hold
each argument once quotes and special characters were properly escaped,
resulting in a buffer overflow. This has been corrected.
• The VCL compiler has been overhauled. Several memory leaks have been
plugged, and error detection and reporting has been improved throughout.
Parts of the compiler have been refactored to simplify future extension of
the language.
• A bug in the VCL compiler which resulted in incorrect parsing of the
decrement (-=) operator has been fixed.
• A new -C command-line option has been added which causes varnishd to
compile the VCL code (either from a file specified with -f or the built-in
default), print the resulting C code and exit.
• When processing a backend response using chunked encoding, if a chunk
header crosses a read buffer boundary, read additional bytes from the
backend connection until the chunk header is complete.
• A new ping_interval run-time parameter controls how often the management
process checks that the worker process is alive.
• A bug which would cause the worker process to dereference a NULL pointer
and crash if the backend did not respond has been fixed.
• In some cases, such as when they are used by AJAX applications to
circumvent Internet Explorer's over-eager disk cache, it may be desirable
to cache POST requests. However, the code path responsible for delivering
objects from cache would only transmit the response body when replying to a
GET request. This has been extended to also apply to POST.
This should be revisited at a later date to allow VCL code to control
whether the body is delivered.
• Varnish now respects Cache-control: s-maxage, and prefers it to
Cache-control: max-age if both are present.
This should be revisited at a later date to allow VCL code to control which
headers are used and how they are interpreted.
• When loading a new VCL script, the management process will now load the
compiled object to verify that it links correctly before instructing the
worker process to load it.
• A new -P command-line options has been added which causes varnishd to
create a PID file.
• The sendfile_threshold run-time parameter's default value has been set to
infinity after a variety of sendfile()-related bugs were discovered on
several platforms.
• When grouping log entries by request, varnishlog attempts to collapse the
log entry for a call to a VCL function with the log entry for the
corresponding return from VCL. When two VCL calls were made in succession,
varnishlog would incorrectly omit the newline between the two calls (see
ticket #95).
• New -D and -P command-line options have been added to daemonize and create
a pidfile, respectively.
• The formatting callback has been largely rewritten for clarity, robustness
and efficiency.
If a request included a Host: header, construct and output an absolute URL.
This makes varnishncsa output from servers which handle multiple virtual
hosts far more useful.
• The documentation—especially the VCL documentation—has been greatly
extended and improved.
Build system
• The name and location of the curses or ncurses library is now correctly
detected by the configure script instead of being hardcoded into affected
Makefiles. This allows Varnish to build correctly on a wider range of
• Compatibility shims for clock_gettime() are now correctly applied where
needed, allowing Varnish to build on MacOS X.
• The script will now correctly detect and warn about automake
versions which are known not to work correctly.