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