Hello, I found the reason why "refuse options" is ignored on the server side. When then 5th argument (int val) in the poptOption struct is set to zero, the parsing function poptGetNextOpt() just continues with the next arg, without returning. So check_refuse_options() is simply not called in such cases.
The attached patch makes "refuse options" work with checksum and compress. These are the most obvious options the server admin may want to reject. Well, there may be others. Best wishes, -- fabrice
--- rsync-2.6.0.orig/options.c 2003-12-30 19:16:25.000000000 +0100 +++ rsync-2.6.0/options.c 2004-02-20 23:21:42.000000000 +0100 @@ -296,7 +296,7 @@ enum {OPT_VERSION = 1000, OPT_SENDER, OPT_EXCLUDE, OPT_EXCLUDE_FROM, OPT_DELETE_AFTER, OPT_DELETE_EXCLUDED, OPT_LINK_DEST, OPT_INCLUDE, OPT_INCLUDE_FROM, OPT_MODIFY_WINDOW, - OPT_READ_BATCH, OPT_WRITE_BATCH}; + OPT_READ_BATCH, OPT_WRITE_BATCH, OPT_CHECKSUM, OPT_COMPRESS}; static struct poptOption long_options[] = { /* longName, shortName, argInfo, argPtr, value, descrip, argDesc */ @@ -336,7 +336,7 @@ {"group", 'g', POPT_ARG_NONE, &preserve_gid, 0, 0, 0 }, {"devices", 'D', POPT_ARG_NONE, &preserve_devices, 0, 0, 0 }, {"times", 't', POPT_ARG_NONE, &preserve_times, 0, 0, 0 }, - {"checksum", 'c', POPT_ARG_NONE, &always_checksum, 0, 0, 0 }, + {"checksum", 'c', POPT_ARG_NONE, &always_checksum, OPT_CHECKSUM, 0, 0 }, {"verbose", 'v', POPT_ARG_NONE, 0, 'v', 0, 0 }, {"quiet", 'q', POPT_ARG_NONE, 0, 'q', 0, 0 }, {"archive", 'a', POPT_ARG_NONE, &archive_mode, 0, 0, 0 }, @@ -353,7 +353,7 @@ {"compare-dest", 0, POPT_ARG_STRING, &compare_dest, 0, 0, 0 }, {"link-dest", 0, POPT_ARG_STRING, 0, OPT_LINK_DEST, 0, 0 }, /* TODO: Should this take an optional int giving the compression level? */ - {"compress", 'z', POPT_ARG_NONE, &do_compression, 0, 0, 0 }, + {"compress", 'z', POPT_ARG_NONE, &do_compression, OPT_COMPRESS, 0, 0 }, {"daemon", 0, POPT_ARG_NONE, &am_daemon, 0, 0, 0 }, {"no-detach", 0, POPT_ARG_NONE, &no_detach, 0, 0, 0 }, {"stats", 0, POPT_ARG_NONE, &do_stats, 0, 0, 0 }, @@ -585,6 +585,10 @@ #endif + case OPT_CHECKSUM: + case OPT_COMPRESS: + break; + default: /* FIXME: If --daemon is specified, then errors for later * parameters seem to disappear. */
-- To unsubscribe or change options: http://lists.samba.org/mailman/listinfo/rsync Before posting, read: http://www.catb.org/~esr/faqs/smart-questions.html