+ if (server_filter_list.head
+ && check_filter(&server_filter_list, fname,
+ S_ISDIR(file->mode)) < 0) {
+ rprintf(FERROR, "attempt to hack rsync failed.\n");
+ exit_cleanup(RERR_PROTOCOL);
+ }
+
+ partialptr = partial_dir ? partial_dir_fname(fname) : fname;
+
+ if (f_in_name >= 0) {
+ uchar j;
+ switch (j = read_byte(f_in_name)) {
+ case FNAMECMP_FNAME:
+ fnamecmp = fname;
+ break;
+ case FNAMECMP_PARTIAL_DIR:
+ fnamecmp = partialptr ? partialptr : fname;
+ break;
+ case FNAMECMP_BACKUP:
+ fnamecmp = get_backup_name(fname);
+ break;
+ default:
+ if (j >= basis_dir_cnt) {
+ rprintf(FERROR,
+ "invalid basis_dir index: %d.\n",
+ j);
+ exit_cleanup(RERR_PROTOCOL);
+ }
+ pathjoin(fnamecmpbuf, sizeof fnamecmpbuf,
+ basis_dir[j], fname);
+ fnamecmp = fnamecmpbuf;
+ break;
+ }
+ } else
+ fnamecmp = fname;