0.80 2007-04-19
+ DAS support for .EU & .BE : quick lookup of domain availability ; see eg/eurid_das.pl for an example (same interface as domain_check)
+ Whois support (RFC3912) for thick registries (full) and thin registries (only registry part) ; see eg/whois.pl for an example (same interface as domain_info) ;
   parse provided for .COM .NET .ORG .BIZ .INFO .AERO .EU
+ .LU support : all extensions (except startTLS & IDNs) ; we do not enforce policy of only one IPv4 and one IPv6 at most for hosts
+ Transport/Socket : new parameter ssl_version (suggestion from Rony Meyer)
+ Transport/Socket {RRP,EPP}/Protocol/Connection : allow changing password at connection (from initial patch by Rony Meyer)
+ DRD/BIZ (provided by Rony Meyer)
= DateTime::Format::ISO8601 : required version is now 0.06 (0.0403 is also ok, but 0.05 is absolutely not ok, hence we upgraded the required version)
= .AT updates (contributed by Michael Braunoeder from NIC.AT)
= Data/Contact : new as_string() method for quick display
= Data/ContactSet : minor changes, rem as alias to del, add/del/set returns the object itself, as new() (with explicit return)
= Protocol/EPP/Core/{Domain,Host} VeriSign/PollRGP: make sure to lowercase domain names given back by registry (from bugreport by Rony Meyer)
      We advise passing to Net::DRI only domain names and hostnames in lowercase.
- DRD : bugfix in contact_info for cached values (bugfix from Rony Meyer)
- Protocol/EPP/Core/Host : bugfix in parsing IP addresses (bugreport from Rony Meyer)

0.70 2007-03-12
+ .COOP full support : all operations with EPP, see included example in eg/coop_epp.pl and t/619coop_epp.t (with help from registry staff member Dan Maharry)
+ .AT full support : all operations with EPP, contributed by Michael Braunoeder from NIC.AT
+ .EU (DRD/EURid) : added Bulgaria and Romania
+ Transport/Socket : a new trid key whose value is a code ref can be provided to generate transaction ids (from Rony Meyer idea)
+ Transport/Socket : we pass MultiHomed => 1 when opening socket (tcp and tls) in order to try all IPs (suggested by Michael Braunoeder)
+ Transport/Socket : for TLS, a callback can be specified to verify server credentials
+ DRD/INFO DRD/ORG : contributed by Rony Meyer
+ Contact : int2loc() and loc2int() methods to create localized version from internationalized, or the opposite
= .MOBI : maintainer url is not mandatory (bugfix from Rony Meyer)
= Protocol/EPP/Extensions/SecDNS : during domain create, no secdns data is not a fatal error anymore
= Protocol/EPP/Extensions/MOBI/Domain : maintainer_url is not mandatory (bugfix from Rony Meyer)
= Protocol/EPP/Message : for poll replies, id of _current_ message is available, like count (see source)
= DRD/ICANN : operations (except domain creation) on one-letter and two-letter domain names are now possible (not denied) ;
              this should really be handled on a per-registry basis (from suggestion by Rony Meyer)
= Protocol/EPP/Core/Domain : for some registries (like .AT) we send all nameservers' IP, even if nameserver is in domain
= Protocol/EPP/Core/Status : delete/renew/update operations are allowed even if some pending status is set
 		(per draft-hollenbeck-epp-rfc3731bis-05.txt draft-hollenbeck-epp-rfc3732bis-04.txt draft-hollenbeck-epp-rfc3733bis-06.txt)
- Protocol/EPP/Core/RegistryMessage : correctly handle case of no message at all, or message without extra data (bugreport by Elias Sidenbladh) ; see end of t/601vnds_epp.t
- .SE (Data/Contact/SE DRD/SE) : bugfixes by Elias Sidenbladh
- Protocol/EPP/Core/Contact : minor bugfix in contact creation (parse_disclose) from Elias Sidenbladh
- Transport/Socket : ssl_verify was not taken into account, bugfix by Rony Meyer
- Protocol/EPP/Extensions/{DNSBE,Eurid}/Domain : add op="request" for transferq commands (bugreport and fix from Cedric Dubois)
- Transport : use true loops in send() and receive() (bugreport from Elias Sidenbladh)

0.40 2006-09-22
+ .BE full support : all operations with EPP except agent update & info (with help from Roger Heykoop)
+ EPP : better support for <poll> results, we parse all replies for which we already have a parse function registered
+ EPP/Extensions : RGP Notification & Low Balance Notification for VeriSign (poll messages)
+ DRD : new method message_count() to retrieve the number of messages available
+ Transport/Socket : added ping(), with autoreconnection if wanted and necessary
+ EPP & RRP : for all actions returning information, a key action is created whose value is the name of the action that has triggered this reply
            (see 600vnds_rrp.t 601vnds_epp.t 605vnds_epp_nsgroup.t 613cat_epp.t)
= EPP/Core/Contact : correctly handle case of contact:id being chosen by registry during contact:create (see 601vnds_epp.t)
= EPP : uses <hello> instead of <poll> as keepalive message (explicitely allowed in draft-hollenbeck-epp-rfc3730bis-02.txt)
= EPP/Extensions/CAT/DefensiveRegistration : better handling of XML namespace
= Transport : creation time is available through time_creation() like time_open() and time_used()
- Transport : correct month & minutes in logging (bugfix by Rony Meyer & Christian Kratzer)
- DRD/VNDS : verify_domain_transfer does not need a full domain_info with hosts=all, none is enough (bugfix by Rony Meyer)
- DRD : correct retrieval of result status from cache (bug report by Rony Meyer)
- Protocol/EPP/Connection : take into account message language if given by registry (bug report by Rony Meyer)
- Protocol/EPP/Extensions/VeriSign/WhoisInfo : handle default value for indirect domain_info calls (bug report by Rony Meyer)
- Protocol/EPP/Extensions/GracePeriod : correctly takes into account VeriSign breaking its own RFC (bug report by Rony Meyer)

0.30 2006-06-15
+ .FR full support : all operations by email (form version 2.0.0 for both organizations & individuals)
+ .COM .NET full support in EPP with multiple VeriSign extensions:
           Sync (see t/610vnds_epp_sync.t)
           IDN Language (see t/611vnds_epp_idnlang.t)
           Whois Info (see t/612vnds_epp_whoisinfo.t)
           NameStore from original patch by Rony Meyer (see t/616vnds_epp_namestore.t)
     Use Protocol/EPP/Extensions/VeriSign as protocol class to have needed extensions loaded automatically
+ .MOBI full support : Domain extension for maintainer url (see t/615mobi_epp.t)
+ .US full support : Contact extension for NEXUS handling (see t/609vnds_epp_us.t)
+ .AERO full support : Domain & Contact extensions for ENS (see t/614aero_epp.t)
+ .CAT full support : Domain & Contact extensions, and all operations on Defensive Registrations (see t/613cat_epp.t and eg/cat_epp.pl)
             thanks to Klaus Malorny & the .CAT registry
+ Infrastructure ENUM.AT (contributed by Michael Braunoeder from ENUM.AT)
+ Protocol/EPP/Extensions/SecDNS updated to RFC4310
+ .PL updated to latest draft
+ new_profile / new_current_profile : additional API with only 3 parameters (profile name + 2 ref arrays for parameters, both can be empty)
                   using registry default transport & protocol classes (see transport_protocol_default)
+ ResultStatus->trid() can also be called in list context to get back for EPP the svTRID along with the clTRID (suggestion by Elias Sidenbladh)
= DRD : for transfers, like for creations, the duration is in the duration attribute not period
= Protocol/EPP/Extensions/EURid/Domain : multiple nsgroup can be given (patch from Christian Kratzer)
= DRD/ICANN : taking care of some lifted restrictions for newest gTLDs (starting with .TRAVEL)
= Protocol/EPP/Core/Domain : for domain_info, hosts=all is the default, but you can pass another value (sub, del or none) in the hosts attribute (bugfix from Rony Meyer)
= Protocol/EPP/Extensions/E164 : small update to work with IENUMAT relaxed rules from RFC4114
= Util : update in list of country codes, add JE GG IM per http://www.iso.org/iso/en/prods-services/iso3166ma/03updates-on-iso-3166/nlv11-div.html
= Transport/Socket : you can optionnally set the local hostname when connecting (suggestion from Brian Drysdale)
= Protocol/Gandi : currently deactivated since change of website
- Protocol/EPP/Core/Domain : domain:pw may be empty after domain:info for an object we do not own (bugfix from Rony Meyer)
- Protocol/EPP : better handling of registries various XML namespaces

0.22 2006-05-12
+ EPP Poll from prototype by Elias Sidenbladh (Protocol/EPP/Core/RegistryMessage) : new methods message_retrieve() (=poll request)
  message_delete() (=poll ack) and message_waiting() in Net::DRI
  Please see examples at the end of t/601vnds_epp.t on how to retrieve info on a message, and info on all messages (count & first id).
+ Preliminary support for .FR/.RE by email : only domain creation for now, without parsing of registry emails coming back
  (Net::DRI::Data::Contact::AFNIC Net::DRI::Protocol::AFNIC::Email Net::DRI::Protocol::AFNIC::Email::Message
  Net::DRI::Protocol::AFNIC::Email::Domain Net::DRI::Transport::SMTP)
  For all asynchronous operations, the result status is command successful but pending.
+ In all result status, new method trid() that stores the (local/client) transaction identifier of the operation
  that generated this result status, and new method is_pending() to know if the operation has been done
  or is pending review, which will be the case for all asynchronous registries (Protocol/ResultStatus)
= EPP + RRP : we use the nameserver list provided in domain operations only if it is not empty
= Data/Contact/EURid : lower limits for name/org length than in EPP
- Transport/Socket : correctly shut down alarms in end() (thanks to Sten Spans)
- Protocol/EPP/Extensions/EURid/Domain : bugfix for transfer/transferq/trade requests when specifying nameservers,
                                         from bug report by Andreas Wittkemper
- Protocol/EPP/Connection : bugfix when there is no svcExtension (found by Michael Braunoeder)
- Protocol/EPP/Core/Contact : correctly handle all cases of empty fax (and tel for that matter),
                              bug report from Brian

0.21 2006-03-04

+ Support for .SE (based on EPP) thanks to Elias Sidenbladh and the NIC SE team
+ Support for .PL (based on EPP) except the Future object (interoperability with registry not tested)
+ Data/Contact,Protocol/EPP/Core/Contact : we now handle both internationalized and localized data,
  for registries handling both. Changes are backwards compatible with previous version, but make
  sure to test on your systems before installing in production.
+ Protocol/ResultStatus : new print_full() method to have all details from registry
+ Data/Hosts : new set() method
+ Transport : we keep time of last use (idea from Brian), with method time_used()
= Transport/Socket : if sending fails, and retry > 1, we try to reconnect ; this is a crude way to handle registry timeouts
= local_object() enables you to create any kind of local objects, including hosts, contacts, contactsets,
  changes, etc... without having to load and directly call Net::DRI::Data::Hosts,Contact,ContactSet,Changes
  Please see the modified t/606eurid_epp.t for examples
= better error debugging in new_profile() when loading Transport and Protocol classes
= Transport/Socket : do not use IO::Socket::SSL::context_init anymore, it is marked as deprecated in module
- Protocol/EPP/Message : correct creation of <hello/> commands (bug found by Elias Sidenbladh)
- Protocol/{EPP,RRP}/Message : correct encoding of outgoing messages with Encode::encode()
- eg/eurid_epp.pl : the filehandle used for logging must be closed after $dri->end() not before

0.20 2005-12-02
+ EURid/Sunrise : we automatically reconnect after each apply command (successful or not), when needed,
                  since the connection is dropped by registry (bug reported by Lucas Vossberg)
+ Transport/Socket : a client certificate is no more mandatory, the default verification level is lowered,
                     better error message for SSL problems (suggested by Peter van Dijk)
- Protocol/EPP/Extensions/EURid/Sunrise : various bugfixes for documentaryevidence=thirdparty (found by Yves Cartenstadt)
= EURid : the sample provided (eurid_epp.pl) dumps all exchanges to a file

0.19 2005-11-14
+ Updates for conformity with latest EURid specifications :
   # extra information in result of apply during Sunrise (reference, code, crDate)
   # new action apply_info during Sunrise to get back information on previously submitted applications
   (reference, code, crDate, application_status, contact, ns, docsReceivedDate, adr)
+ Protocol/Resultatus : extra information from registry (error messages) is available with info()
+ EPP/Extensions/EURid : we parse eurid:msg for extra information, especially useful if errors
- EPP/Extensions/EURid/Sunrise : invalid call for nsgroup (bug found & fixed by Jørgen Thomsen)
= Data/Hosts has 2 significative changes : you can use get_details with a name and
  you can add a nameserver already in the list, in which case the new IP addresses are added with existing
  ones (without duplicates)

0.18 2005-11-06

+ Many improvements for .EU support : no need to specify empty useless values needed for EPP
  but not used by EURid (domain/contact auth), no status handling for domains, example
  for test systems (eg/eurid_epp.pl)
- EPP/Message : use bytes is necessary for correct length calculation
= Transport : if a server closes the connection on us (at protocol level, not socket one),
  we note the fact and will try to reconnect later if needed
= RRP : take into account PENDINGRESTORE PENDINGDELETE PENDINGTRANSFER status

0.17 2005-10-24

+ Full support for EURid (.EU) with Net::DRI::DRD::EURid, Net::DRI::Data::Contact::EURid,
  Net::DRI::Protocol::EPP::Extensions::EURid and Net::DRI::Protocol::EPP::Extensions::EURid::*
+ Query list of object types managed by registry (ex: domain, contact, etc...) with $dri->has_object()
+ A copy of all exchanges can be sent to the filehandle of your choice
  (see log_fh in Net::DRI::Transport)
- BUGFIX in handling of dates in EPP : we switch to UTC before printing
- BUGFIX in Net::DRI::Protocol::EPP::Connection : data may come in multiple chunks
- BUGFIX in Net::DRI::Protocol::EPP::Core::Domain : handling of hosts as attributes
= Net::DRI::Data::Hosts::add() returns the object itself (useful for chains)
= Net::DRI::Data::Contact::validate() verifies the country code against the list in Util
= No more hardcoding of various xml namespaces names in various modules, the list is
  set during protocol object creation.
= domain_create() : a duration is not mandatory

0.16 2005-10-04

+ Three new EPP extensions : SecDNS (for DNSSEC), E164 (for ENUM) and NSgroup (for .BE & .EU)
+ New registry : .WS
+ New API in addition to the existing one, with Net::DRI::Data::RegistryObject : needed for extensions
  that handle new types of objects, such as NSgroup
+ Take into account new error codes for AFNIC Web Services (technical note RP-20050913/DT-01)
+ Add a name() and loid() accessor in Net::DRI::Data::Hosts
- In EPP, we load host commands only if hosts are handled as an object by the registry
- For domain_info(), host_info() and contact_info() we use data from cache, if we really
  did an *_info() before.
- Various bugfixes in DRD and RRP protocol.
= Rework of Net:DRI::Protocol::ResultStatus & associated classes to handle more cases
  by directly passing the EPP code
= Simpler in-memory XML nodes representation in Net::DRI::Protocol::EPP::Message
= Rework of Net::DRI::Protocol::{EPP,RRP}::Connection & Net::DRI::Transport::Socket (send_login)
  to die with a Net::DRI::Protocol::ResultStatus in case of problems
  + Changes in Net::DRI::Registry::new{,_current}_profile to return a ResultStatus object
= Change in EPP domain_update as RFC3731 is ambigous (text & XML schema do not agree)
  With this change, we now conform to the XML schema, which seems normative per
  provreg mailing-list consensus. This will break with any server implementing the text part

0.15 2005-07-20

+ New protocol: EPP, with Grace Period extension (other can easily be added)
+ Better way to create statuses (no() function in StatusList), see README for domain_update_status_add
  and statuses name are not put in uppercase automatically
+ Handling of contacts : modules Contact & ContactSet + new functions in DRD (contact_*)
+ New functions: domain_check_multi, host_check_multi (if registry supports, check multiple objects at once)
- BUGFIX in Net::DRI::Util::is_ipv6
- BUGFIX : better checks of references with UNIVERSAL::isa instead of pure ref()
= Rework of Net::DRI::Transport::Socket & associated connection classes

0.12 2005-05-31

+ New ``registries'': 
   1) AFNIC (through web services, domain check only)
   2) Gandi (through web site, domain nameservers update only)
+ New transport: SOAP (HTTP/HTTPS only)
+ New transport: Web (Web Scraping)
+ New protocol: Gandi Web Site (domain update only)
+ New protocol: AFNIC web services (domain check only)
+ New way of using profiles in Net::DRI::Registry : an auto switch functionnality is provided
    so that the calling app does not have to call target() explicitely over and over
    (see README for details)
- BUGFIX for RRP : order of elements is now exactly as specified by standard
- BUGFIX for Net::DRI::DRD in host_is_mine: parameters (warning not triggered in some perls)
- BUGFIX for Net::DRI::DRD in err_invalid_domain_name/err_invalid_host_name: correct message 
                                               & really raise an exception if a problem is found !
- BUGFIX for Net::DRI::DRD in check_name: correct count of dots
+ Net::DRI::Transport::Socket : require on the protocol connection class to make sure it works
- DOCFIX for Net::DRI::Data::Hosts (a ] was missing for the ref array of IPs)
+ New tests for Net::DRI::Protocol::RRP::Connection, Net::DRI::Protocol::AFNIC::WS::Message,
   Net::DRI::Protocol::Gandi::Web::Message, Net::DRI::Protocol::Gandi::Web::Connection
- BUGFIX : no more warnings in tests, we use the TODO block of Test::More

0.11 2005-04-25

+ POD NAME section for each file with a short description
- BUGFIX for VERSION (. missing)
+ New files: Changes, TODO
= No changes in code

0.10 2005-04-24

= First version on CPAN