Maxim wrote on 03.06.2026 22:40:
Thomas Kupper, 2026-06-03 18:39 +0200:
Mine Fedora is older, version 41 vs yours 44 (latest) but it's the same
rsync version 3.4.1 protocol 32. I'll give it a go with Fedora 44.

But for me it doesn't work at all when I add '--delete', no combination
works.

I've localised the problem with option -x down to openrsync alone:

     $ mkdir /tmp/sync-from
     $ touch /tmp/sync-from/foo.txt
     $ openrsync --rsync-path=openrsync -r -x --delete /tmp/sync-from/ 
localhost:/tmp/sync-to
     $ openrsync --rsync-path=openrsync -r -x --delete /tmp/sync-from/ 
localhost:/tmp/sync-to
     openrsync: error: .: stat: No such file or directory
     openrsync: error: poll: hangup

I haven't looked into --exclude yet.

It's an issue with unveil(2) not set for '.' in receiver.c. But I don't know yet how to solve it properly; either the below or remove '.' from the file list or maybe something else.

Temporary the below works _but_ really it's only for testing. Maybe it's the worst way to handle it.

---
Index: receiver.c
===================================================================
RCS file: /cvs/src/usr.bin/rsync/receiver.c,v
diff -u -p -r1.34 receiver.c
--- receiver.c  29 May 2025 17:03:43 -0000      1.34
+++ receiver.c  4 Jun 2026 12:38:00 -0000
@@ -201,6 +201,12 @@ rsync_receiver(struct sess *sess, int fd
                if (dfd == -1)
err(ERR_IPC, "%s: unveil", sess->opts->basedir_abs[i]);
        }
+       /* TEMP: manually unveil '.'
+ TODO: '.' is always added it seems but not in the basedir_abs[] array,
+                either remove it or unveil() it */
+       dfd = unveil(".", "r");
+       if (dfd == -1)
+               err(ERR_IPC, "%s: unveil", ".");

        if (unveil(root, "rwc") == -1)
                err(ERR_IPC, "%s: unveil", root);
---


What OpenBSD version are you running it on?

OpenBSD 7.9-current (GENERIC.MP) #527: Fri May 29 02:10:56 MDT 2026


Reply via email to