# Known Bugs and Patches

As we now have made libwww available directly via CVS, it is much easier to get the latest updates and bug fixes. This means that we do not maintain this list very much anymore. Instead, you should look at the latest release notes to see if your problem has been addressed.

Please report new bugs or bug-fixes to <www-lib@w3.org> and describe what caused the bug to appear. The better diffs you can prepare, that is, if they are generated against the latest version in CVS, the faster they can be incorporated into the code base.

## How to Apply a Patch

The provided patches are relative to the `WWW` directory in the distribution tree. In order to apply a patch, do the following in the `WWW` directory:

1. Download the patch, for example lib-1.fix
2. Invoke the patch command by typing

       	patch < lib-1.fix

3. Rebuild the code by following the normal instructions for autoconf builds. In many cases you can simply type

       	make

   from the place where you have run the configure script.

## Available Patches

### Version 5.1m

- These are the patches that I have received which will be applied to the upcoming version before libwww is released.

### Version 5.1j

- These are the patches that I have received for this release and that I will apply before the next release.

### Version 5.1d

Contribution from Rick Curry (not a patch)
  A new version of HTWWWStr with a better date stamp string parser

### Version 5.1b

Patch 1
  A generic collection of patches fixing several bugs in libwww suggested by Hidekazu SHIOZAWA
Problems on FreeBSD
  Gecse Roland pointed out these problems on FreeBSD

### Version 5.0a

Bulding on SunOS: Sun uses the symbol "`__STDC__`" in their headers, not "`STDC_HEADERS`" which the configure script is looking for. This causes a problem compiling HTString.c which uses the ANSI definition of variable arguments. The fix is to define `STDC_HEADERS` when running configure. Depending on your shell, this may look like this

    	BASH> CFLAGS='-g -Wall -DSTDC_HEADERS' ./configure
    	CSH> env CFLAGS='-g -Wall -DSTDC_HEADERS' ./configure

### Version 5.0

Patch 1
  This patch fixes some minor problems in the library and example applications. If you have downloaded version 5.0a then you do not need this patch.
  - Bugfix in handling `OPTIONS` requests on URL other than "/". The path didn't contain an initial "/"
  - Changed 204 handling so that it never expects a body
  - Added support for `OPTIONS` in line mode browser.
  - Bugfix: now the memory cache filter only checks for cached documents on `GET` requests.
  - Bugfix: HTTP State machine didn't catch an error code returned by a POST callback function
  - Bugfix: Do not flush metainformation on a TRACE method and a OPTIONS method request.
  - Bugfix: Now we copy information from the cache index back to the amchor obejct when we read the index
  - Change: Cache controls are now added as replacements instead of add so that we don't get duplicate entries
  - Added HTCache_flushAll() to the cache manager.
  - Added flush as command in the Line mode browser. It flushes the persistent cache completely.
  - Bugfix: Automatic connection recovery had a problem when restarting a HTTP/1.1 persistent connection (thanks to Markku Savela)

### Version 4.0D

#### Library

New Multiple T stream (May 27 1996)
  Sacha has provided this new module for handling Tee'ing of multiple simultanous streams. We have the C file and the H file
Patch for better logging

#### Mini Server

Event Loop and Timeouts
  The current implementation of the server has a problem with requests that timeout. That is, if the remote server is not capable of generating a response within the amount of time the server is willing to wait. The server is not capable of finding which request object timed out so it has to stop the search completely. This is a limitatation of the current implementation of the internal Event loop in the Library. It is not a design limitation, but the event loop is currently optimized for use by user active applications and not so much "non-user" application.
DNS lookup
  The current DNS resolution uses the standard getXbyY system calls. However, as they traditionally are implemented using blocking sockets, the server may block as we only have a single process and a single stack. The solution is of course to have a non-blocking DNS resolver library.

### Version 4.0C

Patch for PUT and POST
  This patch is rather big but it contains some fixes and modifications that enables PUT and POST to work reliably. If you download the 4.0C version of the distribution then the patch has already been applied. It is basically the difference between versions 4.0B and 4.0C. The main set of differences are:
  - Automatic redirection and Access authentication has been take n out of the HTTP module. Instead the new mechanism with request callback functions are used so that the application can register handlers to handle these situations. The reason for this change is that not all applications are interested in having this functionality performed automatically.
  - Authentication handler and redirection handler added to both the Line Mode Browser and the Command Line Tool
  - Added three possible return codes on which a request callback function can be called:
    - HT_PERM_REDIRECT for permanently moved objects
    - HT_TEMP_REDIRECT for temporarily moved objects
    - HT_NO_ACCESS for insufficient credentials
  - PUT and POST do now work reliably in the Line Mode Browser and the Command Line Tool. Both can PUT or POST a document from either a remote HTTP server or the local file system to a remote HTTP server.
  - An important bug-fix in the internal event manager that prevented a socket to be registered for multiple events at the same time.
  - Cleanup of the POSTWeb management in the file module and the HTTP module
  - In addition to progress notification on READ we now support progress notification when sending a data object
  - Spelling mistake fixed. preemtive is changed to preemptive
  - The W3C Mini Robot has now the ability to stop at a certain depth while traversing the Web.

### Library 4.0

- SGML fix from Maciej Puzio for better error handling
- Generating DLLs under Windows using Borland compilers
- Bug in management of select() timeout handler
- Bug in no-proxy directive
- HTML Machinery is still missing a great deal. However this part is now isolated into the SGML-HTML-HText stream pipe and will be replaced by a new parser as soon as possible in connection with the development of Arena.
- Directory listings do not work completely on Windows NT

### Library 3.1

Bug in time stamp on files in FTP directory listings
  The Library supports "long" directory listings for FTP Unix, VMS and Windows NT servers with file type, size, time and date etc. However, the time stamp is wrong by one hour for files created when daylight saving time is enabled. The reason is that the FTP module in the Library doesn't know the time-zone of the remote FTP server and hence doesn't know when DSR is enabled or disabled. This is fixed in the next version
Problem with nested HTML tags in the HTML parser
  A bug which makes the HTML parser crash if is gets more than 20 nested HTML tags. Thanks to Robert M. Fleischman for pointing this out!

### Library 3.0

Problems with redirection
  Until now all HTTP servers have sent back a small HTML document with a redirection message going:

      	If you can see this message then your browser
      	does not support automatic redirection.

  However, new severs like Netscape and other servers don't send this and hence no stream should be set up. This confuses the Library and it dumps core.