New in 1.28:

* Do not truncate random numbers to 15 bits.
* Check clientident length (Ivan Popov).
* Fix gcc4 warnings.

New in 1.27:

* Fixes for LWP-2.0
* Reduced size of the medium packets to 1500.
* Explicitly clear the EchoTimestamp when we receive an out-of-order
  SFTP data packet to avoid sending a stale timestamp value.
* Make sure we retransmit at least one packet once we hit EOF so that we
  can continue to make progress.

New in 1.26:

* SFTP was agressively dropping incoming packets that didn't come back
  from the correct IP address. However, if there is 6-to-4 translation,
  a request to <ipv4> comes back from [::ffff:<ipv4>]. This could also
  help somewhat on multihomed hosts.

New in 1.25:

* Avoid allocating an unusable local connection identifier.
* Don't bump last referenced times while searching for a usable
  connection identifier.

New in 1.24:

* Set the UDP sockets to non-blocking. A bad UDP checksum could cause
  recvfrom/recvmsg to block.
* Try to bind listen sockets to the same portnumber.
* The MSG_CONFIRM flag (see 1.20) code was commented out because of a
  compatibility problem with older Linux kernels (2.2.x).
  Now it is reenabled, however as soon as sendto fails with EINVAL we
  revert back to the old behaviour.

New in 1.23:

* Don't assume RPC2_EAI_ errorcodes are identical to the EAI_ errors.
* Fix crash in the mrpc_sendpacketsreliably tracing code when the first
  connection entry does not have an active request buffer allocated.
* Removed RPC2_EAI_NODATA and RPC2_EAI_ADDRFAMILY (RFC3493)

New in 1.22:

* Fixed some small memory leaks in error conditions.
* Keep the size of the host lookup table smaller.

New in 1.21:

* IPv6 support.
* Extra boundary checking when unpacking MultiRPC reply packets.
* Updated for automake 1.7, autoconf 2.52, libtool 1.5.2.

New in 1.20:

* Add /usr/include/rpc2/rpc2_addrinfo.h to the devel packages.
* Set 'ackme' flag on first packet sent during an SFTP retransmission.
  This packet has a higher chance on survival and can confirm already
  received packets and advance the window.
* When responding to a received packet, set the MSG_CONFIRM flag (if it
  is available). On Linux systems this reconfirm that the arp cache
  entry for the destination is valid and as a result avoids the latency
  of the extra(neous) arp request/response before sending the packet.
* Fix bad byte-swap introduced in 1.14 that caused bandwidth/rtt problems.

New in 1.19:

* Cygwin compile fixes (Phil Nelson)
* Replaced some paranoid assertions that triggered when a corrupt multirpc
  packet was received with simply dropping the bogus packets. (Andrew
  Griffiths)

New in 1.18:

* Removed pool allocator for MultiRPC contexts. It had a hardcoded size of
  only 8 contexts and would die on an assertion whenever it got exhausted.
* Merged IPv6 support from Rod Van Meter. This only really deals with IPv6
  compatible addressing and does not handle the fact that IPv6 doesn't do
  ip-level packet fragmentation for us.
* We still accept and return the old HostIdent structures for applications
  that haven't been 'ported' to the new IPv6 interface. The IPv6 ready
  application has to call RPC2_Init with the RPC2_Options.Flags set to
  RPC2_OPTION_IPV6 before we even bind a listening socket to an IPv6 address.
  This means that we are drop-in compatible for existing applications.
* Removed sftp socket and socket listener/timeout threads. Essentially we are
  now always running 'masqueraded'. I believe it will work fine even for
  existing clients that are not configured to use masquerading as long as
  their rpc2-library is capable of receiving sftp packets on the rpc2 port
  (i.e. >= rpc2-1.9).

New in 1.17:

* Small files sent with MultiRPC only arrived at the first server
  in the mgrp. Resolution fixes things for normal store operations
  but it broke repair in some cases.
* Random number generator was initialized incorrectly (Ivan Popov).

New in 1.16:

* Fix for missing lseek that caused truncated backup files.
* Correctly use off_t for lseek and friends. Defining _LARGEFILE_SOURCE
  and _FILE_OFFSET_BITS=64 to enable large file support. Now if only the
  rpc2/sftp API was compliant we would be done. However anything that
  is using FILEBYNAME or FILEBYINODE or specifies a non-zero SeekOffset
  still won't work right on >2GB files. However FILEBYFD with zero
  SeekOffset should work just fine.

New in 1.15:

* Remove noisy debugging printf.
* Generate correct packing/unpacking code for RPC2_BoundedBS structures with
  rp2gen.
* Fixed memory corruption when packing an RPC2_String with the MultiRPC
  packing routines.
* Solved slow writes and disconnections caused by excessive packet drops when
  a masquerading client is sending SFTP packets on a fast network to a
  (slower) server.

New in 1.14:

* Fixed readline includes.
* Fixed gcc-3.2 compilation problems.
* Don't recursively generate code for included files in .rpc2 files.
* Fixed bison/yacc grammar problems.
* Experimental code to get correct timeouts on asynchronous links (ADSL).
* Always 'byteswap' packets.

New in 1.13:

* Fixed crash when an expired connection receives a NAK.
* Increased lower bound on retransmission time to 300ms.
* Removed Linux specific optimization in processing time calculation which
  made RPC2 clients assume a server can respond faster than it actually does.
* Fixed the very infrequent SFTP_SendResponse crash again, hopefully for real
  this time.
* A non-masqueraded rpc2 client wouldn't send out it's SFTP packets through
  the rpc2 socket when talkin to a masqueraded rpc2-server. This broke
  backfetches through a firewall.
* Added delayed acks, when an RPC2 operation on the server is taking more than
  200ms, an unsolicited RPC2_BUSY is sent back to the client to avoid
  unnecessary retransmissions of the request.
* Applied rp2gen patch from Jeff Bachtel.

New in 1.12:

* Fixed gcc-3.0 compiler warnings.
* Added support for libreadline v4.2.
* Stricter prototyping for callback functions.
* Fixed the very infrequent SFTP_SendResponse crash.

New in 1.11:

* Applied MacOS X (Darwin) patches from Timothy Wood.
* Keeping track of current fd offset in sftp to allow non-multirpc transfers
  from/to a non-seekable fd (eg. stdout).

New in 1.10:

* Fixed NULL pointer dereference when rpc2 packet tracing is enabled.

New in 1.9:

* Corrected errors in libfail's delay filter code.
* Added latency delay to libfail.
* Merged debian packaging stuff.
* Using same version number for all libraries to allow multiple versions
  of the libraries to coexist.
* Allow for sending and receiving SFTP packets through the RPC2 socket when
  the user has not specified a specific SFTP port.
* Fixed connection and packet leaks when unmarshalling a request fails.
* Changed RPC2_setip to accept struct in_addr instead of hostname.

New in 1.8:

* Socketlistener got stuck on clocktick wakeups.

New in 1.7:

* Don't let socketlistener select on errors when it is unwilling to handle
  the case when there is an error on the filedescriptors.

New in 1.6:

* Fixed the binding to specific addresses by using RPC2_setip before
  calling RPC2_Init.
* Cross compilation stuff for the Itsy (SA-1100). (Jason Flinn)
* Corrected byteswapping of incoming/outgoing packets on Itsy's. (Jason Flinn)
* Linking against the updated liblwp in lwp-1.5.
* Limit the size of piggybacked sftp data to the requested sftp_maxpacketsize
  to avoid ip-layer fragmentation.
* Fixed the RPC2_NOBINDING bug which showed up in clog.

New in 1.5:

* Fixed a bug where we always decoded packets when receiving, even when
  the sessionkey was not yet negotiated.

New in 1.4:

* Limited support to do sftp transfers from the stdin/stdout.
* Added flag enable the connection reaper on a per program basis, too many
  rpc2 applications broke.

New in 1.3:

* Only reaping dead server connections.

New in 1.2:

* Avoid iopen dependency on systems that don't have that syscall.
* Reaping dead connections.

New in 1.1:

* Fixed problems with sftp transfers when the fd is shared.
* Avoiding a double free of a packet buffer on diskerrors.
* Added RPC2_SetTimeout so that applications can control the per-RPC timeout
  on a connection. (Dushayanth Narayanan)

New in 1.0:

* Extracted RPC2 out of the main Coda source tree.
* Using an automake/autoconf/libtool build environment.
* Creating shared libraries.
