Switch branches/tags
libwww-perl/6.03 libwww-perl/6.02 libwww-perl/6.01 libwww-perl/6.00 libwww-perl/5.837 libwww-perl/5.836 libwww-perl/5.835 libwww-perl/5.834 libwww-perl/5.833 libwww-perl/5.832 libwww-perl/5.831 libwww-perl/5.830 libwww-perl/5.829 libwww-perl/5.828 libwww-perl/5.827 libwww-perl/5.826 libwww-perl/5.825 libwww-perl/5.824 libwww-perl/5.823 libwww-perl/5.822 libwww-perl/5.821 libwww-perl/5.820 libwww-perl/5.819 libwww-perl/5.818 libwww-perl/5.817 libwww-perl/5.816 libwww-perl/5.815 libwww-perl/5.814 libwww-perl/5.813 libwww-perl/5.812 libwww-perl/5.811 libwww-perl/5.810 libwww-perl/5.808 libwww-perl/5.807 libwww-perl/5.806 libwww-perl/5.805 libwww-perl/5.804 libwww-perl/5.803 libwww-perl/5.802 libwww-perl/5.801 libwww-perl/5.800 libwww-perl/5.79 libwww-perl/5.78 libwww-perl/5.77 libwww-perl/5.76 libwww-perl/5.75 libwww-perl/5.74 libwww-perl/5.73 libwww-perl/5.72 libwww-perl/5.71 libwww-perl/5.70 libwww-perl/5.69 libwww-perl/5.68 libwww-perl/5.67 libwww-perl/5.66 libwww-perl/5.65 libwww-perl/5.64 libwww-perl/5.63 libwww-perl/5.62 libwww-perl/5.61 libwww-perl/5.60 libwww-perl/5.53.97 libwww-perl/5.53.96 libwww-perl/5.53.95 libwww-perl/5.53.94 libwww-perl/5.53.93 libwww-perl/5.53.92 libwww-perl/5.53.91 libwww-perl/5.53.90 libwww-perl/5.53 libwww-perl/5.52 libwww-perl/5.51 libwww-perl/5.50 libwww-perl/5.49 libwww-perl/5.48 libwww-perl/5.47 libwww-perl/5.46 libwww-perl/5.45 libwww-perl/5.44 libwww-perl/5.43 libwww-perl/5.42 libwww-perl/5.41 libwww-perl/5.40.01 libwww-perl/5.36 libwww-perl/5.35 libwww-perl/5.34 libwww-perl/5.33 libwww-perl/5.32 libwww-perl/5.31 libwww-perl/5.30 libwww-perl/5.22 libwww-perl/5.21 libwww-perl/5.20 libwww-perl/5.19 libwww-perl/5.18.05 libwww-perl/5.18.04 libwww-perl/5.18.03 libwww-perl/5.18 libwww-perl/5.17 libwww-perl/5.16
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
3742 lines (2307 sloc) 116 KB
2012-02-18 Release 6.04
Gisle Aas (4):
Typo fix; envirionment [RT#72386]
Implement $ua->is_online test
Add separate option to enable the live jigsaw tests
Merge pull request #10 from trcjr/master
Theodore Robert Campbell Jr (3):
now with put and delete helpers
updated POD
unit tests for ua->put and ua->delete
Peter Rabbitson (1):
These modules work with 5.8.1
2011-10-15 Release 6.03
Ville Skyttä (7):
Link updates.
Attribute documentation wording improvements.
Don't parse robots.txt response content unless it's textual.
Decode robots.txt response content before attempting to parse it.
RobotUA robots.txt response parsing cleanups.
Don't parse HEAD of robots.txt responses.
Request handler doc grammar fixes.
Gisle Aas (6):
Pass on HTTP/1.0 if set as request protocol
Remove outdated docs (not touched since 1996 :-)
Merge pull request #22 from madsen/RT67947-verify_hostname
lwp-request didn't respect -H Content-type [RT#70488]
lwp-request -H didn't allow repeated headers
Christopher J. Madsen (2):
verify_hostname defaults to 0 if ssl_opts provided [RT#67947]
Test verify_hostname setting
Bryan Cardillo (1):
Fix expect header support to work with content refs.
Moritz Onken (1):
add PERL_LWP_ENV_PROXY env variable to enable env_proxy globally
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] 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 _sorted_field_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
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 compatibility with perl-5.6.
Gisle Aas (4):
Less noisy behaviour when we can't download the documents
Restore perl-5.6 compatibility [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 _trivial_http_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 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 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 [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
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
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
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
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
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/ 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]
Croak if LWP::UserAgent is constructed with hash ref as argument [RT#28597]
Adam Sjogren (1):
Disabled, checked radiobutton being submitted [RT#33512]
warn if TextInput's maxlength exceeded [RT#32239]
2007-08-05 Gisle Aas <>
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 <>
Release 5.807
Apply patch correction from CPAN RT #26152
More laxed t/live/validator test.
2007-07-19 Gisle Aas <>
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 <>
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 <>.
HTML::Form: Sane handling of 'disabled' for ListInput.
Based on patch by Joao Lopes <>.
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 <>
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ä <>:
- Support the nntp: scheme.
- Support hostname in news: and nntp: URIs.
- Close connection and preserve headers also in non-OK responses.
- HEAD support for URIs identifying a newsgroup.
- Comment spelling fixes.
Fix quotes in Net::HTTP example.
Detect EOF when expecting a chunk header. Should address the
warnings shown in
WWW::RobotRules: Improved parsing of not strictly valid robots.txt files
contributed by <>.
Makefile.PL: Set name to LWP so that the .packlist ends up in the
expected place.
2004-12-11 Gisle Aas <>
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 <>.
HTTP::Response: $resp->base might now return undef. Previously
it would croak if there was no associated request. Based on
patch by Harald Joerg <>.
HTML::Form now support <label> for check- and radio boxes.
Patch contributed by Dan Kubb <>.
Make HTTP::Daemon subclassable, patch by Kees Cook <>.
lwp-download allow directory to save into to be specified.
Patch by Radoslaw Zielinski <>.
lwp-download will validate filename derived from server
controlled data and will fail if something looks not
quite right.
2004-11-30 Gisle Aas <>
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.
Net::HTTP: Don't allow empty content to be treated as a valid
HTTP/0.9 response.
File::Protocol::file: Fixup directory links in HTML generated
for directories. Patch by Moshe Kaminsky <>.
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 <>
Release 5.801
HTTP::Message improved content/content_ref interaction. Fixes
DYNAMIC_FILE_UPLOAD and other uses of code content in requests.
- Handle clicking on nameless image.
- Don't let $form->click invoke a disabled submit button.
HTTP::Cookies could not handle a "old-style" cookie named
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 <>
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ä <>.
2004-06-16 Gisle Aas <>
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 <>.
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ä <>.
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 <>
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ä <>.
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ä <>.
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ä <>.
Updated tests.
2004-04-07 Gisle Aas <>
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
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 <>.
2004-04-06 Gisle Aas <>
Release 5.77
LWP::Simple did not handle redirects properly when the "Location"
header used uncommon letter casing.
Patch by Ward Vandewege <>.
LWP::UserAgent passed the wrong request to redirect_ok().
Patch by Ville Skyttä <>.
LWP did not handle URLs like
LWP::RobotUA construct now accept key/value arguments in the
same way as LWP::UserAgent.
Based on patch by Andy Lester <>.
LWP::RobotUA did not parse robots.txt files that contained
"Disallow:" using uncommon letter casing.
Patch by Liam Quinn <>.
WWW::RobotRules now allow leading space when parsing robots.txt
file as suggested by Craig Macdonald <>.
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 <>.
Case insensitive handling of hosts and domain names
in HTTP::Cookies.
The bundled media.types file now match video/quicktime
with the .mov extension, as suggested by Michel Koppelaar
Experimental support for composite messages, currently
implemented by the HTTP::MessageParts module. Based on
ideas from Joshua Hoblitt <>.
Fixed libscan in Makefile.PL.
Patch by Andy Lester <>.
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 <>
Release 5.76
Revised handling of redirects.
- clear our content and content headers if we
rewrite request as GET based on patch by
Steven Butler <>.
- pass $response to redirect_ok()
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 <>
Release 5.75
Reworked LWP::UserAgent, HTTP::Request and HTTP::Response
documentation. Also other documentation tweaks.
2003-10-23 Gisle Aas <>
Release 5.74
Improved lwp-download program:
- set mtime if Last-Modified header reported by server
- better prompts
- avoid warnings when aborted at the wrong time
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 <>
Release 5.73
Takanori Ugai <> 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 <>.
Some documentation tweaks.
2003-10-15 Gisle Aas <>
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
Suppress Client-SSL-Warning warning header when Crypt::SSLeay
is able to verify the peer certificate. Patch contributed by
Joshua Chamas <>.
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 <>.
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 <>.
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 <>.
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 <>.
2003-10-14 Gisle Aas <>
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 <>.
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
HTML::Form's find_input now returns all inputs that match in
array context. Based on patch by Mark Stosberg <>
in <>.
HTTP::Daemon's send_file() method did not work when given
a file name. Patch by Dave W. Smith <>.
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
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 <> in
LWP::Protocol::mailto will try harder to locate the sendmail
program as suggested in <>.
Also let $ENV{SENDMAIL} override the search.
Patch to enable OS/2 build by Ilya Zakharevich.
2003-10-13 Gisle Aas <>
Release 5.70
File::Listing::apache by Slaven Rezic <>
HEAD requests now work properly for ftp: URLs.
Patch by Ville Skyttä <>.
LWP::UserAgent: The protocols_allowed() and protocols_forbidden()
methods are now case insensitive. Patch by Ville Skyttä
Avoid warning from HTTP::Date on certain invalid dates.
Patch by David Dick <>.
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 <>.
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
2003-01-24 Gisle Aas <>
Release 5.69
Include lwptut.pod contributed by Sean M. Burke C<>.
The lwp-request aliases GET, HEAD, POST where installed when
no program should be. Fixed by David Miller <>.
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
2003-01-02 Gisle Aas <>
Release 5.68
Fix test failure for t/html/form.t when running under
2003-01-01 Gisle Aas <>
Release 5.67
HTTP::Cookies::Microsoft contributed by Johnny Lee <>.
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
HTML::Form documentation reworked.
2002-12-20 Gisle Aas <>
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 <>
The format_chunk() and write_chunk() methods of Net::HTTP
did not work. Bug spotted by Yale Huang <>.
The Client-Peer response header is back.
2002-05-31 Gisle Aas <>
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 <>.
HTTP::Negotiate doc patch from Edward Avis <>.
2002-02-09 Gisle Aas <>
Release 5.64
Simplified the Makefile.PL:
- the scripts are not longer *.PL files
- don't try to make symlinks for GET, HEAD, POST
as that has not worked for a long time
- the GET, HEAD, POST aliases for lwp-request should
now work on Windows.
- added 'clear_temporary_cookies' method;
patch by Mike Schilli <>.
- trailing space in old cookie parameters not ignored;
patch by Ivan Panchenko
- protect against $SIG{__DIE__} handlers;
patch by Adam Newby <>.
- abort digest auth session if we fail repeatedly with
the same username/password.
MacOS portability patches to the test suite by
Chris Nandor <>.
2001-12-14 Gisle Aas <>
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
2001-11-21 Gisle Aas <>
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 <>.
The jigsaw-chunk test failed on MacOS because "\n" is different.
Patch by Chris Nandor <>.
2001-11-16 Gisle Aas <>
Release 5.61
LWP::Protocol::http did not invoke its _fixup_header 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 <>.
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 <>.
LWP::Protocol::http has been reorganized to make it simpler
to subclass it. Other minor changes to it include:
- Client-Warning is gone
- Client-Request-Num renamed to Client-Response-Num
- A 'Transfer-Encoding' header is rewritten into a
'Client-Transfer-Encoding' header.
LWP::Protocol::https is completely redone.
2001-10-26 Gisle Aas <>
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 <>
Support the Range header for ftp:// requests.
Patch by David Coppit <>.
Rearrange Bundle::LWP on request from Chris Nandor.
HTTP::Cookies: Allow a domain like match host "".
Patch by Alexandre Duret-Lutz <>
For redirects make sure Host header is not copied to the new
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 <>.
2001-09-19 Gisle Aas <>
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 <>
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 <>
Release 5.53_96
HTTP/1.1 support also for https.
Contributed by Doug MacEachern <>
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 <>.
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 <>
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 <>
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:
- Fix treatment of language tags in HTTP::Negotiate
- Avoid trailing newline in $response->message
- HTTP::Response clarifications
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 <>
Release 5.53_94
Sean M. Burke's update to LWP::UserAgent:
- updated redirect_ok behaviour
- new convenience methods: get/head/post/put
- protocols_allowed/protocols_forbidden
- LWP::Protocol::nogo (new module)
Added digest auth test against Jigsaw
Fixed a 'use of uninitialized'-warning in the handling of
digest authentication.
Net::HTTP updates:
- new option: SendTE
- support transfer-encoding 'deflate' and 'gzip' (when Compress::Zlib
is available).
- new methods: format_chunk, format_chunk_eof
- use -1 (instead of "0E0" as signal that no data was available,
but this was not EOF).
2001-04-28 Gisle Aas <>
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.
- transparent support for 'deflate' and 'gzip' transfer encodings
(need to have the Compress::Zlib module installed for this to work).
2001-04-25 Gisle Aas <>
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:
- chunked request content did not work
- monitor connection while sending request content
- deal with Expect: 100-continue
LWP::RobotUA: Protect host_port call. Not all URIs have this method.
2001-04-20 Gisle Aas <>
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:
- new methods: write_chunk(), write_chunk_eof()
- reset state properly when a new body is read.
- always set read buffer empty on eof
- doc update
WWW::RobotRules patch by Liam Quinn <>:
- Always qualify netloc with port.
- Reverse User-Agent substring matching.
2001-04-18 Gisle Aas <>
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:
- added format_request() method
- added _rbuf and _rbuf_length methods
- read_response_headers does not return protocol version
any more.
- peer_http_version method did not work because of typo.
- documentation added
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 <>
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:
Patch by John Klar <>.
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 <>
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
This change was actually part of 5.51: Fix qop="auth"
handling for Digest authentication.
Patch by Dave Dunkin <>.
2001-03-14 Gisle Aas <>
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 <>.
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 <>
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 <>.
Avoid potential '<FILE> chunk 1' messages at the end of the response
2001-01-12 Gisle Aas <>
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
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 <>
HTTP::Request::Common will now calculate Content-length
even if $DYNAMIC_FILE_UPLOAD is set. Patch provided by
Lindley, Lee T <>.
2000-12-31 Gisle Aas <>
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 <>.
Fix calculation of non-GMT timezones (wrong sign). Patch by
KONISHI Katsuhiro <>.
HTTP::Response: Let $res->base() absolutize the URI. Based on
bug report from Hans de Graaff <>.
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 <>.
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 <>
Release 5.48
README.SSL update by Marko Asplund <>
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 <>
$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 <>
$ua->proxy can now return the old proxy settings without
destroying the old one.
Based on patch by Benjamin Low <>
LWP::Protocol::http update
- don't terminate header parsing on bad headers
- extra_sock_opts
- preparations for keep alive support
- method CONNECT
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 <>
o Release 5.47
o Added HTML::Form to the distribution.
o LWP::Protocol::ftp: Make it compatible. We broke it in 5.45.
o LWP::Protocol::http: Kill any Connection header
o LWP::MediaTypes: Fixed builtin html/text mapping.
Added bz2 to suffixEncoding
1999-10-28 Gisle Aas <>
o Release 5.46
o Updated mailing list address
o Avoid warnings for lwp-request -t
o referrer as alternative spelling for referer as suggested by tchrist.
o More conservative selection of boundary for multipart messages
in &HTTP::Request::Common::POST.
o LWP::MediaTypes can now export &read_media_types.
o Spelling corrections from Ben Tilly <>
1999-09-20 Gisle Aas <>
o Release 5.45
o The LWP SSL support better explained. Documentation in README.SSL
and lwpcook.pod contributed by Marko Asplund <>.
o LWP::Protocol::https: Try loading IO::Socket::SSL if Net::SSL is
not available.
o lwp-mirror -t option did not work.
o defined(@ISA) eliminated. Patch by Nathan Torkington <>
o LWP::Protocol::ftp: Protect against empty path_segments
1999-06-25 Gisle Aas <>
o Release 5.44
o We require URI-1.03, since this fix some query quoting stuff
that HTTP::Request::Common rely upon.
o 'lwp-request -HUser-Agent:foo' can now be used to set this
header too.
o Localize $/ to ensure standard record separator a few places
in HTTP::Cookies
o LWP::UserAgent will now set the Range header in requests if
the $ua->max_size attribute is set.
1999-05-09 Gisle Aas <>
o Release 5.43
o New lwp-request command line option that allow you to put any
header into the request (-H).
o New HTTP::Date because of Y2K-problems with the old one.
It refused to parse the ftp-listing (ls -l) dates missing year.
Additional entry point is parse_date(). This function avoid any
limitations caused by the time-representation (seconds since
o Y2K fix to t/base/cookies.t. Netscape's original cookie
example expires at 09-Nov-99.
o Added another binmode() to LWP::Protocol::file as suggested
by Matt Sergeant <>
1999-03-20 Gisle Aas <>
o Release 5.42
o MacOS patches from Paul J. Schinder <>
o Documentation patch from Michael A. Chase <>
o PREREQ_PM patch from Andreas Koenig <>
o LWP::Simple::head fix by Richard Chen <>
o "LWP fails with PerlEXE"-patch from Gurusamy Sarathy
o Allow "." in HTTP header names. Patch by Marc Langheinrich
o Fixed reference to $uri->netloc in lwp-request
o Cute animation in lwp-download
Mon Nov 19 1998 Gisle Aas <>
o Release 5.41
o HTTP::Cookies provide better Netscape cookies compliance.
Send back cookies to any port, and allow origin host name to
be specified as domain, and still be treated as a domain.
Patch from Andreas Gustafsson <>.
o HTTP::Cookies now ignore the Expires field in Set-Cookie, if the
date provided can't be parsed by HTTP::Date.
o HTTP::Daemon will lowercase the hostname returned from
Sys::Hostname::hostname(). This avoid some test failures in
the test suite for people with upper- or mixed-cased hostnames.
o LWP::Protocol::gopher: IO::Socket::INET ctor did not specify
Proto => 'tcp'. This made it less portable to older IO::Socket
o No programs installed when you build the Makefile with
'perl Makefile.PL LIB=/my/lib'
o LWP bundle mention Digest::MD5 instead of MD5
o headers-auth.t test suite bug triggered by perl5.005_5x.
Patch by Albert Dvornik <>
o The local/http.t test actually did try to unlink("."). This was
very confusing on systems where it succeed.
Mon Oct 12 1998 Gisle Aas <>
o Release 5.40_01
o Unbundled URI::URL modules. You now have to install the module in order to get libwww-perl working.
o Made library compatible. Made all URI object instantiations
based on $HTTP::URI_CLASS variable.
o New lwp-rget option: --referer.
Patch by INOUE Yoshinari <>.
o One more binmode() to HTTP::Daemon as suggested by
Markus Laker <>.
Tue Aug 4 1998 Gisle Aas <>
o Release 5.36
o The lwp-download script will call $ua->env_proxy now.
o The lwp-request script allows content types (specified with the -c
option) with optional parameters like: multipart/mixed; boundary="--".
o LWP::UserAgent will lowercase all authentication parameter names
before passing it to the authentication module. Previous releases
ignored parameters like; Realm="Foo" (because Realm contained
upper case letters).
o LWP::Protocol::ftp test for If-Modified-Since was wrong.
o How the $url->abs method works can now be configured with the global
o The anonymous password guesser for ftp URLs will now call the external
`whoami` program any more. Patch by Charles C. Fu <>.
o LWP::Protocol::http now allow dynamic requests without any
Content-Length specified when Content-Type is multipart/*
o HTTP::Request::Common can now upload infinite files.
(Controlled by the $DYNAMIC_FILE_UPLOAD configuration variable.)
Fri Jul 10 1998 Gisle Aas <>
o Release 5.35
o More lwp-rget patches from David D. Kilzer <>.
Adds the following new options: --iis, --keepext, --tolower
o LWP::MediaTypes patches from MacEachern <>. Adds new
functions: add_type(), add_encoding(), read_media_types()
Tue Jul 7 1998 Gisle Aas <>
o Release 5.34
o LWP::Protocol::ftp now try to use the MDTM command to support
the Last-Modified response header as well as
If-Modified-Since in requests. Original and final patch by
Charles C. Fu <>
o $url->path_components will not escape "." any more.
o WWW::RobotRules will now work for Mac text files too (lines delimited
by CR only). Patch by Olly Betts <>
o lwp-rget support <area ..> links too.
Thu May 7 1998 Gisle Aas <>
o Release 5.33
o LWP::Simple::get() did try to handle too many of the 3xx
codes as redirect when it bypasses full LWP.
o LWP::UserAgent->mirror will now use utime(2) to set the
file modification time corresponding to the Last-Modified
o LWP::Protocol::http will not modify the HTTP::Request that
it is processing. This avoids sticky Host header for
o URI::Heuristic and lwp-download documentation update.
Wed Apr 15 1998 Gisle Aas <>
o Release 5.32
o Much improved HTTP::Daemon class. We now support persistent
connections. Changes include:
- $c->get_request can be told to return after reading and
parsing headers only.
- $c->reason (new method)
- $c->read_buffer (new method)
- $c->proto_ge (new method)
- $c->force_last_request (new method)
- $c->send_response now support CODE reference content
and will use chunked transfer encoding for HTTP/1.1 clients.
- expanded the documentation.
Fri Apr 10 1998 Gisle Aas <>
o Release 5.31
o Makefile.PL now checks that HTML::HeadParser is present.
o Updated HTTP::Cookies according to draft-ietf-http-state-man-mec-08.txt
It now supports the .local domain and value less 'port' attribute in
the Set-Cookie2 header.
o HTTP::Headers update:
- $h->content_type now always return a defined value
- $h->header($field) will now concatenate multi-valued header
fields with "," as separator in scalar context.
o HTTP::Request::Common update:
- used to destroy the content of the hash/array arguments
passed to its constructor functions.
- allow a hash reference to specify form-data content.
- you can override Content-Disposition for form-data now.
- set content-encoding for files if applicable
- default boundary string is now always "--000"
o LWP::UserAgent will not follow more than 13 redirects
Wed Apr 1 1998 Gisle Aas <>
o Release 5.30
o Unbundled the following modules:
* HTML-Parser (HTML::Parser, HTML::Entites, HTML::LinkExtor,...)
* HTML-Tree (HTML::Element, HTML::TreeBuilder,...)
* Font-AFM (Font::AFM, Font::Metrics::*)
* File-CounterFile
o Simplified internal structure of HTTP::Headers. Hopefully,
nobody will notice.
o New modules HTTP::Headers::Auth, HTTP::Headers::ETag that adds
additional convenience methods to the HTTP::Headers class.
o Removed split_etag_list() from HTTP::Headers::Util, in the hope
that nobody had starting using it.
Tue Mar 24 1998 Gisle Aas <>
o Release 5.22
o HTTP::Cookies made more compatible with Netscape cookies. Allow
the domain to match host, allow dots in the part of the hostname
not covered by domain. Don't quote the cookie value even when it
contains non-token chars. Based on patch from Kartik Subbarao
o Updated HTTP::Status to reflect <draft-ietf-http-v11-spec-rev-03>.
RC_MOVED_TEMPORARILY renamed to RC_FOUND. Added codes
Slightly more documentation too.
o The split_header_words() function HTTP::Headers::Util could go
into infinite loop on some header values. Implemented split_etag_list()
too. Added more documentation and test script for this module.
o LWP::Simple now switch to full LWP implementation even for systems
that force all environment keys to be upper case. Modification
suggested by Dale Couch <>.
o LWP::UserAgent allows redirects to a relative URL with scheme to be
made. Suggested by Chris W. Unger <>.
o Applied patches from <>. It can now
extract information from the HTML40.dtd
Thu Mar 12 1998 Gisle Aas <>
o Release 5.21
o lwp-rget patches from David D. Kilzer <>
(modified by Gisle). Support the --hier and the --auth options
and <frame>s.
o File::CounterFile protect against bad $/ and $\ as suggested
by Frank Hoehne.
o File::Listing used "next" when return was more appropriate.
Patch by
o HTML::Element support for multiple boolean attributes for a single
element. Patch by Philip Guenther.
o Can set $HTTP::Headers::TRANSLATE_UNDERSCORE to FALSE value to
suppress tr/_/-/ of header keys.
o LWP::Protocol::http will not initialize the Host header if it is
already set.
o LWP::Protocol::http did not handle responses with no header lines
correctly. Patch by Daniel Buenzli <>
o $url->rel() handles path segments without leading "/" better.
Fri Feb 13 1998 Gisle Aas <>
o Release 5.20
o Fixed the "500 Offset outside string" bug that affected perl
5.004_03 and older version of Perl.
o Fixed a documentation typo spotted by Michael Quaranta
o HTTP::Date: Protect against croaking from timegm/timelocal.
Mon Jan 26 1998 Gisle Aas <>
o Release 5.19
o HTML::Parser does not call $self->text() callback for empty text
any more.
o LWP::Protocol::https was noisy when connections failed and the
script was running with '-w' (noise inherited from IO::Socket::INET)
o $ua->use_alarm(BOOL) now gives a warning if running with -w
Tue Jan 20 1998 Gisle Aas <>
o Developer release 5.18_05
o HTTPS support based on my Crypt-SSLeay module. The Net-SSLeay module
is not supported any more.
o lwp-request documentation typo spotted Martijn Koster.
o Removed superfluous \\ in the URI::Escape regex. This was also
spotted by Martijn.
o File::Listing now handles timezones correctly.
o Added $VERSION to modules that was missing it.
o Added 'use strict' to several modules that was missing it.
o LWP::Protocol::http now adds the Client-Peer header to responses and
has hooks for more callbacks.
o LWP::Protocol::https adds Client-SSL-Cipher, Client-SSL-Cert-Subject
and Client-SSL-Cert-Issuer headers to the response. The requests can
also be made conditional based on the peer certificate using the
If-SSL-Cert-Subject header in requests.
o HTML::Parse is back. (It was even used in lwpcook.pod)
Wed Dec 17 1997 Gisle Aas <>
o Developer release 5.18_04
o Makefile.PL fix based on report from Pon Hwa Lin <>
o lwp-request will now print the response code message with -s and -S
o Hide IO::Socket::INET noise when running under -w
o Don't set 'Content-Length: 0' in HTTP requests.
o LWP::Protocol::http now calls LWP::Debug::conns again
Tue Dec 16 1997 Gisle Aas <>
o Developer release 5.18_03
o Got rid of alarms() and replaced LWP::Socket with IO::Socket::INET.
New protocol implementations for http, https, gopher, nntp.
$ua->use_alarm() is now a noop.
o LWP::Protocol::ftp patch from Tony Finch <>.
o Removed deprecated modules from the distribution; HTML::Parse,
LWP::Socket, LWP::SecureSocket, LWP::IO, LWP::TkIO.
Fri Dec 12 1997 Gisle Aas <>
o Release 5.18
o HTTP authorization patches from Tony Finch <>.
Allows "user:pass@" in HTTP URLs.
o HTML::Parser patch by Brian McCauley <>.
Pass original text to end() method.
o The HTML::Parser->netscape_buggy_comment method is deprecated.
Use HTML::Parser->strict_comment instead. The default value
has changed with the name.
o Some HTML::Parser optimization tweaks.
o New module named HTML::Filter
o Updated HTTP::Headers to the latest HTTP spec. Added knowledge
about the "Trailer", "Expect", "TE", "Accept-Range" headers.
"Public" header is gone.
o Added some more header convenience methods: if_unmodified_since,
content_language, and proxy_authorization methods.
o HTTP::{Request,Response}->clone can handle subclasses now.
o HTTP::Request->url() can now undefine the URL.
o HTTP::{Request,Response}->as_string format looks more like
the HTTP protocol formatting now. Dashed lines above and
below is gone.
o Documented HTTP::Response->status_line method
o Compressed HTML::Response->error_as_HTML output
o HTTP::Status updated to latest HTTP spec. Added
Tue Dec 2 1997 Gisle Aas <>
o Release 5.17
o All authentication handling moved out of LWP::UserAgent and into
LWP::Authen::Basic and LWP::Authen::Digest. We now also support
o HTML::Formatter will always add a blank line for <br>.
o Avoid use of uninitialized value in HTTP::Daemon.
o HTTP::Date allows seconds when recognizing 'ls -l' dates. This
allows us to parse syslog time stamps.
o HTTP::Request::Common::POST allows a hash reference as second
argument (in addition to an array reference).
o LWP::Simple will initialize the $ua if it is exported.
o Various documentation updates.
Fri Nov 21 1997 Gisle Aas <>
o Release 5.16
o LWP::Simple::head() would die in array context because str2time
was not imported any more.
o HTTP::Daemon->accept now takes an optional package argument like
IO::Socket->accept does.
o Made HTTP::Request and HTTP::Response subclassable.
o Added Proxy-Authorization example to lwpcook.
Thu Nov 6 1997 Gisle Aas <>
o Release 5.15
o New module URI::Heuristic
o The lwp-request script now use URI::Heuristic for it's URL arguments.
It means that 'lwp-request perl' will not get a file called "./perl"
but will fetch the page "" or something similar.
If you want to get the file you have to prefix it with "./". Full
URLs are never affected by this.
o LWP::Simple::get() will bypass LWP for simple HTTP requests. This
should make it somewhat faster.
o LWP::RobotUA has a new method called $ua->use_sleep() that
controls how niceness towards the servers are enforced.
Previously $ua->use_alarm() used to control this, but this did
not work well on Win32 systems.
o URI::URL::rel() will handle URLs to a fragment within the same
document better. Initial patch from Nicolai Langfeldt
o HTML::Element don't consider </th>, </tr> and </td> optional any
more. I wonder how Netscape managed to not implement this
correctly all this time.
o Added lots of modern tags to HTML::AsSubs.
o HTTP::Request::Common will read uploaded files in binmode().
This should be better for Win32 systems. Contributed by
Sun Oct 12 1997 Gisle Aas <>
o Release 5.14
o HTML::Formatter patches from Andreas Gustafsson <>.
The formatters handling of whitespace is much better now. Thanks!
o HTML::FormatText: can specify margins in the constructor.
o URI::URL: the base will be absolutized internally now.
o URI::URL will take advantage of void context provided by perl5.004.
This means that using $u->path and $u->query should be safer now.
o URI::URL->print_on defaults to STDERR now (used to be STDOUT).
o URI::URL: removed version 3 compatibility stuff ($COMPAT_VER_3).
o $ua->mirror should work better on dosish systems (can not
rename when target file exists).
o Typo in lwp-download prevented it from compiling.
o Some minor documentations typos corrected.
Sat Sep 20 1997 Gisle Aas <>
o Release 5.13
o Brand new module called HTTP::Cookies. It stores cookies
(Set-Cookie and Set-Cookie2 headers) from responses and can
create appropriate Cookie headers for requests. It can also
share cookie files with Netscape.
o LWP::UserAgent now support the cookie_jar() attribute. When
set to an HTTP::Cookies object, it will automatically manage
the cookies sent to the servers. Off by default.
o New header utility functions in HTTP::Headers::Util.
o Win32 and OS/2 patches for the lwp-xxx utilities. Turn on
binary mode by default (option to turn it off), avoid modifying $0,
and don't be confused about suffixes in the script names.
Contributed by Ben Coleman <>
o OpenVMS patch for Font:AFM by Brad Hughes <>
Fri Sep 5 1997 Gisle Aas <>
o Release 5.12
o decode_entities() would sometimes introduce ";" after
things that looked like they were entities.
o HTML::LinkExtor knows about <applet code="...">
o Patch from Gary Shea <> that makes the
tests work even if perl is not called "perl"
o HTTP::Date handles 12:00PM correctly now. Patch from
William York <>
o HTTP::Request::Common don't quote the boundary string for
multipart/form-data messages any more.
o Font::AFM works for encodings where .notdef is defined to
have some size. Documentation and efficiency update.
Wed Aug 6 1997 Gisle Aas <>
o Release 5.11
o Perl version 5.004 is now required for libwww-perl.
o Win32 patches from Gurusamy Sarathy <>.
Now passes all tests on that platform.
o HTTPS support contributed by Josh Kronengold <>
o Support hex entities &#xFF; HTML::Entities::(en|de)code only
modify their argument in void context.
o Fixed formatter bug with <font> tags which did not specify size.
o Better HTML::HeadParser documentation
o Fixed HTML::LinkExtor documentation typo spotted by Martijn.
o HTTP::Request::Common now use CRLF for multipart/form-data
Fri Jun 20 1997 Gisle Aas <>
o Release 5.10
o Make '+' a reserved URL character. Decode unescaped '+' as
space in $url->query_form().
o Use $Config{d_alarm} to determine default for $ua->use_alarm()
Tue Jun 10 1997 Gisle Aas <>
o Release 5.09
o Removed the MIME modules from the distribution. They are distributed
separately now.
o Added a new module called HTTP::Request::Common
o Improved HTTP::Status documentation. It is now also possible
to import the is_client_error/is_server_error functions.
o LWP::MediaTypes::guess_media_type() can now take an optional
HTTP::Header parameter.
o LWP::Protocol ensures that scheme is legal as module name.
o LWP::Protocol::http is not as strict when trying to verify the
method name. It now also accepts responses without a message
on the status line.
o WWW::RobotRules::AnyDBM_File: Some DBMs fail to allow multiple
opens of the same file. Patch from Mark James <>
o Created Bundle::LWP
Sat Apr 5 1997 Gisle Aas <>
o Release 5.08
o Made libwww-perl warning compatible with upcoming perl5.004beta2
(aka 5.003_98)
o encode_base64() did not work properly if pos() of the string to
encode was different from 0.
o HTML::Parser was confused about "</" when it did not start an end tag.
o HTML::FormatPS will provide ISOLatin1Encoding in its output.
o Calling HTML::LinkExtor->links will clear out old links.
o url()->rel($base) would ignore the $base argument.
o Don't croak() when setting url()->path().
Tue Feb 11 1997 Gisle Aas <>
o Release 5.07
o Can limit the size of the response content with $ua->max_size()
o Added time2iso() functions to HTTP::Date.
o Made LWP::Protocol::http more portable to the MacPerl. /./ match
different things on MacPerl.
Mon Jan 27 1997 Gisle Aas <>
o Release 5.06
o URI::URL is now compatible with perl5.004 overloading.
o HTML::HeadParser makes X-Meta-Name headers for <meta> elements
that does not specify an 'http-equiv' attribute.
o URI::URL::ftp does not die if Net::Domain is not installed and
you ask for an anonymous username or password.
o WWW::RobotRules: The robots.txt parser did not ignore comment lines
as it should.
o LWP::Protocol::http is more forgiving towards servers that return
bad responses.
o Allow "?" before search string in gopher URLs.
o LWP::Protocol::file did not escape funny filenames when generating
HTML directory listings.
o LWP::Protocol::ftp now gets the Content-Encoding correct. 'CODE'
content in PUT requests also work now.
o Relative locations in redirects did not work with URI::URL::strict.
o OS/2 portability patches from Ilya Zakharevich
o LWP::Authen::* patch from Doug MacEachern
o Support experimental data:- URLs
o Some tests (those using HTTP::Daemon) now die more gracefully if
IO::* modules is not installed.
Wed Dec 4 1996 Gisle Aas <>
o Release 5.05
o LWP::UserAgent::simple_request: local($SIG{__DIE__}) protects us
against user defined die handlers.
o Use Net::Domain (instead of Sys::Hostname) to determine FQDN. It
is used by URI::URL when it determines anonymous ftp login address.
o lwp-download: New program in the bin directory
o HTML::Parser: Allow '_' in attribute names. This makes it possible
to parse Netscape's bookmarks.html file.
o HTTP::Daemon: Fixed chunked transfer encoding and multipart content
in get_request(). Support HTTP/0.9 clients.
o Don't clobber regex variables when HTTP::Message delegates methods
to the header.
o Base64::decode_base64 now checks that the length input string to
decode is a multiple of 4.
o t/robot/rules-dbm.t clean up better and will use AnyDBM for dumping
o File::CounterFile: $/ strikes again by Andreas König
o File::Listing updates from William York <>. We
can now parse the MS-Windows ftp server listings.
o HTTP::Date now supports the MS-Windows 'dir' date format. Patch by
William York.
o LWP::MediaTypes::media_suffix will return first type in scalar context.
Tue Oct 22 1996 Gisle Aas <>
o Release 5.04
o Added HTTP::Daemon. This is a HTTP/1.1 server class. This means
that libwww-perl no longer is a client library only. The HTTP::Daemon
is also used in the new test suite.
o HTTP::Message support the protocol() method. Used by HTTP::Daemon.
o HTTP::Response can be constructed with a header and content as
o Typo corrections in the documentation.
o File::Listing::parse_dir accepts "GMT" as timezone now.
o HTML::Parser will call the start() method with two new parameters;
$attrseq, $origtext.
o Integrated HTML::FormatPS patches from
Jim Stern <>
o Class modules don't inherit from AutoLoader any more. They just
import the AUTOLOAD method.
o LWP::Protocol will untaints scheme before loading protocol module.
o Digest does not send "opaque" if it was not present in the request.
The "Extension" header is not returned any more.
o New method: $url->crack that will return a list of the various
elements in a URI::URL.
o WWW::RobotRules did not use the agent() method when determining
who we are. This affected WWW::RobotRules::AnyDBM_File parsing
for robots.txt. Visit count did not increment for
Tue Oct 1 1996 Gisle Aas <>
o Release 5.03
o Hakan Ardo's persistent robot rules is now part of the standard
distribution. This is still experimental and might change in the
future. It includes the new WWW::RobotRules::AnyDBM_File class
and updates to LWP::RobotUA.
o HTML::Parser now supports buggy Netscape comment parsing. Enable
it by calling $p->netscape_buggy_comment(1). The previous version
of the parser could also (under very unlucky and unlikely
circumstances) call the $self->comment() method several times for
the same comment text.
o HTML::Parser: Use new $p->eof to signal end of document instead of
o HTML::Element::starttag() is now smarter about which quotes it
use around attribute values.
o New HTTP::Response methods: current_age(), freshness_lifetime(),
is_fresh(), fresh_until().
o HTTP::Message: New method ($mess->content_ref) which will return
a reference to the current content.
o URI::URL: New method ($url->rel) which does the opposite of abs().
Example: url("http://host/a/b/c", "http://host/c/d/e")->rel would
return url("../../a/b/c", "http://host/c/d/e"). This was
suggested by Nicolai Langfeldt <>
o URI::URL: $url->query_form can now take array references as value
specification. For instance: $url->query_form(foo => ['bar', 'baz']
o Avoid '"my" variable $var masks earlier declaration in same scope'
warnings in perl5.003_05.
Wed Sep 11 1996 Gisle Aas <>
o Release 5.02
o lwp-rget: Initialize proxy settings from environment
o HTML::Entities::encode_entities: Don't encode $ and %
o HTML::LinkExtor::links: Now works when no links were found.
o HTTP::Headers::as_string: Allow \n in header value
Tue Aug 1 1996 Gisle Aas <>
o Release 5.01.
o Updated ftp protocol module to be compatible with Net::FTP
version 2.00 (the version found in libnet-1.00)
o New HTML parser module called HTML::LinkExtor
o Various documentation typo corrections. Most of these contributed
by Bob Dalgleish.
o HTML::HeadParser updates 'Content-Base' instead of 'Base'. It also
updates the 'Link' header based on <link ...>
o HTTP::Headers and HTTP::Status updated according to
o HTTP::Headers can now use "_" as alternative to "-" in field names.
o HTTP::Response::base now looks for 'Content-Base',
'Content-Location' and 'Base' headers.
o Avoid warning in LWP::MediaTypes if $ENV{HOME} is not defined.
o The new $ua->parse_head() method can be used to turn off
automatic initialization of response headers from the <HEAD>
section of HTML documents.
o Added eq() method for URI::URL objects
o The HTML::Formatter recovers even if a handle method is not defined
for all tags found during traversal
Sun May 26 1996 Gisle Aas <>
o Release 5.00.
o LWP::Simple::head() now return something useful in scalar context.
o Rewritten the HTML::Parse stuff. Introduced the HTML::Parser class
that will tokenize a HTML document. The rest of the old
HTML::Parse functionality has moved to HTML::TreeBuilder class.
Note, that the HTML stuff is still alpha.
o Implemented HTML::HeadParser. This is a lightweight parser for
the <HEAD> section of a HTML document.
o HTML::Element had problem with presenting things like <foo
o HTML::Entities: Included additional ISO-8859/1 entities listed in
o HTML::AsSubs exported 'header' instead of 'head'
o We know about a few more of the HTML 3.2 element.
o HTTP::Date had problems with years before 1970, because Time::Local
went into an infinite loop. Check for this.
o Added $header->title method.
o Made $header->authorization_basic return "uname:passwd" in scalar
o LWP::Protocol::collect() will let the HTML::HeadParser look at the
document content as it arrives. This will initialize headers from
elements like <base href="...">, <title>...</title> and <meta
http-equiv="..." ...>.
o Simplified $response->base implementation, because we don't have
to look into the content any more.
o Added -quiet option to lwp-rget
o Typo fixes and some documentation additions.
Thu May 9 1996 Gisle Aas <>
o Release 5b13
o Made URI::URL::strict(0) the default. I got tired of all this
eval { } stuff just to recover. The URI::URL::strict'ness also
determine if calling some standard method that happens to be
illegal for some protocol scheme will croak or just be ignored.
at places where we <> or print.
o Always localize $_ before any 'while(<FILE>) {}'-loops
o Implemented $protocol->collect_once() and simplified several
of the protocol implementations by using it.
o The HTML parser used to get it wrong if you were unlucky about the
breakup of the text. An example of broken behaviour was this:
$html = parse_html "<!-- A comment -";
$html = parse_html "-> and some text.";
o The HTML parser does not ignore whitespace-only text any more.
o HTML::Parse warnings are now optional and turned off by default.
o New start for $html->as_HTML().
o Fixed some typos
Wed Apr 24 1996 Gisle Aas <>
o Release 5b12
o New utility program called 'lwp-rget'.
o $response->base was broken for HTML documents
o New fancy LWP::Debug import() method. Can now turn on debugging with
"use LWP::Debug '+';"
o Trap exceptions (die) from the response callback routine
o The RobotUA now requires an e-mail address of the person responsible
for the robot.
o New $ua->from() method.
o Support for gopher Index-Search (gopher type '7' requests).
Contributed by Harry Bochner <>
o Cleaned up white-space usage in the source.
Wed Apr 3 1996 Gisle Aas <>
o Release 5b11
o Implemented a NNTP protocol module. The library can now fetch and
post news articles.
o More documentation
o Don't look at the URI header for redirects
o New $res->base() method for HTTP::Responses
o Graham Barr's patch to File::Listing to make it more OO internally
o content_type() return value is canonicalized
o $ua->request() does not die on bad URLs any more
o LWP::MediaTypes merge all media.types files that if finds
o FTP request with content to file or callback did not work
o The value of HTTP Host: header is now $url->netloc;
o The URI::URL constructor now accept URLs wrapped up in "<>"
o $url->abs() now has a second optional argument that makes it accept
that relative URLs can have scheme, i.e. treat "http:img.gif" as a
relative URL.
o Added prototypes to the HTTP::Status::is_xxx() functions
o Added prototypes to the MIME:: encoding/decoding functions
o Always return scheme for mailto and news URLs (as_string)
o RobotRules patches from Henry A Rowley.
o More tests
o <SMALL> and <BIG> again
Thu Mar 14 1996 Gisle Aas <>
o Release 5b10
o GET ftp://host/doc was never successful for normal files.
o LWP::Socket: read_until() did not notice EOF condition. I.e. if
a HTTP server closed the connection before any output was generated,
the we continued to read 0 bytes in a busy loop until the alarm()
killed us.
o Added support for Digest Access Authentication. Contributed by
Doug MacEachern <>.
o Makefile.PL: check for MD5 library
o No longer print message content in HTTP::Response::error_as_HTML()
o Access to "file:/path" gave warning when the environment variable
no_proxy was set.
o The http-post test sends a Content-Type header. Some servers hang
if this header is missing.
o HTML::Parse:
- allow <SMALL> and <BIG> tags
- allow empty attribute values
Tue Mar 5 1996 Gisle Aas <>
o Release 5b9
o Started to write on the libwww-perl cookbook (lwpcook.pod)
o The URI::URL module now exports the function url(). This is an
alternative (easy to use) constructor function.
o Expanding relative file URLs starting with "#" did not work.
o Fixed autoloaded DESTROY problem by adding empty DESTROY routine
to URI::URL.
o Does not try generate password for ftp-URLs unless the username is
"anonymous" or "ftp"
o The LWP::Simple user agent proxy settings are initialized from
the proxy environment variables.
o LWP::Protocol::ftp: Use the Net::FTP library to access ftp servers.
Convert directories to HTML on request (Accept: text/html).
o New module HTTP::Negotiate
o New module File::Listing
o HTTP::Date::str2time can parse a few more formats, like the 'ls -l'
format and ISO 8601. The function now also takes an optional second
parameter which specify a default time zone.
o Added prototypes to the HTTP::Date functions.
o The library adds a timestamp to responses ("Client-Date")
o HTTP::Status: Updated to proposed HTTP/1.1
o HTTP::Headers: Updated to proposed HTTP/1.1
o LWP::Protocol::http: Updated to HTTP/1.1 methods
o Took out stringify overloading in HTML::Element.
Mon Feb 26 1996 Gisle Aas <>
o Release 5b8
o Renamed functions using thisStyleOfNames to this_style_of_names.
Provided a script called 'update_from_5b7'
o Renamed the 'request' and 'mirror' scripts to 'lwp-request' and
'lwp-mirror'. The GET, POST, HEAD aliases for 'lwp-request' are
the same.
o Implemented LWP::RobotUA
o Class name for RobotRules did not match the file name
- perl5.002gamma is required (because use vars).
- The leading slash in now part of the path if it is present.
- More documentation
- Use AutoLoader to speed things up.
- New class URI::URL::_login and made telnet, rlogin, tn3270
subclasses from this one.
- URI::URL::wais is better supported.
- URI::URL::news is better supported.
- New URI::URL::mailto methods: user/host
o HTTP::Date::time2str now works correctly with '0' as argument
o HTTP::Message delegates unknown methods to the headers.
o HTTP::Request::uri is an alias for HTTP::Request::url. Can set
the URL to undef.
o Added convenience methods to HTTP::Headers for easy access to
frequently used headers.
o Simplified LWP::Debug
o Use standard AutoLoader for LWP::IO functions.
o Played with the profiler (Devel::DProf) and made some things
go quicker.
o Included the File::CounterFile module. Excluded Mail::Cap module
as it is also part of the MailTools package.
Mon Feb 5 1996 Gisle Aas <>
o Release 5b7
o Perl5.002 is required now
o Rewrite of the URI::URL module (version 4.00)
- escaping/unsafe stuff redone (and removed)
- URI::URL::_generic moved out of
- netloc, path, params, query is now stored internally in escaped form
- new methods for URI::URL::_generic are:
- new methods for URI::URL::http are:
- new methods for URI::URL::file are:
o URI::Escape now semi-compile regular expressions (by evaling an
anonymous sub). Same technique is also used in HTML::Entities.
o HTTP::Date parser rewritten using regular expressions.
o HTTP::Headers->as_string() now croaks if any field values
contain newline.
o HTTP::Status constants use empty prototype.
o Font metrics moved to a new subdirectory (lib/Font/Metrics)
o Don't use the VERSION script any more (even if it was very clever)
o HTML::Entities will now export the names decode_entities() and
o Andreas Koenig's black patch to HTML::Element.
o The HTML::Formatter now knows about <menu> and <dir> tags
o The construct "defined ref($arg)" did not work on perl5.002
because ref now always return something defined.
o LWP::UserAgent sends by default an 'User-Agent' header.
o LWP::Simple sends 'User-Agent' header to servers.
o Updated the LWP::Socket module to use the new interface.
o LWP::Protocol::http sends the new HTTP/1.1 'Host' header.
o LWP::Protocol::file use $url->local_path to get a file to open.
It also inserts a <BASE> tag in directories instead of a redirect.
o MIME::Base64 routines can be called as MIME::Base64::encode() and
MIME::Base64::decode(). Same kind of thing for QuotedPrint.
Mon Nov 6 1995 Gisle Aas <>
o Release 5b6
o Installation should work better for those that still runs
perl4 as 'perl'. The mirror script is not installed by
o LWP::Socket::_getaddress() Numerical IP addresses did not work.
o LWP::Socket::pushback() did not work. This also avoids the bad
pp_select() core dump from perl.
o LWP::IO now also selects on socket exceptions.
o HTML::Parse: Ignore <!DOCTYPE ...> regardless for case. Some
bad insertElement() calls made infinite loops.
o The uri.t test works better for places where /tmp is a sym-link.
Sat Sep 16 1995 Gisle Aas <>
o Release 5b5
o newlocal URI::URL does not put "//localhost" into the URLs any
o The request program: New -o option to reformat the HTML code
New -C option to provide credentials on the command line.
The -b option never worked.
o LWP::Protocol::file now returns redirect for access to directories
where the trailing slash is missing.
Thu Sep 14 1995 Gisle Aas <>
o Speedups and bug fixes in the HTML parser. The parser now
understands some more deprecated tags (like <xmp> and <listing>).
o HTML::Elements are now stringified using perl overloading.
The interface to the traverse() callback has changed.
o Implemented HTML formatters for plain text and Postscript.
o Added lib/Font stuff to support the Postscript formatter.
o Inspired by Tim Bunce, I implemented the HTML::AsSubs module.
Don't know if it is really useful.
o The local/get test does not use /etc/passwd any more.
Thu Sep 7 1995 Gisle Aas <>
o Changed package name to libwww-perl-5xx
o Made LWP::Protocol::ftp actually transfer data
o Implemented methods for LWP::Socket to act as a server:
bind(), listen(), accept(), getsockname(), host(), port()
Wed Sep 6 1995 Gisle Aas <>
o Release 0.04
o Implemented modules to parse HTML.
Mon Sep 4 1995 Gisle Aas <>
o Implemented Mail::Cap which will become part of the MailTools
o Moved Base64 to MIME::Base64. Reimplemented MIME::Base64 by using
[un]pack("u",...) Implemented LWP::MIME::QuotedPrint for
completeness' sake. Routine names has changed as suggested by Tim
o LWP::MediaType reads default types from media.types file.
guessMediaType() now also returns encodings. New function mediaSuffix()
o Pass $url to $ua->getBasicCredentials(). This also fixes security
hole with the old implementation of getBasicCredentials().
o LWP::Protocol::file now sets Content-Encoding headers
o Allow request content to be provided by a callback routine.
o Fix bug that prevented response callback to work. The first parameter
(data) is no longer a reference, because $_[0] is already a reference.
Don't callback unless successful response. Callbacks during redirects
was confusing.
o URI::URL. Remove port from netloc if it is the default port.
Don't use anything, just require.
o HTTP::Message->addContent() does not need a reference parameter.
o LWP::Socket->open() has been renamed top LWP::Socket->connect()
LWP::Socket->close has gone. Implemented new method LWP::Socket->read()
that returns as fast as it has some data to offer. Implemented
o Does not die in LWP::UserAgent->request()
o LWP::Socket now use LWP::IO for low level IO
o Implemented LWP::TkIO as a replacement module for LWP::IO when using Tk.
Thu Aug 17 1995 Gisle Aas <>
o $ua->redirectOK() for checking redirects
o reorganized tests in the "t" directory.
Fri Aug 11 1995 Gisle Aas <>
o Release 0.03
o Included from Martijn Koster
Thu Aug 10 1995 Gisle Aas <>
o New module URI::Escape (URI::URL use this module for default
escaping) that provide the uri_escape() and uri_unescape()
o Setting $url->scheme now changes the class of the object.
o Made $httpurl->user() and $httpurl->password() illegal.
Likewise for other URL schemes.
Wed Aug 9 1995 Gisle Aas <>
o Reorganisation as discussed on <>
LWP::Date --> HTTP::Date
LWP::MIMEheader --> HTTP::Headers
LWP::StatusCode --> HTTP::Status
LWP::Message --> HTTP::Message
LWP::Request --> HTTP::Request
LWP::Response --> HTTP::Response
LWP::MIMEtypes --> LWP::MediaTypes
o HTTP::Date parses ctime format with missing timezone as suggested
by Roy Fielding <>
o HTTP::Status and LWP::MediaTypes exports their functions by default.
o Splitted up the URI::URL module. Schemes are implemented by separate
files that are autoloaded when used. Self test moved to "t/uri.t".
Mon Aug 7 1995 Gisle Aas <>
o Applied patch from Marc Hedlund <>
- Update the @header_order according to the August 3rd draft.
- Added Response Header fields: 'Location', 'Public', 'Retry-After',
'Server', and 'WWW-Authenticate'.
- Moved 'unknown header' handling from &scan to &header. The old
implementation was forcing all unknown header-words to begin with
an uppercase (as it should be), but disallowed other uppercase
- updates the status code messages under the August
3rd HTTP/1.0 draft. '203' became 'Non-Authoritative Information',
'303' became 'See Other', and a new code,
'411 Authorization Refused', was added.
o Can remove multiple headers with single removeHeader() call in MIMEheader.
o Can assign multiple field/value pairs in header() method of MIMEheader.
o A field with multiple values is printed as separate values in
o LWP::Response contain new attributes: previous() and request(). These
attributes are updated by the UserAgent.
o Appended \n to some die statements in Socket so that line numbers are
suppressed in error messages.
o Made UserAgent::clone work for reference members
o Check for redirect loops and multiple authorization failures by
examination of the response chain.
o Use "\015\012" instead of "\r\n" in protocol modules. Some systems
define \r and \n differently.
o request program can now handle documents that needs authorization by
prompting the user for username/password. Added new -S option to print
request/response chain.
Tue Jul 25 1995 Gisle Aas <>
o Release 0.02
o Included URI::URL in the release
Mon Jul 24 1995 Gisle Aas <>
o Incorporated Makemake.PL and VERSION from Andreas Koenig <>
As a result of this the following things have changed:
- programs in "bin" are extracted from .PL-files
- reintroduced "lib"
- "test" has been renamed as "t"
- test programs in "t" has been made Test::Harness compatible
- we now have a MANIFEST file
- no more need fro update_version, make-dist, lwp-install
o Renamed bin/get to bin/request. Links to it are now all upper case.
o Proxy support in bin/request (provided by Martijn Koster)
o UserAgent can now load proxy settings from environment
o LWP::Protocol::ftp is under way but not really finished
Tue Jul 18 1995 Gisle Aas <>
o Implemented LWP::Protocol::gopher
o Implemented LWP::Protocol::mailto
o Fixed proxy typo
Mon Jul 17 1995 Gisle Aas <>
o Made release 0.01
Mon Jul 17 1995 Gisle Aas <>
o Don't loose first line of HTTP/0.9 requests
o LWP::Socket use syswrite() for writing
o Added RC_* documentation to LWP::StatusCode
o LWP::Date now use hash to look up month numbers
o Added -f option to "get"
o Untabify
o Added a "TODO" list
o Fixed various typos
Fri Jul 14 1995 Gisle Aas <>
o Reorganized directories. Moved up. Moved and
into the LWP::Protocol directory. Moved LWP out of the lib directory
and removed lib.
o Implemented the "get" and "mirror" scripts in the "bin" directory.
o Implemented "install-lwp", "update_version" and "make-dist". The library
version number is found in the VERSION file.
o Always adds 1900 to the year in LWP::Date
o In LWP::MIMEheader: Implemented clone(), removeHeader() and scan()
methods. Reimplemented asString. Removed asMIME(). Moved "Good
Practice" into this file, and reimplemented it.
o Moved "header" and "content" into LWP::Message class. This change made
LWP::Request and LWP::Response much simpler. Made clone() method
actually work.
o LWP::Protocol::implementor does not die if it cannot load package.
o Moved UserAgent convenience methods into LWP::Simple. Made LWP::Simple
export LWP::StatusCode symbols and functions.
o Implemented $ua->isProtocolSupported($scheme) method.
o Nicer directory listing in
o Rely on URI::URL 3.00 behaviour for $url->full_path
o Library version number now in You should be able to say
"use LWP 1.0;" if you need at least this version.
o Various cleanups and arranging layout as I like it. Use fooBar-style
(as opposed to foo_bar style) everywhere. This means that as_string()
now is called asString().
o Added more documentation.
Wed Jun 14 1995 Gisle Aas <>
o Removed lot of redundant & before function calls.
o $this --> $self
o &collector passes content as a reference, don't want to copy so much
o parameterlist to collect callback has been rearranged
o Response::addContent gets a reference to the data
o Added some callback documentation to
o Protocol::file now uses the collector
o Introduced LWP::Simple
Sun Jun 11 1995 Martijn Koster <>
o Added basic authentication support
o Added mirroring of single documents
o Change Protocol construction from whacky (constructor returns
subclass) to more normal C++'ish way.
Wed June 7 1995 Martijn Koster <>
o Minor cleanups from printed code inspection
Wed May 24 1995 Martijn Koster <>
o Added redirection resolution
o Added optional autoloading of protocols
Tue May 23 1995 Martijn Koster <>
o Separated socket stuff into separate module
o Added HTTP proxy support
o Made alarm handling optional
o Added a LWP::Message for completeness sake
o Added LWP::MemberMixin to reduce code duplication
o Cosmetic changes to LWP::Date
o Renamed LWP::Error to LWP::StatusCode
o Renamed LWP::MIME to LWP::MIMEtype
o Changed the tests to cope with all this
It's getting there...
Mon May 22 1995 Martijn Koster <>
o Changed the socket reading to use sysread. This will have to go
into a module of its own.
Thu 18 May 1995 Martijn Koster <>
o Mentioned on libwww-perl that I had changed the classes around lots.