Skip to content

Commit 6c89d4d

Browse files
committed
receiver: only receive uid/gid list if enabled
I did not notice this previously, because my transfers typically use -a (archive), which enables preserveuid and preservegid.
1 parent 23f7226 commit 6c89d4d

2 files changed

Lines changed: 34 additions & 25 deletions

File tree

internal/receiver/flist.go

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -225,13 +225,15 @@ func (rt *Transfer) ReceiveFileList() ([]*File, error) {
225225

226226
sortFileList(fileList)
227227

228-
// receive the uid/gid list
229-
users, groups, err := rt.RecvIdList()
230-
if err != nil {
231-
return nil, err
228+
if rt.Opts.PreserveUid || rt.Opts.PreserveGid {
229+
// receive the uid/gid list
230+
users, groups, err := rt.RecvIdList()
231+
if err != nil {
232+
return nil, err
233+
}
234+
_ = users
235+
_ = groups
232236
}
233-
_ = users
234-
_ = groups
235237

236238
// read the i/o error flag
237239
ioErrors, err := rt.Conn.ReadInt32()

internal/receiver/uidlist.go

Lines changed: 26 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -38,26 +38,33 @@ func (rt *Transfer) recvIdMapping1(localId func(id int32, name string) int32) (m
3838

3939
// rsync/uidlist.c:recv_id_list
4040
func (rt *Transfer) RecvIdList() (users map[int32]mapping, groups map[int32]mapping, _ error) {
41-
var err error
42-
users, err = rt.recvIdMapping1(func(remoteUid int32, remoteUsername string) int32 {
43-
// TODO: look up local uid by username
44-
return remoteUid
45-
})
46-
if err != nil {
47-
return nil, nil, err
48-
}
49-
for remoteUid, mapping := range users {
50-
log.Printf("remote uid %d(%s) maps to local uid %d", remoteUid, mapping.Name, mapping.LocalId)
51-
}
52-
groups, err = rt.recvIdMapping1(func(remoteGid int32, remoteGroupname string) int32 {
53-
// TODO: look up local gid by groupname
54-
return remoteGid
55-
})
56-
if err != nil {
57-
return nil, nil, err
41+
if rt.Opts.PreserveUid {
42+
var err error
43+
users, err = rt.recvIdMapping1(func(remoteUid int32, remoteUsername string) int32 {
44+
// TODO: look up local uid by username
45+
return remoteUid
46+
})
47+
if err != nil {
48+
return nil, nil, err
49+
}
50+
for remoteUid, mapping := range users {
51+
log.Printf("remote uid %d(%s) maps to local uid %d", remoteUid, mapping.Name, mapping.LocalId)
52+
}
5853
}
59-
for remoteGid, mapping := range groups {
60-
log.Printf("remote gid %d(%s) maps to local gid %d", remoteGid, mapping.Name, mapping.LocalId)
54+
55+
if rt.Opts.PreserveGid {
56+
var err error
57+
groups, err = rt.recvIdMapping1(func(remoteGid int32, remoteGroupname string) int32 {
58+
// TODO: look up local gid by groupname
59+
return remoteGid
60+
})
61+
if err != nil {
62+
return nil, nil, err
63+
}
64+
for remoteGid, mapping := range groups {
65+
log.Printf("remote gid %d(%s) maps to local gid %d", remoteGid, mapping.Name, mapping.LocalId)
66+
}
6167
}
68+
6269
return users, groups, nil
6370
}

0 commit comments

Comments
 (0)