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

 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.



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

 o  Developer release 5.18_04

 o  Makefile.PL fix based on report from Pon Hwa Lin <koala@fragment.com>

 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 <aas@sn.no>

 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 <fanf@demon.net>.

 o  Removed depreciated modules from the distibution; HTML::Parse,
    LWP::Socket, LWP::SecureSocket, LWP::IO, LWP::TkIO.



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

 o  Release 5.18

 o  HTTP authorization patches from Tony Finch <fanf@demon.net>.
    Allows "user:pass@" in HTTP URLs.

 o  HTML::Parser patch by Brian McCauley <B.A.McCauley@bham.ac.uk>.
    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 <aas@sn.no>

 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 <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 <aas@sn.no>

 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 <aas@sn.no>

 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
    <janl@math.uio.no>.

 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
    <Steve_Kilbane@cegelecproj.co.uk>.



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

 o  Release 5.14

 o  HTML::Formatter patches from Andreas Gustafsson <gson@araneus.fi>.
    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 <aas@sn.no>

 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 <bcoleman@mindspring.com>

 o  OpenVMS patch for Font:AFM by Brad Hughes <brad@tmc.naecker.com>



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

 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 <shea@gtsdesign.com> that makes the
    tests work even if perl is not called "perl"

 o  HTTP::Date handles 12:00PM correctly now. Patch from
    William York <william@mathworks.com>

 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 <aas@sn.no>

 o  Release 5.11

 o  Perl version 5.004 is now required for libwww-perl.

 o  Win32 patches from Gurusamy Sarathy <gsar@engin.umich.edu>.
    Now passes all tests on that platform.

 o  HTTPS support contributed by Josh Kronengold <mneme@mcny.com>

 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 <aas@sn.no>

 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 <aas@sn.no>

 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 <jamesm@skate.org>

 o  Created Bundle::LWP



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

 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 <aas@sn.no>

 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 <aas@sn.no>

 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 <aas@sn.no>

 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 <william@mathworks.com>. 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 <aas@sn.no>

 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 <jstern@world.northgrum.com>

 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 <aas@sn.no>

 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 <janl@ifi.uio.no>

 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 <aas@sn.no>

 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 <aas@sn.no>

 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
    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 <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 <aas@sn.no>

 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
    bar="bar">.

 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 <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 <aas@sn.no>

 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(<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 <aas@sn.no>

 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 reponsible
    for the robot.

 o  New $ua->from() method.

 o  Support for gopher Index-Search (gopher type '7' requests).
    Contributed by Harry Bochner <bochner@das.harvard.edu>

 o  Cleaned up white-space usage in the source.



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

 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 <aas@sn.no>

 o  Release 5b10

 o  GET ftp://host/doc was never successful for normal files.

 o  LWP::Socket: read_until() did not notice EOF condidtion.  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 <dougm@osf.org>.

 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 envirionment 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 <aas@sn.no>

 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 intialized 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 <aas@sn.no>

 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

 o  URI::URL
      - 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 <aas@sn.no>

 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 URL.pm
      - netloc, path, params, query is now stored internally in escaped form
      - new methods for URI::URL::_generic are:
           epath
           eparams
           equery
	   path_components
           absolute_path
      - new methods for URI::URL::http are:
           keywords
           query_form
      - new methods for URI::URL::file are:
           newlocal
           local_path
           unix_path
           dos_path
           mac_path
           vms_path

 o  URI::Escape now semi-compile regular expressions (by evaling an
    anonymous sub).  Same techinque 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
    encode_entities().

 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
    becase 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 Socket.pm 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 <aas@oslonett.no>

 o  Release 5b6

 o  Installation should work better for those that still runs
    perl4 as 'perl'.  The mirror script is not installed by
    default.

 o  LWP::Socket::_getaddress() Numerical IP adresses 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 <aas@oslonett.no>

 o  Release 5b5

 o  newlocal URI::URL does not put "//localhost" into the URLs any
    longer.

 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 <aas@oslonett.no>

 o  Speedups and bug fixes in the HTML parser.  The parser now
    understands some more depreciated tags (like <xmp> and <listing>).

 o  HTML::Elements are now stingified 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 <aas@oslonett.no>

 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 <aas@oslonett.no>

 o  Release 0.04

 o  Implemented modules to parse HTML.



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

 o  Implemented Mail::Cap which will become part of the MailTools
    package.

 o  Moved Base64 to MIME::Base64.  Reimplemented MIME::Base64 by using
    [un]pack("u",...)   Implemented LWP::MIME::QuotedPrint for
    completness sake.  Routine names has changed as suggested by Tim
    Bunce.

 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
    LWP::Socket->pushback().

 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 <aas@oslonett.no>

 o  $ua->redirectOK() for checking redirects

 o  reorganized tests in the "t" directory.



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

 o  Release 0.03

 o  Included RobotRules.pm from Martijn Koster



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

 o  New module URI::Escape (URI::URL use this module for default
    escaping) that provide the uri_escape() and uri_unescape()
    functions.

 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 <aas@oslonett.no>

 o  Reorganisation as discussed on <libwww-perl@ics.uci.edu>
       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 <fielding@beach.w3.org>

 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 <aas@oslonett.no>

 o  Applied patch from Marc Hedlund <hedlund@best.com>
       - 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 <aas@oslonett.no>

 o  Release 0.02

 o  Included URI::URL in the release



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

 o  Incorporated Makemake.PL and VERSION from Andreas Koenig <koenig@mind.de>
    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 <aas@oslonett.no>

 o  Implemented LWP::Protocol::gopher

 o  Implemented LWP::Protocol::mailto

 o  Fixed proxy typo



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

 o  Made release 0.01



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

 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 <aas@oslonett.no>

 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 <aas@oslonett.no>

 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 <m.koster@nexor.co.uk>

 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 <m.koster@nexor.co.uk>

 o  Minor cleanups from printed code inspection



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

 o  Added redirection resolution

 o  Added optional autoloading of protocols



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

 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 <m.koster@nexor.co.uk>

 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 <m.koster@nexor.co.uk>

 o  Mentioned on libwww-perl that I had changed the classes around lots.
