# Change log for Varnish 2.0.4

## Changes between 2.0.3 and 2.0.4

### varnishd

- Make Varnish more portable by pulling in fixes for Solaris and NetBSD.

- Correct description of -a in the manual page.

- Ensure we are compiling in C99 mode.

- If error was called with a null reason, we would crash on Solaris. Make sure this no longer happens.

- Varnish used to crash if you asked it to use a non-existent waiter. This has now been fixed.

- Add documentation to the default VCL explaining that using Connection: close in vcl_close is generally a good idea.

- Add minimal facility for dealing with TELNET option negotiation by returning WONT to DO and DONT requests.

- If the backend is unhealthy, use a graced object if one is available.

- Make server.hostname and server.identity available to VCL. The latter can be set with the -i parameter to varnishd.

- Make restart available from vcl_error.

- Previously, only the TTL of an object was considered in whether it would be marked as cacheable. This has been changed to take the grace into consideration as well.

- Previously, if an included ESI fragment had a zero size, we would send out a zero-sized chunk which signifies end-of-transmission. We now ignore zero-sized chunks.

- We accidentially slept for far too long when we reached the maximum number of open file descriptors. This has been corrected and accept_fd_holdoff now works correctly.

- Previously, when ESI processing, we did not look at the full length, but stopped at the first NULL byte. We no longer do that, enabling ESI processing of binary data.

### varnishtest

- Make sure system "..." returns successfully to ensure test failures do not go unnoticed.

- Make it possible to send NULL bytes through the testing framework.