Remove the "Connection reset by peer" from TODO
[rsync/rsync.git] / TODO
diff --git a/TODO b/TODO
index 5a01a53..48b8373 100644 (file)
--- a/TODO
+++ b/TODO
@@ -2,6 +2,13 @@
 
 BUGS ---------------------------------------------------------------
 
+rsync-url barfs on upload
+
+  rsync foo rsync://localhost/transfer/
+
+  Fix the parser.
+
+
 There seems to be a bug with hardlinks
 
   mbp/2 build$ ls -l /tmp/a /tmp/b -i
@@ -92,12 +99,32 @@ Progress indicator can produce corrupt output when transferring directories:
   main/binary-arm/math/
   main/binary-arm/misc/
 
-lchmod
 
+lchmod
   I don't think we handle this properly on systems that don't have the
-  call.
+  call.  Are there any such?
 
 
+Cross-test versions
+  Part of the regression suite should be making sure that we don't
+  break backwards compatibility: old clients vs new servers and so
+  on.  Ideally we would test the cross product of versions.  
+
+  It might be sufficient to test downloads from well-known public
+  rsync servers running different versions of rsync.  This will give
+  some testing and also be the most common case for having different
+  versions and not being able to upgrade.
+
+--no-blocking-io might be broken
+
+  in the same way as --no-whole-file; somebody needs to check.
+
+Do not rely on having a group called "nobody"
+
+  http://www.linuxbase.org/spec/refspecs/LSB_1.1.0/gLSB/usernames.html
+
+  On Debian it's "nogroup"
+
 DAEMON --------------------------------------------------------------
 
 server-imposed bandwidth limits
@@ -113,7 +140,7 @@ rsyncd over ssh
 FEATURES ------------------------------------------------------------
 
 
---dry-run is insufficiently dry
+--dry-run is too dry
 
   Mark Santcroos points out that -n fails to list files which have
   only metadata changes, though it probably should.  
@@ -139,6 +166,13 @@ use chroot
   command or a script.
 
 
+supplementary groups
+
+  Perhaps allow supplementary groups to be specified in rsyncd.conf;
+  then make the first one the primary gid and all the rest be
+  supplementary gids.
+
+
 File list structure in memory
 
   Rather than one big array, perhaps have a tree in memory mirroring
@@ -279,8 +313,39 @@ Hard-link handling
   might need a little program to check whether several names refer to
   the same file.
 
-IPv6
 
+
+Handling IPv6 on old machines
+
+  The KAME IPv6 patch is nice in theory but has proved a bit of a
+  nightmare in practice.  The basic idea of their patch is that rsync
+  is rewritten to use the new getaddrinfo()/getnameinfo() interface,
+  rather than gethostbyname()/gethostbyaddr() as in rsync 2.4.6.
+  Systems that don't have the new interface are handled by providing
+  our own implementation in lib/, which is selectively linked in.
+
+  The problem with this is that it is really hard to get right on
+  platforms that have a half-working implementation, so redefining
+  these functions clashes with system headers, and leaving them out
+  breaks.  This affects at least OSF/1, RedHat 5, and Cobalt, which
+  are moderately improtant.
+
+  Perhaps the simplest solution would be to have two different files
+  implementing the same interface, and choose either the new or the
+  old API.  This is probably necessary for systems that e.g. have
+  IPv6, but gethostbyaddr() can't handle it.  The Linux manpage claims
+  this is currently the case.
+
+  In fact, our internal sockets interface (things like
+  open_socket_out(), etc) is much narrower than the getaddrinfo()
+  interface, and so probably simpler to get right.  In addition, the
+  old code is known to work well on old machines.
+
+  We could drop the rather large lib/getaddrinfo files.
+
+
+Other IPv6 stuff:
+  
   Implement suggestions from http://www.kame.net/newsletter/19980604/
   and ftp://ftp.iij.ad.jp/pub/RFC/rfc2553.txt
 
@@ -363,6 +428,31 @@ zlib
   versions.
 
 
+logging
+
+  Perhaps flush stdout after each filename, so that people trying to
+  monitor progress in a log file can do so more easily.  See
+  http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=48108
+
+  At the connections that just get a list of modules are not logged,
+  but they should be.
+
+  If a child of the rsync daemon dies with a signal, we should notice
+  that when we reap it and log a message.
+
+  Keep stderr and stdout properly separated (Debian #23626)
+
+  After we get the @RSYNCD greeting from the server, we know it's
+  version but we have not yet sent the command line, so we could just
+  remove the -z option if the server is too old.  
+
+  For ssh invocation it's not so simple, because we actually use the
+  command line to start the remote process.  However, we only actually
+  do compression in token.c, and we could therefore once we discover
+  the remote version emit an error if it's too old.  I'm not sure if
+  that's a good tradeoff or not.
+
+
 proxy authentication
 
   Allow RSYNC_PROXY to be http://user:pass@proxy.foo:3128/, and do
@@ -376,6 +466,16 @@ SOCKS
   Add --with-socks, and then perhaps a command-line option to put them
   on or off.  This might be more reliable than LD_PRELOAD hacks.
 
+FAT support
+
+  rsync to a FAT partition on a Unix machine doesn't work very well
+  at the moment.  I think we get errors about invalid filenames and 
+  perhaps also trying to do atomic renames.
+
+  I guess the code to do this is currently #ifdef'd on Windows; perhaps
+  we ought to intelligently fall back to it on Unix too.
+
+
 Better statistics:
 
   <Rasmus> mbp: hey, how about an rsync option that just gives you the
@@ -421,6 +521,8 @@ chmod:
   the program.  For bonus points there would be a test case for the  
   parser.
 
+  Possibly also --chown
+
   (Debian #23628)
 
 
@@ -481,7 +583,6 @@ String area code
   it's not (anymore), throw it out.
          
 
-
 PLATFORMS ------------------------------------------------------------
 
 Win32
@@ -490,12 +591,6 @@ Win32
 
   http://sources.redhat.com/ml/cygwin/2001-08/msg00234.html
 
-  According to "Effective TCP/IP Programming" (??) close() on a socket
-  has incorrect behaviour on Windows -- it sends a RST packet to the
-  other side, which gives a "connection reset by peer" error.  On that
-  platform we should probably do shutdown() instead.  However, on Unix
-  we are correct to call close(), because shutdown() discards
-  untransmitted data.
 
 DEVELOPMENT ----------------------------------------------------------
 
@@ -522,19 +617,50 @@ Memory debugger
 
     http://devel-home.kde.org/~sewardj/
 
+Release script
+  
+  Update spec files
+
+  Build tar file; upload
+
+  Send announcement to mailing list and c.o.l.a.
+  
+  Make freshmeat announcement
+
+  Update web site
+
+
+
 TESTING --------------------------------------------------------------
 
 Cross-test versions
 
   Part of the regression suite should be making sure that we don't
   break backwards compatibility: old clients vs new servers and so
-  on.  Ideally we would test the cross product of versions.  
+  on.  Ideally we would test both up and down from the current release
+  to all old versions.
+
+  We might need to omit broken old versions, or versions in which
+  particular functionality is broken
 
   It might be sufficient to test downloads from well-known public
   rsync servers running different versions of rsync.  This will give
   some testing and also be the most common case for having different
   versions and not being able to upgrade.
 
+
+Test on kernel source
+
+  Download all versions of kernel; unpack, sync between them.  Also
+  sync between uncompressed tarballs.  Compare directories after
+  transfer.
+
+  Use local mode; ssh; daemon; --whole-file and --no-whole-file.
+
+  Use awk to pull out the 'speedup' number for each transfer.  Make
+  sure it is >= x.
+
+
 Test large files
 
   Sparse and non-sparse
@@ -556,6 +682,12 @@ Versions of read() and write() that corrupt the stream, or abruptly fail
 Separate makefile target to run rough tests -- or perhaps just run
 them every time?
 
+Test "refuse options" works
+
+  What about for --recursive?
+
+  If you specify an unrecognized option here, you should get an error.
+
 
 DOCUMENTATION --------------------------------------------------------
 
@@ -565,12 +697,23 @@ Keep list of open issues and todos on the web site
 
 Update web site from CVS
 
+
+Perhaps redo manual as SGML
+
+  The man page is getting rather large, and there is more information
+  that ought to be added.
+
+  TexInfo source is probably a dying format.
+
+  Linuxdoc looks like the most likely contender.  I know DocBook is
+  favoured by some people, but it's so bloody verbose, even with emacs
+  support.
+
+
 BUILD FARM -----------------------------------------------------------
 
 Add machines
 
-  AMDAHL UTS (Dave Dykstra)
-
   Cygwin (on different versions of Win32?)
 
   HP-UX variants (via HP?)
@@ -636,7 +779,6 @@ internationalization
   get the manual translated first, because that's possibly more useful
   and at any rate demonstrates desire.
 
-
 rsyncsh 
 
    Write a small emulation of interactive ftp as a Pythonn program
@@ -644,3 +786,21 @@ rsyncsh
    fairly directly into rsync commands: it just needs to remember the
    current host, directory and so on.  We can probably even do
    completion of remote filenames.
+
+
+RELATED PROJECTS -----------------------------------------------------
+
+http://rsync.samba.org/rsync-and-debian/
+
+rsyncable gzip patch
+
+  Exhaustive, tortuous testing
+
+  Cleanups?
+
+rsyncsplit as alternative to real integration with gzip?
+
+reverse rsync over HTTP Range
+
+  Goswin Brederlow suggested this on Debian; I think tridge and I
+  talked about it previous in relation to rproxy.