# Library 5.1 Release Notes

If you are reading the text version of this document then you can find a HTML version in

    	Library/User/ReleaseNotes.html

The main features in this release are:

- Full HTTP/1.1 sample implementation
- Advanced use of HTTP/1.1 Pipelining and persistent connections
- Persistent cache manager

The focus for version 5.1 was to implement a high-performance HTTP/1.1 client used as a testbed for the "Network Performance Effects of HTTP/1.1, CSS1, and PNG" paper. Note that this code is sample code so please take it as that and nothing more!

Check out the latest list of public functions

## Release 5.1f January 1998

### New Features

- Changed the referer HTTP header field to use relative URIs instead of absolute. This saves a lot of bytes on the wire
- Added support for logging the charset media type parameter
- Added support for logging when the ALT tag is missing from inlined images
- Extended the log class to support arbitrary log files

### Bug Fixes

- Fixed some problems in the HTRelative function in HTParse.

## Release 5.1e January 1998

### New Features

- Added support for linking against a POSIX Regular Expression (regex) library. This is used in the Robot, for example, to support regular expressions on URIs to include and exclude from a traversal. The code has been tested with the GNU regex library.
- Added more logging features to the webbot

### Bug Fixes

- Fixed bug in ouputstream that caused buffer to be overwritten in some cases when blocked on write

## Release 5.1d December 1997

### Bug Fixes

- Lots of bug fixes in the pipelining code and increased performance

### New Features

- Better logging facilities with support for multiple log objects including referer logging, Common Log File format logging and general logging filters.

## Release 5.1c September 1997

- Lots of bug fixes

## Release 5.1b April 1997

### Bug Fixes

- Fixed a problem in HTRules.c as described in this bug report
- Fixed coredump problem in HTGetTmpFileName() as described in this bug report. This affects also the HTCache module which relies on temporary file names
- Made the persistent cache more robust which in some cases will save a segmentation fault
- Fixed problem in sysdep.h as reported in this bug report
- Fixed problem where a request was not flushed if using blocking sockets as reported by this bug report.
- A limitation in the current persistent cache is that it only works in non-preemptive mode. Hence if using blocking sockets then the cache should be disabled. This is now the default behavior in the libwww profiles.
- Bug fixed that caused the `maxsock` variable used in `select()` not to be decreased when deleting a socket in the default event manager
- Changed the connection management so that it complies with the Connection Management draft by Jim Gettys and Alan Freier. The HTTP client now closes idle connections after 60 seconds which is a heuristic period chosen by Jeff Mogul in the paper "The Case for Persistent-Connection HTTP". The number can be dynamically changed using the `HTHost_setPersistTimeout()` and the `HTHost_persistTimeout()` methods. This could be made more advanced so that we take into account any information given in the "`Keep-Alive`" header but isn't for now.
- Fixed a problem when a HTTP/1.1 server sent a response including a `Connection: close` header using the close of the TCP connection as a delimiter. This problem was pointed out in this bug report
- Fixed security hole handling HTTP 305 proxy redirection codes. The proxy location returned in the responses was enabled as a permanent proxy without any notification. The operation now requires explicit acknowledgement from the user
- Fixed potential (but small) security whole handling parsing a new rules file. This operation now requires explicit acknowledgement from the user.

## Release 5.1 February 18 1997

### New Features and APIs

- Added support pipelining
- Support for zlib based decompression in content encoding

### Bug Fixes

- A whole bunch of them...