Bugs as of v1.8:

- Forms parsing is a bit wonky; it is fixed in libwhisker2.

- Cookie support does not yet account for expiration via Expires value.

- There are no nonblocking connects on Windows (I'm looking at using the
code contained in LWP::Parallel::UserAgent.pm, but I need to figure out
how to get the socket back into blocking mode).

- Various perl warnings when running under -w.  If you send me a copy of
the warnings (warning and line number reported), I can fix them.  Since
warnings are generated at runtime, it's hard to traverse every possible
code path and find the warnings.

- The internal session cache can grow quite big if you scan thousands of
hosts in a row without calling LW::http_reset() or exiting. In order to
clear out any left over session information (when you're all done with a
host), be sure to call LW::http_reset().

- the 'save_cookies' crawl config option is currently unimplemented/
ignored.

- Careful on trying to unset/remove various {whisker} request values.  
If it's not defined by default, then you should delete the key, rather 
than setting it to 0, since some libwhisker functions only check to see 
if a key is defined (it doesn't actually look at the value).

- This isn't really a bug, but moreso a gotcha that can affect some
programs.  By default, libwhisker has {ignore_duplicate_headers}=1,
which tells libwhisker to only save one value per header.  For example,
if the server sends two 'Server' headers, then only the second one
will be saved in the hash (because it overwrites the value of the first
one).  This can be problematic with cookies, since it's not uncommon
for a server to send multiple 'Set-Cookie' headers in a response.  The
end result is, by default, libwhisker only sees one of those cookies.
You can change this by setting {ignore_duplicate_headers}=0; however,
if you do that, then your code needs to check any header entry to make
sure it's not an anonymous array of multiple values.  For example:

	# http_do_request() output is saved into %RESPONSE hash
	
	if(defined $RESPONSE{'Set-Cookie'}){ # we have a cookie
		if( ref($REPSONSE{'Set-Cookie'}){ # multiple cookies
			foreach $cookie (@{$RESPONSE{'Set-Cookie'}}){
				# do something with each cookie
			}
		} else {
			# do something with $RESPONSE{'Set-Cookie'}
		}
	}

As you can see, that requires your programs to be a lot more complex,
and thus that's why libwhisker helps you skip all that complexity by 
default.  Keep in mind that *any* header can have multiple values, so
if you turn ignore_duplicate_headers off, you'll need to do the above
for *every* header you check/use.
