Mention the latest fixes and internal changes.
[rsync/rsync.git] / NEWS
1 NEWS for rsync 2.6.9 (unreleased)
2 Protocol: 29 (unchanged)
3 Changes since 2.6.8:
4
5   BUG FIXES:
6
7     - If rsync is interrupted via a handled signal (such as SIGINT), it will
8       once again clean-up its temp file from the destination dir.
9
10     - Fixed an overzealous sanitizing bug in the handling of the --link-dest,
11       --copy-dest, and --compare-dest options to a daemon without chroot: if
12       the copy's destination dir is deeper than the top of the module's path,
13       these options now accept a safe number of parent-dir (../) references
14       (since these options are relative to the destination dir).  The old code
15       incorrectly chopped off all "../" prefixes for these options, no matter
16       how deep the destination directory was in the module's hierarchy.
17
18     - Fixed a bug where a deferred info/error/log message could get sent
19       directly to the sender instead of being handled by rwrite() in the
20       generator.  This fixes an "unexpected tag 3" fatal error, and should
21       also fix a potential problem where a deferred info/error message from
22       the receiver might bypass the log file and get sent only to the client
23       process.  (These problems could only affect an rsync daemon that was
24       receiving files.)
25
26     - Fixed a bug where using --dry-run with a --*-dest option with a path
27       relative to a directory that does not yet exist:  the affected option
28       gets its proper path value so that the output of the dry-run is right.
29
30     - Fixed a bug in the %f logfile escape when receiving files: the
31       destination path is now included in the output (e.g. you can now tell
32       when a user specifies a subdir inside a module).
33
34     - If the receiving side fails to create a directory, it will now skip
35       trying to update everything that is inside that directory.
36
37     - If --link-dest is specified with --checksum but without --times, rsync
38       will now allow a hard-link to be created to a matching link-dest file
39       even when the file's modify-time doesn't match the server's file.
40
41     - The daemon now calls more timezone-using functions prior to doing a
42       chroot.  This should help some C libraries to generate proper timestamps
43       from inside a chrooted daemon (and to not try to access /etc/timezone
44       over and over again).
45
46     - Fixed a bug in the handling of an absolute --partial-dir=ABS_PATH option:
47       it now deletes an alternate basis file from the partial-dir that was used
48       to successfully update a destination file.
49
50     - Fixed a bug in the handling of --delete-excluded when using a per-dir
51       merge file:  the merge file is now honored on the receiving side, and
52       only its unqualified include/exclude commands are ignored (just as is
53       done for global include/excludes).
54
55     - Fixed a recent bug where --delete was not working when transferring from
56       the root (/) of the filesystem with --relative enabled.
57
58     - Fixed a recent bug where an --exclude='*' could affect the root (/) of
59       the filesystem with --relative enabled.
60
61     - When --inplace creates a file, it is now created with owner read/write
62       permissions (0600) instead of no permissions at all.  This avoids a
63       problem continuing a transfer that was interrupted (since --inplace
64       will not update a file that has no write permissions).
65
66     - If either --remove-source-files or --remove-sent-files is enabled and we
67       are unable to remove the source file, rsync now outputs an error.
68
69     - Fixed a bug in the daemon's "incoming chmod" rule:  newly-created
70       directories no longer get the 'F' (file) rules applied to them.
71
72     - Fixed an infinite loop bug when a filter rule was rejected due to being
73       overly long.
74
75   ENHANCEMENTS:
76
77     - Added the --log-file=FILE and --log-file-format=FORMAT options.  These
78       can be used to tell any rsync to output what it is doing to a log file.
79       They work with a client rsync, a non-daemon server rsync (see the man
80       page for instructions), and also allows the overriding of rsyncd.conf
81       settings when starting a daemon.
82
83     - The --log-format option was renamed to be --out-format to avoid confusing
84       it with affecting the log-file output.  (The old option remains as an
85       alias for the new to preserve backward compatibility.)
86
87     - Made "log file" and "syslog facility" settable on a per-module basis in
88       the daemon's config file.
89
90     - Added the --remove-source-files option as a replacement for the (now
91       deprecated) --remove-sent-files option.  This new option removes all
92       non-dirs from the source directories, even if the file was already
93       up-to-date.  This fixes a problem where interrupting an rsync that
94       was using --remove-sent-files and restarting it could leave behind
95       a file that the earlier rsync synchronized, but didn't get to remove.
96       (The deprecated --remove-sent-files is still understood for now, and
97       still behaves in the same way as before.)
98
99     - Added a new environment variable to the pre-/post-xfer exec commands (in
100       the daemon's config file):  RSYNC_PID.  This value will be the same in
101       both the pre- and post-xfer commands, so it can be used if the pre-xfer
102       command wants to cache some arg/request info for the post-xfer command.
103
104   INTERNAL:
105
106     - Did a code audit using IBM's code checker program and made several
107       changes, including: replacing most of the strcpy() and sprintf() calls
108       with strlcpy(), snprintf(), and memcpy(); adding a 0-value to an enum
109       that had been intermingling a literal 0 with the defined enum values.
110
111     - Fixed a potential bug in f_name_cmp() when both the args are a
112       top-level "." dir (which doesn't happen in normal operations).
113
114     - Changed exit_cleanup() so that it can never return instead of exit.
115       The old code might return if it found the exit_cleanup() function
116       was being called recursively.  The new code adds a check into the
117       logging functions so that they return back to the exit function
118       instead of recursing.
119
120   DEVELOPER RELATED:
121
122     - The acls.diff and xattrs.diff patches have received a bunch of work to
123       make them much closer to being acceptable in the main distribution.
124
125     - The rsync.yo and rsyncd.conf.yo files have been updated to work
126       better with the latest yodl 2.x releases.
127
128     - Updated config.guess and config.sub to their 2006-02-23 version.
129
130     - Updated various files to include the latest FSF address and to have
131       consistent opening comments.