go-rsync-receiver.diff

· erock's pastes · raw

expires: 2025-08-06

 1diff --git a/go.mod b/go.mod
 2index cd671f2..1ffb1ec 100644
 3--- a/go.mod
 4+++ b/go.mod
 5@@ -8,7 +8,7 @@ toolchain go1.24.0
 6 
 7 // replace github.com/picosh/send => ../send
 8 
 9-// replace github.com/picosh/go-rsync-receiver => ../go-rsync-receiver
10+replace github.com/picosh/go-rsync-receiver => ../go-rsync-receiver
11 
12 // replace github.com/picosh/pobj => ../pobj
13 
14diff --git a/pkg/send/protocols/rsync/rsync.go b/pkg/send/protocols/rsync/rsync.go
15index 8549190..d3224c0 100644
16--- a/pkg/send/protocols/rsync/rsync.go
17+++ b/pkg/send/protocols/rsync/rsync.go
18@@ -185,6 +185,11 @@ func Middleware(writeHandler utils.CopyFromClientHandler) pssh.SSHServerMiddlewa
19 			}()
20 
21 			cmdFlags := session.Command()
22+			flgs := cmdFlags[1:]
23+			for idx, f := range flgs {
24+				// openrsync sends "delete-before" when the client provided "delete"
25+				flgs[idx] = strings.ReplaceAll(f, "delete-before", "delete")
26+			}
27 
28 			optsCtx, err := rsyncopts.ParseArguments(cmdFlags[1:], true)
29 			if err != nil {