1New in 2.14:
2
3* Remove unnecessary cast when packing RPC2_EncryptionKey.
4* Fix for packing of struct CallCountEntry.
5
6New in 2.13:
7
8* Fixed incorrect packing of an array in an RPC reponse.
9* Check the unpack buffer is large enough for a trailing \0 after strings.
10* Limit max boundedbs allocation on the server to RPC2_MAXPACKETSIZE.
11
12New in 2.12:
13
14* Vastly improved readability of the stub generated code with faster
15  compilation and smaller object sizes.
16  - Add pack/unpack functions for basic types.    (Si Lao)
17  - Generating pack/unpack functions for structs. (Si Lao)
18  - Generating pack/unpack functions for request and response packets.
19* Fixed unbounded memory allocation when sending array of structs.
20* Removed dead code, fixed compile warnings.
21
22New in 2.11:
23
24* Call abort() when AES or RNG tests fail.
25* Fixes for build and test programs.
26* Removed some unused and unreachable code.
27* Use constant time comparison for received packet integrity check.
28* Clang build fix. (Martin Petrov)
29* Lua-5.2 fix. (Tom Callaway)
30
31New in 2.10:
32
33* AES-CCM-16 was incorrectly named AES-CCM-12.
34* AES-CCM checksum validation always failed when the final block was partial.
35
36New in 2.9:
37
38* Send busy responses on new but not yet enabled connections.
39* Make sure we wake up threads waiting for binding to complete.
40* Clean up mrpc2_SendReliably, it sometimes exited too early and ignored the
41  overall timebomb timer.
42* Precompute retransmission intervals.
43
44New in 2.8:
45
46* Simplified retransmission interval calculation.
47* Do not wait for the full RPC2 timeout when receiving a busy response.
48* Unify rpc2 & sftp retransmission counters.
49* Fixed client-to-server sftp transfer failures.
50* PBKDF check would trigger unnecessary warnings depending on clock
51  granularity.
52
53New in 2.7:
54
55* Build improvements, use pkgconfig.
56* Don't add rpc2's 100ms delayed ack delay in SFTP roundtrip estimate.
57* Reduce the number of packets SFTP drops when we receive duplicates.
58* Retransmit more worried packets (which 'should' have been acked).
59* Only retransmit on timeouts, have the active side of the connection be
60  mostly timeout driven to avoid duplicate transfers.
61
62New in 2.6.1:
63
64* Error values were not correctly translated.
65
66New in 2.6:
67
68* Fail when configure cannot find a usable LEX or YACC binary.
69* Fix RetryInterval calculation, we were waiting twice as long as specified.
70* Make sure RPC2/Coda defined error values do not collide with system errnos.
71
72New in 2.5:
73
74* Avoid rp2gen segfault on 64-bit systems. (Vasil Dimov)
75* Forgotten includes broke the FreeBSD build. (Sean Caron)
76* Fix RPM build dependencies. (Adam Goode/Jerry Amundson)
77* Add dependency on pkg-config 0.18 or higher (Davor Ocelic)
78* Use non-blocking /dev/urandom device to initialize random number generator.
79* We were not correctly handling returned data values in our Lua bindings.
80* Fix compiler warnings in stub-generated code.
81* Correctly handle negative seek offset in SFTP so that it disables seeking by
82  the rpc2 layers.
83* Fix data alignment for incoming RPC2 connections on 64-bit.
84* Set default binding policy to only allow secure rpc2 connections.
85
86New in 2.4:
87
88* Instead of queueing incoming INIT1 requests when nobody is ready to accept
89  the new connection, respond with a busy to make the peer wait and try again.
90
91  This is useful when RPC2 is already initialized, but the server is starting
92  up and when a lot of new clients arrive simultaneously, for instance after a
93  network outage. By the time we're ready to accept the connection the client
94  may have already given up and it is pointless to try and send the INIT2
95  response.
96
97New in 2.3:
98
99* Endian fixes in the encryption code (Adam Goode)
100* Fix failing SFTP transfer when a duplicate packet arrives.
101* Account for server processing delay in roundtrip time estimate.
102* Rewrote bandwidth/latency estimator to improve stability.
103* Added 'configure --with-lua' to link in an embedded Lua interpreter.
104* Support for Lua scripts to customize bandwidth and roundtrip time estimation.
105  Assumes the script can be found as /etc/rpc2.lua or the value of the
106  RPC2_LUA_SCRIPT environment variable. We check once every 5 seconds if
107  that file has been updated (or removed) and automatically reload it.
108  The script is disabled whenever a parse or runtime error is encountered.
109* Example scripts installed in ${prefix}/share/rpc2,
110  rpc2-rtt-adaptive.lua	- current RPC2 estimator, implemented in Lua.
111  rpc2-rtt-fixed.lua	- simple estimator using fixed network parameters.
112  rpc2-rtt-vj.lua	- simple latency only estimator.
113  rpc2-fail.lua		- Introduce packet loss and/or delay
114
115New in 2.2:
116
117* Avoid valgrind warnings in the pbkdf test function.
118* Fix codasrv regression, it failed to unpack the CML.
119
120New in 2.1 (unreleased):
121
122* Fix RPC2 binding on amd64.
123* Fix layout of struct SFTP_Parms for 64-bit.
124* Fix MultiRPC packing and unpacking on 64-bit.
125* Convert a couple other longs to int32_t in sftp.
126* Remove the autom4te.cache when bootstraping. (Phil Nelson)
127* Cygwin does not have IPV6 yet. (Phil Nelson)
128
129New in 2.0:
130
131* Removed unused multicast code.
132* Filter requests based on the subsystem we authenticated with.
133* New security framework that provides strong encryption.
134* Various standard encryption/authentication modes,
135    PKCS#5 v2.0 key derivation			(RFC 2898)
136    AES-XCBC-MAC-96 authentication		(RFC 3566)
137    AES-CBC encryption			 	(RFC 3602)
138    AES-CCM combined encryption/authentication	(RFC 4309)
139    AES-XCBC-PRF-128 pseudo random function	(RFC 4434)
140* Allow user to set minimum key length with RPC2SEC_KEYSIZE envvar.
141* Allow user to avoid reverting back to the old compatible handshake/xor
142  binding by setting the RPC2SEC_ONLY envvar.
143* Log packets larger than the IPv6 minimum MTU.
144* Automake cleanups, compile with -Wall, various other cleanups.
145* Attempt to fix conflicts with the Debian rpc2-4 package.
146* Replace incorrect %{_buildroot} with %{_builddir} in the RPM spec file.
147* rpc2 doesn't build on netbsd/sparc64 2.0ish (Greg Troxel)
148
149New in 1.28:
150
151* Do not truncate random numbers to 15 bits.
152* Check clientident length (Ivan Popov).
153* Fix gcc4 warnings.
154
155New in 1.27:
156
157* Fixes for LWP-2.0
158* Reduced size of the medium packets to 1500.
159* Explicitly clear the EchoTimestamp when we receive an out-of-order
160  SFTP data packet to avoid sending a stale timestamp value.
161* Make sure we retransmit at least one packet once we hit EOF so that we
162  can continue to make progress.
163
164New in 1.26:
165
166* SFTP was agressively dropping incoming packets that didn't come back
167  from the correct IP address. However, if there is 6-to-4 translation,
168  a request to <ipv4> comes back from [::ffff:<ipv4>]. This could also
169  help somewhat on multihomed hosts.
170
171New in 1.25:
172
173* Avoid allocating an unusable local connection identifier.
174* Don't bump last referenced times while searching for a usable
175  connection identifier.
176
177New in 1.24:
178
179* Set the UDP sockets to non-blocking. A bad UDP checksum could cause
180  recvfrom/recvmsg to block.
181* Try to bind listen sockets to the same portnumber.
182* The MSG_CONFIRM flag (see 1.20) code was commented out because of a
183  compatibility problem with older Linux kernels (2.2.x).
184  Now it is reenabled, however as soon as sendto fails with EINVAL we
185  revert back to the old behaviour.
186
187New in 1.23:
188
189* Don't assume RPC2_EAI_ errorcodes are identical to the EAI_ errors.
190* Fix crash in the mrpc_sendpacketsreliably tracing code when the first
191  connection entry does not have an active request buffer allocated.
192* Removed RPC2_EAI_NODATA and RPC2_EAI_ADDRFAMILY (RFC3493)
193
194New in 1.22:
195
196* Fixed some small memory leaks in error conditions.
197* Keep the size of the host lookup table smaller.
198
199New in 1.21:
200
201* IPv6 support.
202* Extra boundary checking when unpacking MultiRPC reply packets.
203* Updated for automake 1.7, autoconf 2.52, libtool 1.5.2.
204
205New in 1.20:
206
207* Add /usr/include/rpc2/rpc2_addrinfo.h to the devel packages.
208* Set 'ackme' flag on first packet sent during an SFTP retransmission.
209  This packet has a higher chance on survival and can confirm already
210  received packets and advance the window.
211* When responding to a received packet, set the MSG_CONFIRM flag (if it
212  is available). On Linux systems this reconfirm that the arp cache
213  entry for the destination is valid and as a result avoids the latency
214  of the extra(neous) arp request/response before sending the packet.
215* Fix bad byte-swap introduced in 1.14 that caused bandwidth/rtt problems.
216
217New in 1.19:
218
219* Cygwin compile fixes (Phil Nelson)
220* Replaced some paranoid assertions that triggered when a corrupt multirpc
221  packet was received with simply dropping the bogus packets. (Andrew
222  Griffiths)
223
224New in 1.18:
225
226* Removed pool allocator for MultiRPC contexts. It had a hardcoded size of
227  only 8 contexts and would die on an assertion whenever it got exhausted.
228* Merged IPv6 support from Rod Van Meter. This only really deals with IPv6
229  compatible addressing and does not handle the fact that IPv6 doesn't do
230  ip-level packet fragmentation for us.
231* We still accept and return the old HostIdent structures for applications
232  that haven't been 'ported' to the new IPv6 interface. The IPv6 ready
233  application has to call RPC2_Init with the RPC2_Options.Flags set to
234  RPC2_OPTION_IPV6 before we even bind a listening socket to an IPv6 address.
235  This means that we are drop-in compatible for existing applications.
236* Removed sftp socket and socket listener/timeout threads. Essentially we are
237  now always running 'masqueraded'. I believe it will work fine even for
238  existing clients that are not configured to use masquerading as long as
239  their rpc2-library is capable of receiving sftp packets on the rpc2 port
240  (i.e. >= rpc2-1.9).
241
242New in 1.17:
243
244* Small files sent with MultiRPC only arrived at the first server
245  in the mgrp. Resolution fixes things for normal store operations
246  but it broke repair in some cases.
247* Random number generator was initialized incorrectly (Ivan Popov).
248
249New in 1.16:
250
251* Fix for missing lseek that caused truncated backup files.
252* Correctly use off_t for lseek and friends. Defining _LARGEFILE_SOURCE
253  and _FILE_OFFSET_BITS=64 to enable large file support. Now if only the
254  rpc2/sftp API was compliant we would be done. However anything that
255  is using FILEBYNAME or FILEBYINODE or specifies a non-zero SeekOffset
256  still won't work right on >2GB files. However FILEBYFD with zero
257  SeekOffset should work just fine.
258
259New in 1.15:
260
261* Remove noisy debugging printf.
262* Generate correct packing/unpacking code for RPC2_BoundedBS structures with
263  rp2gen.
264* Fixed memory corruption when packing an RPC2_String with the MultiRPC
265  packing routines.
266* Solved slow writes and disconnections caused by excessive packet drops when
267  a masquerading client is sending SFTP packets on a fast network to a
268  (slower) server.
269
270New in 1.14:
271
272* Fixed readline includes.
273* Fixed gcc-3.2 compilation problems.
274* Don't recursively generate code for included files in .rpc2 files.
275* Fixed bison/yacc grammar problems.
276* Experimental code to get correct timeouts on asynchronous links (ADSL).
277* Always 'byteswap' packets.
278
279New in 1.13:
280
281* Fixed crash when an expired connection receives a NAK.
282* Increased lower bound on retransmission time to 300ms.
283* Removed Linux specific optimization in processing time calculation which
284  made RPC2 clients assume a server can respond faster than it actually does.
285* Fixed the very infrequent SFTP_SendResponse crash again, hopefully for real
286  this time.
287* A non-masqueraded rpc2 client wouldn't send out it's SFTP packets through
288  the rpc2 socket when talkin to a masqueraded rpc2-server. This broke
289  backfetches through a firewall.
290* Added delayed acks, when an RPC2 operation on the server is taking more than
291  200ms, an unsolicited RPC2_BUSY is sent back to the client to avoid
292  unnecessary retransmissions of the request.
293* Applied rp2gen patch from Jeff Bachtel.
294
295New in 1.12:
296
297* Fixed gcc-3.0 compiler warnings.
298* Added support for libreadline v4.2.
299* Stricter prototyping for callback functions.
300* Fixed the very infrequent SFTP_SendResponse crash.
301
302New in 1.11:
303
304* Applied MacOS X (Darwin) patches from Timothy Wood.
305* Keeping track of current fd offset in sftp to allow non-multirpc transfers
306  from/to a non-seekable fd (eg. stdout).
307
308New in 1.10:
309
310* Fixed NULL pointer dereference when rpc2 packet tracing is enabled.
311
312New in 1.9:
313
314* Corrected errors in libfail's delay filter code.
315* Added latency delay to libfail.
316* Merged debian packaging stuff.
317* Using same version number for all libraries to allow multiple versions
318  of the libraries to coexist.
319* Allow for sending and receiving SFTP packets through the RPC2 socket when
320  the user has not specified a specific SFTP port.
321* Fixed connection and packet leaks when unmarshalling a request fails.
322* Changed RPC2_setip to accept struct in_addr instead of hostname.
323
324New in 1.8:
325
326* Socketlistener got stuck on clocktick wakeups.
327
328New in 1.7:
329
330* Don't let socketlistener select on errors when it is unwilling to handle
331  the case when there is an error on the filedescriptors.
332
333New in 1.6:
334
335* Fixed the binding to specific addresses by using RPC2_setip before
336  calling RPC2_Init.
337* Cross compilation stuff for the Itsy (SA-1100). (Jason Flinn)
338* Corrected byteswapping of incoming/outgoing packets on Itsy's. (Jason Flinn)
339* Linking against the updated liblwp in lwp-1.5.
340* Limit the size of piggybacked sftp data to the requested sftp_maxpacketsize
341  to avoid ip-layer fragmentation.
342* Fixed the RPC2_NOBINDING bug which showed up in clog.
343
344New in 1.5:
345
346* Fixed a bug where we always decoded packets when receiving, even when
347  the sessionkey was not yet negotiated.
348
349New in 1.4:
350
351* Limited support to do sftp transfers from the stdin/stdout.
352* Added flag enable the connection reaper on a per program basis, too many
353  rpc2 applications broke.
354
355New in 1.3:
356
357* Only reaping dead server connections.
358
359New in 1.2:
360
361* Avoid iopen dependency on systems that don't have that syscall.
362* Reaping dead connections.
363
364New in 1.1:
365
366* Fixed problems with sftp transfers when the fd is shared.
367* Avoiding a double free of a packet buffer on diskerrors.
368* Added RPC2_SetTimeout so that applications can control the per-RPC timeout
369  on a connection. (Dushayanth Narayanan)
370
371New in 1.0:
372
373* Extracted RPC2 out of the main Coda source tree.
374* Using an automake/autoconf/libtool build environment.
375* Creating shared libraries.
376