while ((p = strstr(ref,name))) {
if ((p==ref || p[-1]==' ') &&
(p[len] == ' ' || p[len] == 0)) {
- if (opt == 'z') {
- /* don't actually refuse this one, just */
- /* minimize the compression level for now */
- extern int default_compression_level;
- default_compression_level = 0;
- return 0;
- }
slprintf(err_buf,sizeof(err_buf),
"The '%s' option is not supported by this server\n", name);
return 1;
mailto(rsync-bugs@samba.org)
-manpage(rsyncd.conf)(5)(24 Nov 1998)()()
+manpage(rsyncd.conf)(5)(25 Nov 1998)()()
manpagename(rsyncd.conf)(configuration file for rsync server)
manpagesynopsis()
dit(bf(refuse options)) The "refuse options" option allows you to
specify a space separated list of rsync command line options that will
-be refused by your rsync server. When an option is refused the server
-prints an error message and exits, except for the "compress" option
-in which case the server silently sends all files uncompressed.
-
-The full names of the options must be used (ie. you must use
-"checksum" not "c" to disable checksumming).
+be refused by your rsync server. The full names of the options must be
+used (i.e., you must use "checksum" not "c" to disable checksumming).
+When an option is refused, the server prints an error message and exits.
+To prevent all compression, you can use "dont compress = *" (see below)
+instead of "refuse options = compress" to avoid returning an error to a
+client that requests compression.
dit(bf(dont compress)) The "dont compress" option allows you to select
filenames based on wildcard patterns that should not be compressed
#include "zlib/zlib.h"
extern int do_compression;
-int default_compression_level = Z_DEFAULT_COMPRESSION;
static int compression_level = Z_DEFAULT_COMPRESSION;
/* determine the compression level based on a wildcard filename list */
if (!do_compression) return;
- compression_level = default_compression_level;
+ compression_level = Z_DEFAULT_COMPRESSION;
dont = lp_dont_compress(module_id);
if (!dont || !*dont) return;
+ if ((dont[0] == '*') && (!dont[1])) {
+ /* an optimization to skip the rest of this routine */
+ compression_level = 0;
+ return;
+ }
+
dont = strdup(dont);
fname = strdup(fname);
if (!dont || !fname) return;