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 options. 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 depreciated modules from the distibution; 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 depreciated. 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 RC_REQUEST_RANGE_NOT_SATISFIABLE (416) 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 PROXY_AUTHENTICATION_REQUIRED responses. o HTML::Formatter will always add a blank line for
. 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 "http://www.perl.com" 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 , and 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 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 ÿ HTML::Entities::(en|de)code only modify their argument in void context. o Fixed formatter bug with 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 "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 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 argument. 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 WWW::RobotRules::InCore. 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 $p->parse(undef). 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 envirionment 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 o HTTP::Headers and HTTP::Status updated according to draft-ietf-http-v11-spec-06 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 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 section of a HTML document. o HTML::Element had problem with presenting things like . o HTML::Entities: Included additional ISO-8859/1 entities listed in RFC1866. 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 context o LWP::Protocol::collect() will let the HTML::HeadParser look at the document content as it arrives. This will initialize headers from elements like , ... and . 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. o Ensure correct $INPUT_RECORD_SEPARATOR and $OUTPUT_RECORD_SEPARATOR at places where we <> or print. o Always localize $_ before any 'while() {}'-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 " 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 letters. - 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 MIMEheader::as_string(). 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 autorization 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 LWP.pm up. Moved file.pm and http.pm into the LWP::Protocol direcotory. 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 LWP::Protocol::file.pm o Rely on URI::URL 3.00 behaviour for $url->full_path o Library version number now in LWP.pm. 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 stype) everywhere. This means that as_string() now is called asString(). o Added more documentation. Wed Jun 14 1995 Gisle Aas o Removed lot of rendundant & 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 UserAgent.pm 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 URL.pm (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.