2011-03-27 Release 6.02

This is the release where we try to help the CPAN-toolchain be able to install the modules required for https-support in LWP. We have done this by unbundling the LWP::Protocol::https module from the libwww-perl distribution. In order to have https support you now need to install (or depend on) 'LWP::Protocol::https' and then this will make sure that all the prerequsite modules comes along. See [RT#66838].

This release also removes the old http10 modules that has really been deprecated since v5.60. These should have been removed at the v6.00 jump, but I forgot.

Christopher J. Madsen (1):

Ignores env variables when ssl_opts provided [RT#66663]

Gisle Aas (4):

Fix typo; Authen::NTLM [RT#66884]

Yury Zavarin (1):

Support LWP::ConnCache->new(total_capacity => undef)


2011-03-09 Release 6.01

Add missing HTTP::Daemon dependency for the tests.


2011-03-08 Release 6.00

Unbundled all modules not in the LWP:: namespace from the libwww-perl distribution. The new broken out CPAN distribtions are File-Listing, HTML-Form, HTTP-Cookies, HTTP-Daemon, HTTP-Date, HTTP-Message, HTTP-Negotiate, Net-HTTP, and WWW-RobotRules. libwww-perl-6 require these to be installed.

This release also drops the unmaintained lwp-rget script from the distribution.

Perl v5.8.8 or better is now required. For older versions of perl please stay with libwww-perl-5.837.

For https://... default to verified connections with require IO::Socket::SSL and Mozilla::CA modules to be installed. Old behaviour can be requested by setting the PERL_LWP_SSL_VERIFY_HOSTNAME environment variable to 0. The LWP::UserAgent got new ssl_opts method to control this as well.

Support internationalized URLs from command line scripts and in the proxy environment variables.

The lwp-dump script got new --request option.

The lwp-request script got new -E option, contributed by Tony Finch.

Protocol handlers and callbacks can raise HTTP::Response objects as exceptions. This will abort the current request and make LWP return the raised response.


2010-09-20 Release 5.837

David E. Wheeler (1):

Fix for Encode 2.40

Gisle Aas (2):

      Fix Perl syntax error in synopsis
      Allow ISO 8601 date strings when parsing Apache file listings

2010-05-13 Release 5.836

Gisle Aas (1):

Fix problem where $resp->base would downcase its return value


2010-05-05 Release 5.835

Gisle Aas (12):

      simple string can be simplified
      Make $mess->decoded_content remove XML encoding declarations [RT#52572]
      Don't allow saving to filenames starting with '.' suggested by server
      Avoid race between testing for existence of output file and opening the file
      Minor doc fixup -- wrongly ucfirsted word
      Use decoded_content in HTTP:Response synopsis [RT#54139]
      sun.com is no more. rip!
      Trivial layout tweak to reduce variable scope.
      Add 'make test_hudson' target
      Implement alt_charset parameter for decoded_content()
      Test decoding with different charset parameters
      lwp-download now needs the -s option to honor the Content-Disposition header

Ville Skyttä (9):

      Make LWP::MediaTypes::media_suffix case insensitive.
      Skip XML decoding tests if XML::Simple is not available.
      Documentation fixes.
      Fix m_media_type => "xhtml" matching.
      Make parse_head() apply to data: requests.
      Documentation spelling fixes.
      Documentation grammar fixes.
      Use $uri->secure in m_secure if available.
      Fix handling of multiple (same) base headers, and parameters in them.

Mark Stosberg (5):

      Strip out empty lines separated by CRLF
      Best Practice: avoid indirect object notation
      Speed up as_string by 4% by having sortedfield_names return a reference
      Speed up scan() a bit. as_string() from this branch is now 6% faster
      Port over as_string() optimizations from HTTP::Headers::Fast

Tom Hukins (2):

      Link to referenced documentation.
      Update repository location.

Father Chrysostomos (1):

Remove needless (and actually harmful) local $_

Sean M. Burke (1):

"Perl & LWP" is available online


2009-11-21 Release 5.834

Gisle Aas (4):

      Check for sane default_headers argument [RT#50393]
      Add $ua->local_address attribute [RT#40912]
      Test that generation of boundary works [RT#49396]
      Page does not display the "standard" apache listing any more

Ville Skyttä (2):

      Remove unneeded executable permissions.
      Switch compression/decompression to use the IO::Compress/IO::Uncompress and
          Compress::Raw::Zlib family of modules.

Slaven Rezic (1):

lwp-request should use stderr for auth [RT#21620]


2009-10-06 Release 5.833

Gisle Aas (5):

      Deal with cookies that expire far into the future [RT#50147]
      Deal with cookies that expire at or before epoch [RT#49467]
      Pass separate type for https to LWP::ConnCache [RT#48899]
      Improved handling of the User-Agent header [RT#48461]
      HTTP::Cookies add_cookie_header previous Cookies [RT#46106]

Andreas J. Koenig (1):

Improve diagnostics from LWP::UserAgent::mirror [RT#48869]

Slaven Rezic (1):

mirror should die in case X-Died is set [RT#48236]

Ville Skyttä (1):

Increase default Net::HTTP max line length to 8k.


2009-09-21 Release 5.832

Ville Skyttä (6):

      Fix net test suite.
      Comment spelling fixes.
      Fix links to old Netscape cookie specification.
      Documentation spelling fixes.
      Improve max line length exceeded/read error messages.
      Do not warn about seemingly wellformed but unrecognized robots.txt lines.

Gisle Aas (1):

$mess->content_charset would fail for empty content

mschilli (1):

Further restrict what variables env_proxy() process


2009-08-13 Release 5.831

Ville Skyttä (3):

      Fix bzip2 content encoding/decoding.
      send_te() doc grammar fix.
      Document time2str() behavior with an undefined argument.

Gisle Aas (1):

HTML::Message's content_charset trigger warnings from HTML::Parser [RT#48621]


2009-07-26 Release 5.830

Gisle Aas (1):

select doesn't return undef on failure [RT#32356]

Ville Skyttä (1):

Add raw RFC 1951 deflate test case.


2009-07-07 Release 5.829

This release removes callback handlers that were left over on the returned HTTP::Responses. This was problematic because it created reference loops preventing the Perl garbage collector from releasing their memory. Another problem was that Storable by default would not serialize these objects any more.

This release also adds support for locating HTML::Form inputs by id or class attribute; for instance $form->value("#foo", 42) will set the value on the input with the ID of "foo".

Gisle Aas (5):

      Make the example code 'use strict' clean by adding a my
      Avoid cycle in response
      Clean up handlers has from response after data processing is done
      Support finding inputs by id or class in HTML::Form
      Test HTML::Form selectors

Mark Stosberg (1):

Tidy and document the internals of mirror() better [RT#23450]

phrstbrn (1):

Avoid warnings from HTML::Form [RT#42654]


2009-06-25 Release 5.828

A quick new release to restore compatiblity with perl-5.6.

Gisle Aas (4):

      Less noisy behaviour when we can't download the documents
      Restore perl-5.6 compatiblity [RT#47054]
      Don't decode US-ASCII and ISO-8859-1 content
      Some versions of Encode don't support UTF-16-BE [RT#47152]

Ville Skyttä (1):

Spelling fixes.


2009-06-15 Release 5.827

The main news this time is better detection of what character set the document in a response uses and the addition of the lwp-dump script that I found useful.

Gisle Aas (31):

      Added lwp-dump script
      Replace calls to $req->url with $req->uri
      Also need to encode strings in the latin1 range
      Ignore the value set for file inputs [RT#46911]
      Add docs to lwp-dump
      Don't let lwp-dump follow redirects
      Support --method options
      Implement the --agent option
      Dictionary order for the option docs; document --method
      Merge branch 'dump'
      Files are passed as an array and we must not stringify it.
      Add content_charset method to HTTP::Message
      Start guessing the charset for a message
      Let content_charset guess the charset to use for decoded_content
      Specify what's missing for the XML and HTML case
      Provide charset parameter for HTML::Form->parse()
      Make content_charset sniff for <meta> elements specifying the charset.
      Determine charset of XML documents
      Get rid of the trivialhttp_get() implementation
      Update the bundled media.types file
      LWP::Simple::get() now returns decoded_content [RT#44435]
      Implement content_type_charset method for HTTP::Headers
      Implement content_is_text method for HTTP::Headers
      Make use of content_is_text and content_type_charset in decoded_content
      Don't let the parse_head callback append to the HTTP headers
      Don't set Range header on request when max_size is used [RT#17208]
      Still show client headers for internal responses
      Document Client-Warning: Internal response
      Don't use 'no' as example domain for no_proxy docs [RT#43728]
      Drop exit from the Makefile.PL [RT#43060]
      Merge branch 'content_charset'

Alex Kapranoff (1):

Support "accept-charset" attribute in HTML::Form

Mark Stosberg (1):

new tests for max_size and 206 responses [RT#46230]

murphy (1):

Reformulation of Client-Warning: Internal documentation


2009-04-24 Release 5.826

Gisle Aas (2):

      Avoid returning stale Content-Type header after message parts have been updated
      Don't let content saved to file be affected by the $\ setting

Graeme Thompson (1):

Issues around multipart boundaries [RT#28970]

Mike Schilli (1):

Ignore random _proxy env variables, allow only valid schemes

Slaven Rezic (1):

README.SSL is not anymore available at the linpro.no URL.

john9art (1):

Make LWP::UserAgent constructor honor the default_headers option [RT#16637]


2009-02-16 Release 5.825

Zefram (1):

Fixup test failure with perl-5.8.8 and older; qr/$/m doesn't work


2009-02-13 Release 5.824

Gisle Aas (7):

      Make format_request() ensure that it returns bytes [RT#42396]
      Force bytes in all the format_* methods.
      Ignore Sitemap: lines in robots.txt [RT#42420]
      Refactor; use variable to hold the test port
      Add redirects method to HTTP::Message
      Setting $ua->max_redirect(0) didn't work [RT#40260]
      Convert files to UTF-8

Zefram (2):

      HTTP::Cookies destructor should not clobber $! and other globals.
      Deal with the Encode module distributed with perl-5.8.0

Ian Kilgore (1):

Avoid failure if 127.0.0.1:8333 is in use [RT#42866]

Ville Skyttä (1):

Documentation improvements, spelling fixes.


2008-12-05 Release 5.823

Gisle Aas (4):

      Bring back the LWP::Debug code [RT#41759]
      Add documentation section about 'Network traffic monitoring'.
      Typo fixes
      Want to ensure we get a single value back here.

2008-12-05 Release 5.822

Gisle Aas (4):

      A more modern user_agent example.
      Make it possible to unset the proxy settings again
      Prefer use specified Content-Length header [RT#41462]
      Deprecate LWP::Debug

2008-11-25 Release 5.821

Various bug fixes.

Gisle Aas (3):

      The Content-Length and Content-MD5 headers are no longer valid after encode/decode
      Add META information
      croak on bad proxy args [RT#39919]

Slaven Rezic (1):

Skip a failing decoded_content on systems without Encode.pm [RT#40735]

Steve Hay (1):

Skip LWP test when fork() is unimplemented

Yuri Karaban (1):

redo used incorrectly in LWP::Protocol::http [RT#41116]

jefflee (1):

HTTP::Cookies::Microsoft now handles user names with space [RT#40917]

ruff (1):

Avoid aborting requests saved to file early [RT#40985]


2008-11-05 Release 5.820

Main news is the ability to control the heuristics used to determine the expiry time for response objects.

Gisle Aas (8):

      Reformat later parts of Changes
      Add a paragraph to summarize the motivation for releases since 5.815
      all_pod_files_ok();
      Fix POD markup error
      Calculation of current_age with missing Client-Date.
      The age/freshness methods now take an optional 'time' argument
      More correct matching of 'max-age' in freshness_lifetime method
      The freshness_lifetime method now support options to control its heuristics

2008-10-20 Release 5.819

Release 5.815 to 5.818 had a severe bug that sometimes made LWP not collect all data for the responses it received. This release is strongly recommended as an upgrade for those releases.

Gisle Aas (2):

      Don't override $Net::HTTPS::SSL_SOCKET_CLASS if it's already set.
      Wrong content handlers would sometimes be skipped [RT#40187]

2008-10-16 Release 5.818

Main news in this release is the addition of the dump() method to the request and response objects. If found that I often ended up printing $resp->as_string for debugging and then regretting after the terminal got into a strange mode or just kept on scrolling for the longest time.

Gisle Aas (8):

      Use deflate compression instead of gzip for the test
      Simplify; Get rid of the $USE_STORABLE_DCLONE configuration
      Add dump method to HTTP::Message.
      Use $res->dump instead of rolling our own.
      Layout change; move headers() methods to a more logical place.
      Add support for x-bzip2 encoding; fix bzip2 decoding.
      Add send_header method to HTTP::Daemon
      Make the lwp-request User-Agent string include the LWP version.

Slaven Rezic (1):

clone implemented in terms of Storable::dclone [RT#39611]


2008-10-10 Release 5.817

This is the release where I played around with Devel::NYTProf to figure where time was actually spent during the processing of requests with LWP. The methods that manipulated header objects stood out, so this release contains a few tweaks to make those parts faster.

I also figured a few convenience methods to encode and decode the content of request/response objects would be in order.

Gisle Aas (16):

      Should store "wire" headers field names with  without translation.
      Test HTTP::Request->parse().
      Restore pre-5.815 behaviour of returning "400 Bad Request" [RT#39694]
      Rename the HTTP::Status constants to have HTTP prefix
      Detection of unsupported schemes was broken [RT#37637]
      Allow tainted methods to be forwarded to HTTP::Headers [RT#38736]
      Add strict mode to HTML::Form
      Fix test now that less warnings are generated.
      Add content_is_xml method
      Make split_header_words() lower case returned tokens/keys
      Avoid invoking AUTOLOAD on object destruction [RT#39852]
      Add decode() method to HTTP::Message
      Add encode() method to HTTP::Message
      Allow multiple fields to be set with push_header().
      Make content_type and content_is_xhtml methods faster
      Faster push_header()

2008-09-29 Release 5.816

Oops, release 5.815 broke download-to-file on Windows.

Gisle Aas (2):

      Add missing binmode() [RT#39668]
      Doc tweaks

2008-09-24 Release 5.815

The main change this time is the introduction of handlers to drive the processing of requests in LWP::UserAgent. You can also register your own handlers for modifying and processing requests or responses on their way, which I think is a much more flexible approach that trying to subclass LWP::UserAgent to customize it. If we have had these early on then the LWP::UserAgent API could have been so much simpler as the effect of most current attributes can easily be set up with trivial handlers.

Also thanks to contributions by Bron Gondwana LWP's Basic/Digest authenticate modules now registers handlers which allow them to automatically fill in the Authorization headers without first taking the round-trip of a 401 response when LWP knows the credentials for a given realm.

Gisle Aas (23):

      We don't need to build the docs to run the tests.
      Style tweaks.
      The jigsaw service isn't up to much good these days.
      HTTP::Cookies produces warnings for undefined cookie param names [RT#38480]
      Typo fix; HTTP::Message will never include x-bzip2 in Accept-Encoding [RT#38617]
      Added HTTP::Config module
      Add methods to configure processing handlers.
      100 Continue response not complete.
      Use 3-arg open when response content to files.
      Make the show_progress attribute official (by documenting it).
      Start using handlers for driving the inner logic of LWP::UserAgent.
      Expose the content_is_html and content_is_xhtml methods from HTTP::Headers.
      Make credentials method able to get/set values.
      An auth handler per realm.
      Match proxy setting for request.
      Set up separate handler for adding proxy authentication.
      Add request_preprepare to be able to initialize proxy early enough.
      Smarter get_my_handler() that can also create handlers.
      Refactor; introduce run_handlers method
      Pass in handler hash to the handler callback.
      Don't let version=1 override behaviour if specified with a plan Set-Cookie header.
      Remove handler when we don't have a username/password for the realm.
      Make tests use Test.pm

Bron Gondwana (2):

      Double-check that username or password has changed after a failed login.
      Update Digest Authen to subclass Basic.

Ondrej Hanak (1):

Avoid running out of filehandles with DYNAMIC_FILE_UPLOAD.

Todd Lipcon (1):

Fixed parsing of header values starting with ':' [RT#39367]

amire80 (1):

Documentation typo fixes [RT#38203]


2008-07-25 Release 5.814

Gisle Aas (13):

      Typo fix.
      Add HTTP::Message::decodable()
      Use decoded_content in the synopsis
      Avoid adding an empty first part in $mess->add_part()
      Get rid of all the manual dependency tests.
      Simplify the Makefile.PL (no interactivity)
      Provide DELETE method in HTTP::Request::Common [RT#37481]
      Checkbox picks up nearby text in description of alternates [RT#36771]
      HTML::Form::possible_values() should not returned disabled values [RT#35248]
      File::Listing documentation claimed only 'unix' format was supported [RT#22021]
      File::Listing only support English locales [RT#28879]
      Make common-req.t use Test.pm
      Typo; CAN_TALK_TO_OUTSELF

Bill Mann (1):

Fix up File::Listings fallback to dosftp [RT#23540]

Hans-H. Froehlich (1):

File::Listing parse failure on BSD Linux based systems [RT#26724]


2008-06-17 Release 5.813

Ville Skytta (3):

      RobotUA constructor ignores delay, use_sleep [RT#35456]
      Spelling fixes [RT#35457]
      Add HTTP::Response->filename [RT#35458]

Mark Stosberg (2):

      Better diagnostics when the HTML::TokeParser constructor fails [RT#35607]
      Multiple forms with same-named <select> parse wrongly [RT#35607]

Gisle Aas (1):

Provide a progress method that does something that might be useful.

Spiros Denaxas (1):

Documentation typo fix [RT#36132]


2008-04-16 Release 5.812

Gisle Aas (6):

      Typo fix.
      Simplified Net::HTTP::Methods constructor call.
      Croak if Net::HTTP constructor called with no argument.
      Avoid calling $self->peerport to figure out what the port is.
      5.811 breaks SSL requests [RT#35090]
      Make test suite compatible with perl-5.6.1.

Toru Yamaguchi (1):

Wrong treatment of qop value in Digest Authentication [RT#35055]


2008-04-14 Release 5.811

Gisle Aas (6):

      Avoid "used only once" warning for $Config::Config.
      Make HTTP::Request::Common::PUT set Content-Length header [RT#34772]
      Added the add_content_utf8 method to HTTP::Message.
      Typo fix.
      Retry syscalls when they fail with EINTR or EAGAIN [RT#34093,32356]
      Allow HTTP::Content content that can be downgraded to bytes.

Gavin Peters (1):

HTML::Form does not recognise multiple select items with same name [RT#18993]

Mark Stosberg (1):

Document how HTTP::Status codes correspond to the classification functions [RT#20819]

Robert Stone (1):

Allow 100, 204, 304 responses to have content [RT#17907]

sasao (1):

HTTP::Request::Common::POST suppressed filename="0" in Content-Disposition [RT#18887]


2008-04-08 Release 5.810

Gisle Aas (10):

      Small documentation issues [RT#31346]
      Explain $netloc argument to $ua->credentials [RT#31969]
      Make lwp-request honour option -b while dumping links [RT#31347]
      Ignore params for date convenience methods [RT#30579]
      Get rid of all the old CVS $Keyword:...$ templates.  Set $VERSION to 5.810.
      Update Copyright year.
      Drop some sample URLs that were failing.
      Complement the HTTP::Status codes [RT#29619]
      Don't allow HTTP::Message content to be set to Unicode strings.
      Refactor test for Encode.pm

Ville Skytta (3):

      Spelling fixes [RT#33272]
      Trigger HTML::HeadParser for XHTML [RT#33271]
      Escape status line in error_as_HTML, convert to lowercase [RT#33270]

Alexey Tourbin (2):

      Typo fix [RT#33843]
      Protocol/file.pm: postpone load of URI::Escape and HTML::Entities [RT#33842]

Daniel Hedlund (1):

HTML::Form Module and <button> element clicks

Adam Kennedy (1):

HTTP::Cookies handle malformed empty Set-Cookie badly [RT#29401]

Jacob J (1):

[HTTP::Request::Common] Does not handle filenames containing " [RT#30538]

Rolf Grossmann (1):

Allow malformed chars in $mess->decoded_content [RT#17368]

FWILES (1):

Croak if LWP::UserAgent is constructed with hash ref as argument [RT#28597]

Adam Sjogren (1):

Disabled, checked radiobutton being submitted [RT#33512]

DAVIDRW (1):

warn if TextInput's maxlength exceeded [RT#32239]


2007-08-05 Gisle Aas <gisle@ActiveState.com>

Release 5.808

Get rid of t/live/validator test. Too much JavaScript madness for it to be a sane LWP test.

2007-07-31 Gisle Aas <gisle@ActiveState.com>

Release 5.807

Apply patch correction from CPAN RT #26152

More laxed t/live/validator test.

2007-07-19 Gisle Aas <gisle@ActiveState.com>

Release 5.806

Added progress callback to LWP::UserAgent.

HTTP::Daemon didn't avoid content in responses to HEAD requests

Add support for HTTP Expect header to HTTP::Daemon (CPAN RT #27933)

Fix t/base/message.t so tests are skipped if Encode is not installed. (CPAN RT #25286)

Add HTML::Tagset as a prerequisite to Makefile.PL

Do not clobber $_ in LWP::Protocol::nntp (CPAN RT #25132)

Fix lwp-download so it can download files with an "_" in the filename

(CPAN RT#26207)

Quiet complaints from HTML::HeadParser when dealing with undecoded UTF-8 data. (CPAN RT#20274)

When both IO::Socket::SSL and Net::SSL are loaded, use the latter

(CPAN RT #26152)

Allows SSL to work much more reliably:

(CPAN RT #23372)

Allow text/vnd.wap.wml and application/vnd.oasis.opendocument.text

in content-type field in lwp-request (CPAN RT #26151)

Add default media type for XML in LWP::MediaTypes (CPAN RT #21093)

Added chunked test by Andreas J. Koenig

2005-12-08 Gisle Aas <gisle@ActiveState.com>

Release 5.805

HTTP::Date: The str2time function returned wrong values for years in the early 20th century, because timelocal() actually expects the year to be provided on a different scale than what localtime() returns.

HTTP::Headers can now be constructed with field names that repeat. The $h->header function now also accept repeating field names and can also remove headers if passed undef as value.

HTML::Form: The parse method now takes hash style optional arguments and the old verbose behaviour is now off by default.

HTML::Form: Accept <select multiple=""> for compatibility with other browsers. Patch by Josh Rai <josh@rai.name>.

HTML::Form: Sane handling of 'disabled' for ListInput. Based on patch by Joao Lopes <developer@st3tailor.com.br>.

HTTP::Negotiate: Fixed matching of partial language tags. Patch contributed by Dan Kubb.

HTTP::Response: The as_string method now returns a status line that doesn't add the "official" code name in the message field. This improves the ability to round-trip response objects via HTTP::Response->parse($res->as_string) and makes the first line of the string returned agree with $res->status_line.

Net::HTTP: The host attribute can now be set undef in order to suppress this header for HTTP/1.0 requests.

Net::HTTP: The default Host: header does not include the port number if it is the default (80 for plain HTTP). Some servers get confused by this.

Net::HTTP: Ignore bogus Content-Length headers. Don't get confused by leading or trailing whitespace.

LWP::Protocol::http: More efficient sending of small PUT/POST requests by trying harder to pass off the whole request in a single call to syswrite.

lwp-request now give better error messages if you used the -o option without having the HTML-Tree distribution installed. Also document this dependency.

2005-12-06 Gisle Aas <gisle@ActiveState.com>

Release 5.804

HTTP::Message->parse did not work when the first line of the body was something that looked like a header.

HTTP::Header::Auth needs HTTP::Headers to be loaded before it replace its functions.

LWP::Protocol::nntp improvements by Ville Skyttä <ville.skytta@iki.fi>:

Fix quotes in Net::HTTP example.
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=283916

Detect EOF when expecting a chunk header. Should address the warnings shown in http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=286775

WWW::RobotRules: Improved parsing of not strictly valid robots.txt files contributed by <Matthew.van.Eerde@hbinc.com>.

Makefile.PL:Set name to LWP so that the .packlist ends up in the expected place.

2004-12-11 Gisle Aas <gisle@ActiveState.com>

Release 5.803

HTTP::Message: $mess->decoded_content sometimes had the side effect of destroying $mess->content.

HTTP::Message: $mess->decoded_content failed for "Content-Encoding: deflate" if the content was not in the zlib-format as specified for the HTTP protocol. Microsoft got this wrong, so we have to support raw deflate bytes as well.

HTTP::Response->parse don't require the protocol to be specified any more. This allows HTTP::Response->parse($resp->as_string) to round-trip. Patch by Harald Joerg <haj@oook.m.uunet.de>.

HTTP::Response: $resp->base might now return undef. Previously it would croak if there was no associated request. Based on patch by Harald Joerg <haj@oook.m.uunet.de>.

HTML::Form now support <label> for check- and radio boxes. Patch contributed by Dan Kubb <dan.kubb@onautopilot.com>.

Make HTTP::Daemon subclassable, patch by Kees Cook <kees@osdl.org>.

lwp-download allow directory to save into to be specified. Patch by Radoslaw Zielinski <radek@karnet.pl>.

lwp-download will validate filename derived from server controlled data and will fail if something looks not quite right.

2004-11-30 Gisle Aas <gisle@ActiveState.com>

Release 5.802

The HTTP::Message object now has a decoded_content() method. This will return the content after any Content-Encodings and charsets have been decoded.

Compress::Zlib is now a prerequisite module.

HTTP::Request::Common: The POST() function created an invalid Content-Type header for file uploads with no parameters.

Net::HTTP: Allow Transfer-Encoding with trailing whitespace. <http://rt.cpan.org/Ticket/Display.html?id=3929>

Net::HTTP: Don't allow empty content to be treated as a valid HTTP/0.9 response.
<http://rt.cpan.org/Ticket/Display.html?id=4581> <http://rt.cpan.org/Ticket/Display.html?id=6883>

File::Protocol::file: Fixup directory links in HTML generated for directories. Patch by Moshe Kaminsky <kaminsky@math.huji.ac.il>.

Makefile.PL will try to discover misconfigured systems that can't talk to themselves and disable tests that depend on this.

Makefile.PL will now default to 'n' when asking about whether to install the "GET", "HEAD", "POST" programs. There has been too many name clashes with these common names.

2004-11-12 Gisle Aas <gisle@ActiveState.com>

Release 5.801

HTTP::Message improved content/content_ref interaction. Fixes DYNAMIC_FILE_UPLOAD and other uses of code content in requests.

HTML::Form:

HTTP::Cookies could not handle a "old-style" cookie named "Expires".

HTTP::Headers work-around for thread safety issue in perl <= 5.8.4.

HTTP::Request::Common improved documentation.

LWP::Protocol: Check that we can write to the file specified in $ua->request(..., $file) or $ua->mirror.

LWP::UserAgent clone() dies if proxy was not set. Patch by Andy Lester <andy@petdance.com>

HTTP::Methods now avoid "use of uninitialized"-warning when server replies with incomplete status line.

lwp-download will now actually tell you why it aborts if it runs out of disk space of fails to write some other way.

WWW::RobotRules: only display warning when running under 'perl -w' and show which robots.txt file they correspond to. Based on patch by Bill Moseley.

WWW::RobotRules: Don't empty cache when agent() is called if the agent name does not change. Patch by Ville Skyttä <ville.skytta@iki.fi>.

2004-06-16 Gisle Aas <gisle@ActiveState.com>

Release 5.800

HTML::Form will allow individual menu entries to be disabled. This was needed to support <input type=radio disabled value=foo> and <select><option disabled>foo.

HTML::Form now avoids name clashes between the <select> and <option> attributes.

HTML::Form now implicitly close <select> elements when it sees another input or </form>. This is closer to the MSIE behaviour.

HTML::Form will now "support" keygen-inputs. It will not calculate a key by itself. The user will have to set its value for it to be returned by the form.

HTTP::Headers now special case field names that start with a ':'. This is used as an escape mechanism when you need the header names to not go through canonicalization. It means that you can force LWP to use a specific casing and even underscores in header names. The ugly $TRANSLATE_UNDERSCORE global has been undocumented as a result of this.

HTTP::Message will now allow an external 'content_ref' to be set. This can for instance be used to let HTTP::Request objects pick up content data from some scalar variable without having to copy it.

HTTP::Request::Common. The individual parts will no longer have a Content-Length header for file uploads. This improves compatibility with "normal" browsers.

LWP::Simple doc patch for getprint. Contributed by Yitzchak Scott-Thoennes <sthoenna@efn.org>.

LWP::UserAgent: New methods default_header() and default_headers(). These can be used to set up headers that are automatically added to requests as they are sent. This can for instance be used to initialize various Accept headers.

Various typo fixes by Ville Skyttä <ville.skytta@iki.fi>.

Fixed test failure under perl-5.005.

LWP::Protocol::loopback: This is a new protocol handler that works like the HTTP TRACE method, it will return the request provided to it. This is sometimes useful for testing. It can for instance be invoked by setting the 'http_proxy' environment variable to 'loopback:'.

2004-04-13 Gisle Aas <gisle@ActiveState.com>

Release 5.79

HTML::Form now exposes the 'readonly' and 'disabled' attribute for inputs. This allows your program to simulate JavaScript code that modifies these attributes.

RFC 2616 says that http: referer should not be sent with https: requests. The lwp-rget program, the $req->referer method and the redirect handling code now try to enforce this. Patch by Ville Skyttä <ville.skytta@iki.fi>.

WWW::RobotRules now look for the string found in robots.txt as a case insensitive substring from its own User-Agent string, not the other way around. Patch by Ville Skyttä <ville.skytta@iki.fi>.

HTTP::Headers: New method 'header_field_names' that return a list of names as suggested by its name.

HTTP::Headers: $h->remove_content_headers will now also remove the headers "Allow", "Expires" and "Last-Modified". These are also part of the set that RFC 2616 denote as Entity Header Fields.

HTTP::Headers: $h->content_type is now more careful in removing embedded space in the returned value. It also now returns all the parameters as the second return value as documented.

HTTP::Headers: $h->header() now croaks. It used to silently do nothing.

HTTP::Headers: Documentation tweaks. Documented a few bugs discovered during testing.

Typo fixes to the documentation all over the place by Ville Skyttä <ville.skytta@iki.fi>.

Updated tests.

2004-04-07 Gisle Aas <gisle@ActiveState.com>

Release 5.78

Removed stray Data::Dump reference from test suite.

Added the parse(), clear(), parts() and add_part() methods to HTTP::Message. The HTTP::MessageParts module of 5.77 is no more.

Added clear() and remove_content_headers() methods to HTTP::Headers.

The as_string() method of HTTP::Message now appends a newline if called without arguments and the non-empty content does not end with a newline. This ensures better compatibility with 5.76 and older versions of libwww-perl.

Use case insensitive lookup of hostname in $ua->credentials. Patch by Andrew Pimlott <andrew@pimlott.net>.

2004-04-06 Gisle Aas <gisle@ActiveState.com>

Release 5.77

LWP::Simple did not handle redirects properly when the "Location" header used uncommon letter casing. Patch by Ward Vandewege <ward@pong.be>.

LWP::UserAgent passed the wrong request to redirect_ok(). Patch by Ville Skyttä <ville.skytta@iki.fi>. https://rt.cpan.org/Ticket/Display.html?id=5828

LWP did not handle URLs like http://www.example.com?foo=bar properly.

LWP::RobotUA construct now accept key/value arguments in the same way as LWP::UserAgent.
Based on patch by Andy Lester <andy@petdance.com>.

LWP::RobotUA did not parse robots.txt files that contained "Disallow:" using uncommon letter casing. Patch by Liam Quinn <liam@htmlhelp.com>.

WWW::RobotRules now allow leading space when parsing robots.txt file as suggested by Craig Macdonald <craig@freeasphost.co.uk>. We now also allow space before the colon.

WWW::RobotRules did not handle User-Agent names that use complex version numbers. Patch by Liam Quinn <liam@htmlhelp.com>.

Case insensitive handling of hosts and domain names in HTTP::Cookies.
https://rt.cpan.org/Ticket/Display.html?id=4530

The bundled media.types file now match video/quicktime with the .mov extension, as suggested by Michel Koppelaar <Michel.Koppelaar@kb.nl>.

Experimental support for composite messages, currently implemented by the HTTP::MessageParts module. Based on ideas from Joshua Hoblitt <jhoblitt@ifa.hawaii.edu>.

Fixed libscan in Makefile.PL.
Patch by Andy Lester <andy@petdance.com>.

The HTTP::Message constructor now accept a plain array reference as its $headers argument.

The return value of the HTTP::Message as_string() method now better conforms to the HTTP wire layout. No additional "\n" are appended to the as_string value for HTTP::Request and HTTP::Response. The HTTP::Request as_string now replace missing method or URI with "-" instead of "[NO METHOD]" and "[NO URI]". We don't want values with spaces in them, because it makes it harder to parse.

2003-11-21 Gisle Aas <gisle@ActiveState.com>

Release 5.76

Revised handling of redirects.

Support cpan:-URLs. Try 'lwp-download cpan:src/latest.tar.gz' :)

Fix test failure in 't/html/form.t' for perl5.005.

2003-10-26 Gisle Aas <gisle@ActiveState.com>

Release 5.75

Reworked LWP::UserAgent, HTTP::Request and HTTP::Response documentation. Also other documentation tweaks.

2003-10-23 Gisle Aas <gisle@ActiveState.com>

Release 5.74

Improved lwp-download program:

Collected all contributions in the AUTHORS file and also added an AUTHORS section to the LWP manpage.

Style tweaks to all modules. Move POD after __END__ and uncuddled elses.

2003-10-19 Gisle Aas <gisle@ActiveState.com>

Release 5.73

Takanori Ugai <ugai@jp.fujitsu.com> found that 'max_redirect' introduced in 5.72 was broken and provided a patch for that.

Not all ftp servers return 550 responses when trying to to RETR a directory. Microsoft's IIS is one of those. Patch provided by Thomas Lotterer <thl@dev.de.cw.com>.

Some documentation tweaks.

2003-10-15 Gisle Aas <gisle@ActiveState.com>

Release 5.72

Requests for some non-HTTP URLs would fail if the cookie_jar was enabled. The HTTP::Cookies::add_cookie_header now ignore non-HTTP requests.

The new local/http test failed on Windows because of a missing binmode().

Suppress Client-SSL-Warning warning header when Crypt::SSLeay is able to verify the peer certificate. Patch contributed by Joshua Chamas <joshua@chamas.com>.

HTTP::Request::Common::POST did not add a 'Content-Length' header when the content ended up empty. Fixed by a patch contributed by Brian J. Murrell.

Internally generated responses now contain a text/plain part that repeats the status line. They also have a "Client-Warning" header that can be used to differentiate these responses from real server responses.

LWP::UserAgent now deals with 303 and 307 redirects. The behaviour of 302 redirects has also changed to be like 303; i.e. change the method to be "GET". This is what most browsers do. Based on a patch contributed by Tom Hughes <thh@cyberscience.com>.

LWP::UserAgent now implements a 'max_redirect' attribute with a default value of 7. This should also fix the problem where redirects to the same URL to get a cookie set did not work. Based on a patch by Sean M. Burke <sburke@cpan.org>.

NTLM authentication should continue to fail if the Authen::NTLM module can't be loaded. LWP used to think the scheme was available as soon as the module stash showed up. Not it looks for the authenticate method to be defined. Patch by Jan Dubois.

lwp-download will not try to rename *.tbz and *.tar.bz2 to match the reported content type. Patch contributed by Robin Barker <Robin.Barker@npl.co.uk>.

HTTP::Cookies::Netscape documentation fix by Sean M. Burke.

HTTP::Cookies::Microsoft documentation fix by Johnny Lee.

The code that tries to avoid installing 'HEAD' on top of 'head' on systems like Mac OS was further improved to look in $Config{installscript} instead of $Config{sitebin}. Patch provided by Ken Williams <ken@mathforum.org>.

2003-10-14 Gisle Aas <gisle@ActiveState.com>

Release 5.71

Support open-ended Range: header for ftp requests. Patch by Matthew Eldridge <eldridge@Graphics.Stanford.EDU>.

lwp-request now prints unsuccessful responses in the same way as successful ones. The status will still indicate failures. Based on a patch by Steve Hay <steve.hay@uk.radan.com>.

HTML::Form's dump now also print alternative value names.

HTML::Form will now pick up the phrase after a <input type=radio> or <input type=checkbox> and use that as the name of the checked value.

HTML::Form's find_input now returns all inputs that match in array context. Based on patch by Mark Stosberg <markstos@cpan.org> in <http://rt.cpan.org/Ticket/Display.html?id=3320>.

HTTP::Daemon's send_file() method did not work when given a file name. Patch by Dave W. Smith <dws@postcognitive.com>.

HTTP::Daemon is less strict about field names in the request headers is received. The Norton Internet Security firewall apparently likes to send requests with a header called '~~~~~~~~~~~~~~~'. Further details in <http://rt.cpan.org/Ticket/Display.html?id=2531>.

LWP::Protocol::http assumed $1 would be meaningful without testing the outcome of the match. This sometimes produced an extra garbage Authentication header. Based on the patch by <bai@dreamarts.co.jp> in <http://rt.cpan.org/Ticket/Display.html?id=1994>.

LWP::Protocol::mailto will try harder to locate the sendmail program as suggested in <http://rt.cpan.org/Ticket/Display.html?id=2363>. Also let $ENV{SENDMAIL} override the search.

Patch to enable OS/2 build by Ilya Zakharevich.

2003-10-13 Gisle Aas <gisle@ActiveState.com>

Release 5.70

File::Listing::apache by Slaven Rezic <slaven@rezic.de>

HEAD requests now work properly for ftp: URLs. Patch by Ville Skyttä <ville.skytta@iki.fi>.

LWP::UserAgent: The protocols_allowed() and protocols_forbidden() methods are now case insensitive. Patch by Ville Skyttä <ville.skytta@iki.fi>.

Avoid warning from HTTP::Date on certain invalid dates. Patch by David Dick <david_dick@iprimus.com.au>.

HTML::Form::param() is an alternative interface for inspecting and modifying the form values. It resembles the interface of CGI.

HTML::Form documentation updated. Lots of typo fixes and improves by Martin Thurn <mthurn@northropgrumman.com>.

HTML::Form will treat any unknown input types as text input. This appears to be what most browsers do.

HTML::Form::parse() can now take a HTTP::Response object as argument.

The "checkbox" and "option" inputs of HTML::Form can now be turned on with the new check() method.

The inputs of HTML::Form can now track alternative value names and allow values to be set by these names as well. Currently this is only supported for "option" inputs.

HTML::Form's dump() method now print the name of the form if present.

2003-01-24 Gisle Aas <gisle@ActiveState.com>

Release 5.69

Include lwptut.pod contributed by Sean M. Burke C<sburke@cpan.org>.

The lwp-request aliases GET, HEAD, POST where installed when no program should be. Fixed by David Miller <dave@justdave.net>.

lwp-rget --help don't print double usage any more.

HTTP::Header::Util is now more reluctant to put quotes around token values.

Net::HTTP: Avoid warning on unexpected EOF when reading chunk header.

2003-01-02 Gisle Aas <gisle@ActiveState.com>

Release 5.68

Fix test failure for t/html/form.t when running under perl-5.8.0.

2003-01-01 Gisle Aas <gisle@ActiveState.com>

Release 5.67

HTTP::Cookies::Microsoft contributed by Johnny Lee <typo_pl@hotmail.com>. This module makes it possible for LWP to share MSIE's cookies.

HTML::Form supports file upload better now. There are some new methods on that kind of input; file(), filename(), content() and headers().

Removed unfinished test that depended on Data::Dump.

Net::HTTP avoids exceptions in read_response_headers() with laxed option. It now always assumes HTTP/0.9 on unexpected responses.

HTML::Form documentation reworked.

2002-12-20 Gisle Aas <gisle@ActiveState.com>

Release 5.66

Various patches from Sean M. Burke. Most of them to match up LWP with the "Perl & LWP" book.

LWP::DebugFile module contributed by Sean.

LWP::Authen::Ntml contributed by James Tillman.

HTTP::Daemon patch for Alpha by <shildreth@emsphone.com>

The format_chunk() and write_chunk() methods of Net::HTTP did not work. Bug spotted by Yale Huang <yale@sdf-eu.org>.

The Client-Peer response header is back.

2002-05-31 Gisle Aas <gisle@ActiveState.com>

Release 5.65

Make HTTP::Date compatible with perl 5.8.

Try to avoid to default to overwriting /usr/bin/head on MacOS X when the perl install prefix is /usr/bin.

HTTP::Cookies fix for parsing of Netscape cookies file on MS Windows. Patch by by Sean M. Burke <sburke@cpan.org>.

HTTP::Negotiate doc patch from Edward Avis <epa98@doc.ic.ac.uk>.

2002-02-09 Gisle Aas <gisle@ActiveState.com>

Release 5.64

Simplified the Makefile.PL:

HTTP::Cookies:

LWP::Authen::Digest:

MacOS portability patches to the test suite by Chris Nandor <pudge@pobox.com>.

2001-12-14 Gisle Aas <gisle@ActiveState.com>

Release 5.63

HTTP::Negotiate: Deal with parameter names in a case insensitive way. Put a little weight on the order of features in the Accept headers.

LWP::UserAgent: make sure that the 'request' attribute is always set on the returned response.

LWP::Protocol::http will now allow certain bad headers in the responses it reads. The bad headers end up in the header 'Client-Junk'.

Net::HTTP new options to the 'read_response_headers' method. The option 'laxed' will make it ignore bad header lines. The option 'junk_out' can be used to pass in an array reference. Junk header lines are pushed onto it.

Net::HTTP::Methods: fixed the internal zlib_ok() to also return the correct value the first time.

LWP::Protocol::http: Ensure that we don't read until select has said it is ok since we have put the socket in non-blocking mode. Previously this could happen if you set the 'timeout' attribute of the user agent to 0.

LWP::Authen::Digest now use Digest::MD5 instead of MD5.

Some adjustments to Makefile.PL to figure out if Compress::Zlib is available and adjust the test suite accordingly.

2001-11-21 Gisle Aas <gisle@ActiveState.com>

Release 5.62

The $VERSION of LWP::UserAgent wrapped around. This confused the CPAN indexer. Bumped the major number to 2 to fix this.

Net::HTTP did not work well on perl5.003. The PeerHost argument to IO::Socket::INET was not recognized, so we had to use PeerAddr instead. The syswrite() method also required a length argument.

Net::HTTP did not deal with transfer encoding tokens in a case-insensitive way. Patch by Blair Zajac <blair@orcaware.com>.

The jigsaw-chunk test failed on MacOS because "\n" is different. Patch by Chris Nandor <pudge@pobox.com>.

2001-11-16 Gisle Aas <gisle@ActiveState.com>

Release 5.61

LWP::Protocol::http did not invoke its fixupheader method. The result was that the 'Host' header got completely wrong when talking through a proxy server.

The live Google test is gone. They blocked us.

The guts of Net::HTTP has moved to Net::HTTP::Methods.

Net::HTTP now has limits on the size of the header which are set by default.

New module Net::HTTPS.

Documentation tweaks.

HTTP::Headers: The 'remove_header' method now return the values of the fields removed as suggested by Blair Zajac <blair@orcaware.com>. Also a typo fix by Blair.

HTTP::Message: The delegation via &AUTOLOAD should be slightly faster now. It will install a real forwarding function the first time it is called for each HTTP::Headers method.

LWP::UserAgent: Don't forward 'Cookie' headers on redirect. Patch by Steve A Fink <steve@fink.com>.

LWP::Protocol::http has been reorganized to make it simpler to subclass it. Other minor changes to it include:

LWP::Protocol::https is completely redone.

2001-10-26 Gisle Aas <gisle@ActiveState.com>

Release 5.60

Made HTTP/1.1 the default. The old HTTP/1.0 module has been renamed as LWP::Protocol::http10. There is an environment variable; PERL_LWP_USE_HTTP_10 that can be set to have LWP still pick up the old drivers.

Deal with "100 continue" responses even when not requested by and Expect header in the request. MS IIS seems to eager to send this kind of response.

For HTTP/1.1 over SSL there was a problem with the underlying SSL libraries if the socket was configured to non-blocking mode. Disable this for https.
Based on a patch from Michael Thompson <mickey@berkeley.innomedia.com>

Support the Range header for ftp:// requests. Patch by David Coppit <david@coppit.org>.

Rearrange Bundle::LWP on request from Chris Nandor.

HTTP::Cookies: Allow a domain like .foo.com match host "foo.com". Patch by Alexandre Duret-Lutz <duret_g@lrde.epita.fr>

For redirects make sure Host header is not copied to the new request.

The HTML::HeadParser is not loaded until actually needed.

Net::HTTP should now work with perl5.005 by a simple tweak to 'require IO::Socket::INET'.

WWW::RobotRules::AnyDBM: Explicitly clear database on open. Some DBM implementations doesn't support the O_TRUNC flag properly. Patch by Radu Greab <radu@netsoft.ro>.

2001-09-19 Gisle Aas <gisle@ActiveState.com>

Release 5.53_97

LWP::Protocol::http11: fix socket leak. Because we managed to set up a circular reference within the sockets objects they stayed around forever.

LWP::UserAgent: Split up simple_request into prepare_request and send_request. Patch contributed by Keiichiro Nagano <knagano@sodan.org>

LWP::Protocol::http: Pass all header data to LWP::Debug::conns. Based on patch by Martijn.

LWP::UserAgent: Sean fixed a Cut&Paste error.

HTTP::Cookies: avoid pack("c",...) warning from bleadperl.

2001-08-27 Gisle Aas <gisle@ActiveState.com>

Release 5.53_96

HTTP/1.1 support also for https.
Contributed by Doug MacEachern <dougm@covalent.net>

The HTTP/1.1 modules are now enabled by default. Hope that will give them more testing than they otherwise would have gotten.

HTTP::Daemon's accept now has same behaviour as IO::Socket's accept in list context. Fixed by Blair Zajac <blair@gps.caltech.edu>.

More argument sanity checking in HTTP::Request->uri and LWP::UserAgent->simple_request. Patch by Sean M. Burke.

HTTP::Protocol::http. Deal with short writes. Patch by Norton Allen <allen@huarp.harvard.edu>

HTTP::Protocol::http11: Deal with newlines in header values.

Net::HTTP: call sysread (instead of xread) when more data is required.

2001-08-06 Gisle Aas <gisle@ActiveState.com>

Release 5.53_95

Fix HTTP::Cookies where there is a mix of Set-Cookie and Set-Cookie2 headers. In that case we used to ignore all Set-Cookie headers. Now we only ignore those Set-Cookie headers that reference the same cookie as a Set-Cookie2 header.

HTTP::Request, HTTP::Response will by default now use "URI" class, instead of "URI::URL", when constructing its URI objects. This has a potential for breaking existing code as URI::URL objects had some extra methods that external code might depend upon.

Patches by Sean M. Burke:

LWP::Simple deals with non-absolute redirects "correctly" now.

Net::HTTP does not try to load Compress::Zlib until it is needed.

Net::HTTP documentation has been updated.

2001-05-05 Gisle Aas <gisle@ActiveState.com>

Release 5.53_94

Sean M. Burke's update to LWP::UserAgent:

Added digest auth test against Jigsaw

Fixed a 'use of uninitialized'-warning in the handling of digest authentication.

Net::HTTP updates:

2001-04-28 Gisle Aas <gisle@ActiveState.com>

Release 5.53_93

Makefile.PL now asks some questions

Added live tests for the new HTTP/1.1 support

LWP::MemberMixin: make it possible to set a value to the 'undef' value.

Net::HTTP:

2001-04-25 Gisle Aas <gisle@ActiveState.com>

Release 5.53_92

LWP::Protocol::ftp now support keep-alives too. The command connection will stay open if keep-alives are enabled.

LWP::Protocol::http11 various fixes:

LWP::RobotUA: Protect host_port call. Not all URIs have this method.

2001-04-20 Gisle Aas <gisle@ActiveState.com>

Release 5.53_91

Introduced LWP::ConnCache module. Works similar to HTTP::Cookies, it that it takes effect if associated with the $ua.

The handling of $ua->max_size changed to make 0 mean 0 (not unlimited). An value of undef means no limit. The X-Content-Base header is gone. I hope nobody relies on it. It might come back if people start to scream. There is a new Client-Aborted header instead.

The Range header generated for $ua->max_size had a off-by-one error. A range of "0-1" means 2 bytes.

The LWP::UserAgent constructor now takes configuration arguments.

Keep-alive and the new HTTP/1.1 module can now be simply enabled with something like:

LWP::UserAgent->new(keep_alive => 1);

New method $ua->conn_cache to set up and access the associated connection manager.

If the string passed to $ua->agent() ends with space then the "libwww-perl/#.##" string is automatically appended.

New method $ua->_agent

Passing a plain hash to $ua->cookie_jar automatically loads HTTP::Cookies and initialise an object using the hash content as constructor arguments.

LWP::Protocol::http11 now use the conn_cache of the $ua.

LWP::Protocol::http11 now added a few new Client- headers.

LWP::Protocol avoid keeping the connection alive if $ua->max_size limit prevents the whole body content from being read.

Net::HTTP updates:

WWW::RobotRules patch by Liam Quinn <liam@htmlhelp.com>:

2001-04-18 Gisle Aas <gisle@ActiveState.com>

Release 5.53_90

Note: This is a developer only release. Not for production use.

LWP::Protocol::http11 now does keep-alives by default. Still need to figure out what interface to provide at the $ua level.

LWP::Protocol::http11 deals with CODE content in request.

Net::HTTP updated:

New module Net::HTTP::NB. This is a Net::HTTP subclass that is better suited for multiplexing as it is able to do no-blocking reads of headers and entity body chunks.

HTTP::Request: Protect $request->uri against evil $SIG{__DIE__} handlers.

Some reorganisation in how stuff is passed from $ua to protocol object. The $ua is now passed in so protocol objects might store start in it.

The $ua->max_size default is now 0.

The $ua->clone method avoids sharing of proxy settings between the old and the new.

This file is renamed to 'Changes' (used to be 'ChangeLog').

2001-04-10 Gisle Aas <gisle@ActiveState.com>

Release 5.53

LWP::Simple::get() could sometimes return nothing on failure in list context. Now it always returns 'undef'.

HTTP::Cookies does not request 2 dots on domain names any more. New option to hide the Cookie2 header. Cookie2 header now quote the version number. Updated reference to RFC 2965.

Support for embedded userinfo in http proxy URIs. It means that you know can set up your proxy with things like:

http_proxy="http://proxyuser:proxypass@proxyhost:port" Patch by John Klar <j.klar@xpedite.com>.

Experimental HTTP/1.1 support. New module called Net::HTTP that provide the lower level interface and a LWP::Protocol::http11 module that builds on it. The HTTP/1.1 protocol module must be loaded and registered explicitly, otherwise the old and trustworthy HTTP/1.0 module will be used.

LWP::Protocol::GHTTP will try to use the get_headers() methods so that it can actually extract all the headers.

2001-03-29 Gisle Aas <gisle@ActiveState.com>

Release 5.52

HTTP::Header: new method $h->init_header() that will only set the header if it is not already set. Some shuffling around in the code.

LWP::UserAgent will not override 'User-Agent', 'From' or 'Range' headers if they are explicitly set in the request passed in.

HTML::Form tries to optimize parsing be restricting the tags that are reported by HTML::Parser. Will need HTML::Parser v3.19_93 or better for this to actually have any effect.

LWP::Protocol::ftp now deals with path parameters again. It means that you can append ";type=a" to ftp-URI and it will download the document in ASCII mode.

If the server output multiple Location headers on a redirect, ignore all but the first one.

Extract cookies failed on request URIs with empty paths. This was only triggered if you used URI objects directly in scripts.

This change was actually part of 5.51: Fix qop="auth" handling for Digest authentication. Patch by Dave Dunkin <dave_dunkin@hotmail.com>.

2001-03-14 Gisle Aas <gisle@ActiveState.com>

Release 5.51

SECURITY FIX: If LWP::UserAgent::env_proxy is called in a CGI environment, the case-insensitivity when looking for "http_proxy" permits "HTTP_PROXY" to be found, but this can be trivially set by the web client using the "Proxy:" header. The fix applied is that $ENV{HTTP_PROXY} is not longer honored for CGI scripts. The CGI_HTTP_PROXY environment variable can be used instead. Problem reported by Randal L. Schwartz.

NOTE: It is recommended that everybody that use LWP::UserAgent

(including LWP::Simple) in CGI scripts upgrade to this release.

Explicit setting of action on HTML::Form had no effect because of a code typo. Patch by BooK <book@netcourrier.com>.

HTTP::Daemon: The CONNECT method need special treatment because it does not provide a URI as argument (just a "hostname:port"). The non-upward compatibility warning is that you must now call $request->url->host_port to get the host/port string for CONNECT, rather than calling $request->url and using the entire string. Based on patch from Randal L. Schwartz <merlyn@stonehenge.com>

HTTP::Daemon: Create self URL based on $self->sockaddr. This works better when LocalAddr is used to specify the port number. Based on patch from Ben Low <ben@snrc.uow.edu.au>.

Avoid potential '<FILE> chunk 1' messages at the end of the response 'message'.

2001-01-12 Gisle Aas <gisle@ActiveState.com>

Release 5.50

Fix for test cases that failed because of URI-1.10 now encode space as '+' instead of '%20. Patch by Christian Gilmore <cgilmore@tivoli.com>.

Makefile.PL:Require URI-1.10.

HTTP::Daemon now accepts any non-space character as method name on the request line. It used to fail on methods like "M-POST" because it only allowed \w-chars.

HTTP::Date now allow fractional seconds in ISO date formats. Based on patch from Mark D. Anderson <mda@discerning.com>

HTTP::Request::Common will now calculate Content-length even if $DYNAMIC_FILE_UPLOAD is set. Patch provided by Lindley, Lee T <Lee.Lindley@viasystems.com>.

2000-12-31 Gisle Aas <gisle@ActiveState.com>

Release 5.49

HTML::Form: Use croak() instead of die. Implement $f->possible_values. Avoid use of undef value warnings.

HTTP::Cookies: fix epath issue. Make it work for URI::http as the uri-attribute of HTTP::Request object

HTTP::Date: Allow ignored timezone info in parenthesis. Patch by Sander van Zoest <sander@covalent.net>. Fix calculation of non-GMT timezones (wrong sign). Patch by KONISHI Katsuhiro <konishi@din.or.jp>.

HTTP::Response: Let $res->base() absolutize the URI. Based on bug report from Hans de Graaff <hans@degraaff.org>.

Fixed minor doc typos in HTTP::Headers::Util and LWP::UserAgent.

HTTP::Request::Common: Support boundary spec from client.

LWP::Simple: Avoid trivial_http_get when @ appears in authority part of URI

LWP::Authen::Digest: Need to have query in URI param. Spotted by <ronald@innovation.ch>.

LWP::Protocol::http: unescape username/password if they are specified in the URI.

Added LWP::Protocol::GHTTP. This allow LWP to use the HTTP::GHTTP module as the low level HTTP driver.

2000-04-09 Gisle Aas <gisle@aas.no>

Release 5.48

README.SSL update by Marko Asplund <aspa@hip.fi>

Added cookie example to lwpcook.pod

HTTP::Date::str2time returns undef on failure instead of an empty list as suggested by Markus B Krüger <markusk@pvv.org>

$request->uri($uri) will now always store a copy of the $uri.

HTTP::Status: Added status codes from RFC 2616 and RFC 2518 (WebDAV)

LWP::RobotUA will not parse robots.txt unless content type and content sample looks right.

LWP::UserAgent: Deal with multiple WWW-Authenticate headers. Patch by Hugo <hv@crypt.compulink.co.uk>

$ua->proxy can now return the old proxy settings without destroying the old one.
Based on patch by Benjamin Low <ben@snrc.uow.edu.au>

LWP::Protocol::http update

WWW::RobotRules deal with various absolute URIs in the disallow lines.

Makefile.PL:Make sure we have HTML::TokeParser

Clean test on VMS.
Patch by Charles Lane <lane@ DUPHY4.Physics.Drexel.Edu>.

1999-11-16 Gisle Aas <gisle@aas.no>

1999-10-28 Gisle Aas <gisle@aas.no>

1999-09-20 Gisle Aas <gisle@aas.no>

1999-06-25 Gisle Aas <gisle@aas.no>

1999-05-09 Gisle Aas <gisle@aas.no>

1999-03-20 Gisle Aas <gisle@aas.no>

Mon Nov 19 1998 Gisle Aas <aas@sn.no>

Mon Oct 12 1998 Gisle Aas <aas@sn.no>

Tue Aug 4 1998 Gisle Aas <aas@sn.no>

Fri Jul 10 1998 Gisle Aas <aas@sn.no>

Tue Jul 7 1998 Gisle Aas <aas@sn.no>

Thu May 7 1998 Gisle Aas <aas@sn.no>

Wed Apr 15 1998 Gisle Aas <aas@sn.no>

Fri Apr 10 1998 Gisle Aas <aas@sn.no>

Wed Apr 1 1998 Gisle Aas <aas@sn.no>

Tue Mar 24 1998 Gisle Aas <aas@sn.no>

Thu Mar 12 1998 Gisle Aas <aas@sn.no>

Fri Feb 13 1998 Gisle Aas <aas@sn.no>

Mon Jan 26 1998 Gisle Aas <aas@sn.no>

Tue Jan 20 1998 Gisle Aas <aas@sn.no>

Wed Dec 17 1997 Gisle Aas <aas@sn.no>

Tue Dec 16 1997 Gisle Aas <aas@sn.no>

Fri Dec 12 1997 Gisle Aas <aas@sn.no>

Tue Dec 2 1997 Gisle Aas <aas@sn.no>

Fri Nov 21 1997 Gisle Aas <aas@sn.no>

Thu Nov 6 1997 Gisle Aas <aas@sn.no>

Sun Oct 12 1997 Gisle Aas <aas@sn.no>

Sat Sep 20 1997 Gisle Aas <aas@sn.no>

Fri Sep 5 1997 Gisle Aas <aas@sn.no>

Wed Aug 6 1997 Gisle Aas <aas@sn.no>

Fri Jun 20 1997 Gisle Aas <aas@sn.no>

Tue Jun 10 1997 Gisle Aas <aas@sn.no>

Sat Apr 5 1997 Gisle Aas <aas@sn.no>

Tue Feb 11 1997 Gisle Aas <aas@sn.no>

Mon Jan 27 1997 Gisle Aas <aas@sn.no>

Wed Dec 4 1996 Gisle Aas <aas@sn.no>

Tue Oct 22 1996 Gisle Aas <aas@sn.no>

Tue Oct 1 1996 Gisle Aas <aas@sn.no>

Wed Sep 11 1996 Gisle Aas <aas@sn.no>

Tue Aug 1 1996 Gisle Aas <aas@sn.no>

Sun May 26 1996 Gisle Aas <aas@sn.no>

Thu May 9 1996 Gisle Aas <aas@sn.no>

        $html = parse_html "<!-- A comment -";
        $html = parse_html "-> and some text.";

Wed Apr 24 1996 Gisle Aas <aas@sn.no>

Wed Apr 3 1996 Gisle Aas <aas@sn.no>

Thu Mar 14 1996 Gisle Aas <aas@sn.no>

Tue Mar 5 1996 Gisle Aas <aas@sn.no>

Mon Feb 26 1996 Gisle Aas <aas@sn.no>

Mon Feb 5 1996 Gisle Aas <aas@sn.no>

Mon Nov 6 1995 Gisle Aas <aas@oslonett.no>

Sat Sep 16 1995 Gisle Aas <aas@oslonett.no>

Thu Sep 14 1995 Gisle Aas <aas@oslonett.no>

Thu Sep 7 1995 Gisle Aas <aas@oslonett.no>

Wed Sep 6 1995 Gisle Aas <aas@oslonett.no>

Mon Sep 4 1995 Gisle Aas <aas@oslonett.no>

Thu Aug 17 1995 Gisle Aas <aas@oslonett.no>

Fri Aug 11 1995 Gisle Aas <aas@oslonett.no>

Thu Aug 10 1995 Gisle Aas <aas@oslonett.no>

Wed Aug 9 1995 Gisle Aas <aas@oslonett.no>

Mon Aug 7 1995 Gisle Aas <aas@oslonett.no>

Tue Jul 25 1995 Gisle Aas <aas@oslonett.no>

Mon Jul 24 1995 Gisle Aas <aas@oslonett.no>

Tue Jul 18 1995 Gisle Aas <aas@oslonett.no>

Mon Jul 17 1995 Gisle Aas <aas@oslonett.no>

Mon Jul 17 1995 Gisle Aas <aas@oslonett.no>

Fri Jul 14 1995 Gisle Aas <aas@oslonett.no>

Wed Jun 14 1995 Gisle Aas <aas@oslonett.no>

Sun Jun 11 1995 Martijn Koster <m.koster@nexor.co.uk>

Wed June 7 1995 Martijn Koster <m.koster@nexor.co.uk>

Wed May 24 1995 Martijn Koster <m.koster@nexor.co.uk>

Tue May 23 1995 Martijn Koster <m.koster@nexor.co.uk>

It's getting there...

Mon May 22 1995 Martijn Koster <m.koster@nexor.co.uk>

Thu 18 May 1995 Martijn Koster <m.koster@nexor.co.uk>