varnishd

An embarrasing typo in the new binary heap layout caused inflated obj/objcore/objhdr counts and could cause odd problems when the LRU expunge mechanism was invoked. This has been fixed.

We now have updated documentation in the reStructuredText format. Manual pages and reference documentation are both built from this.

We now include a DNS director which uses DNS for choosing which backend to route requests to. Please see the documentation for more details.

If you restarted a request, the HTTP header `X-Forwarded-For` would be updated multiple times. This has been fixed.

If a VCL contained a % sign, and the `vcl.show` CLI command was used, varnishd would crash. This has been fixed.

When doing a pass operation, we would remove the `Content-Length`, `Age` and `Proxy-Auth` headers. We are no longer doing this.

`now` has a string representation, making it easier to construct `Expires` headers in VCL.

In a high traffic environment, we would sometimes reuse a file descriptor before flushing the logs from a worker thread to the shared log buffer. This would cause confusion in some of the tools. This has been fixed by explicitly flushing the log when a backend connection is closed.

If the communication between the management and the child process gets out of sync, we have no way to recover. Previously, `varnishd` would be confused, but we now just kill the child and restart it.

If the backend closes the connection on us just as we sent a request to it, we retry the request. This should solve some interoperability problems with Apache and the mpm-itk multi processing module.

`varnishd` now only provides help output the current CLI session is authenticated for.

If the backend does not tell us which length indication it is using, we now assume the resource ends EOF at.

The client director now has a variable `client.identity` which is used to choose which backend should receive a given request.

The Solaris `port` waiter has been updated, and other portability fixes for Solaris.

There was a corner case in the close-down processing of pipes, this has now been fixed.

Previously, if we stopped polling a backend which was sick, it never got marked as healthy. This has now been changed.

It is now possible to specify ports as part of the `.host` field in VCL.

The synthetic counters were not locked properly, and so the `sms_` counters could underflow. This has now been fixed.

The value of `obj.status` as a string in vcl_error would not be correct in all cases. This has been fixed.

Varnish would try to trim storage segments completely filled when using the malloc stevedore and the object was received chunked encoding. This has been fixed.

If a buggy backend sends us a `Vary` header with two colons, we would previously abort. We now rather fix this up and ignore the extra colon.

`req.hash_always_miss` and `req.hash_ignore_busy` has been added, to make preloading or periodically refreshing content work better.

varnishncsa

`varnishncsa` would in some cases be confused by ESI requests and output invalid lines. This has now been fixed.

varnishlog

`varnishlog` now allows `-o` and `-u` together.

varnishtop

`varnishtop` would crash on 32 bit architectures. This has been fixed.

libvarnishapi

Regex inclusion and exclusion had problems with matching particular parts of the string being matched. This has been fixed.