varnishd

Improve scalability of critbit.

The critbit hash algorithm has now been tightened to make sure the tree is in a consistent state at all points, and the time we wait for an object to cool off after it is eligible for garbage collection has been tweaked.

Add `log` command to VCL. This emits a `VCL_log` entry into the shared memory log.

Only emit Length and ReqEnd log entries if we actually have an XID. This should get rid of some empty log lines in varnishncsa.

Destroy directors in a predictable fashion, namely reverse of creation order.

Fix bug when ESI elements spanned storage elements causing a panic.

In some cases, the VCL compiler would panic instead of giving sensible messages. This has now been fixed.

Correct an off-by-one error when the requested range exceeds the size of an object.

Handle requests for the end of an object correctly.

Allow tabulator characters in the third field of the first line of HTTP requests

On Solaris, if the remote end sends us an RST, all system calls related to that socket will return EINVAL. We now handle this better.

libvarnishapi

The `-X` parameter didn't work correctly. This has been fixed.