Eric Bower
·
2026-05-31
1package rsyncsender
2
3// rsync/token.c:simple_send_token.
4func (st *Transfer) simpleSendToken(ms *mapStruct, token int32, offset int64, n int64) error {
5 if n > 0 {
6 st.Logger.Debug("sending unmatched chunks", "offset", offset, "n", n)
7 l := int64(0)
8 for l < n {
9 n1 := min(int64(chunkSize), n-l)
10
11 chunk := ms.ptr(offset+l, int32(n1))
12
13 if err := st.Conn.WriteInt32(int32(n1)); err != nil {
14 return err
15 }
16
17 if _, err := st.Conn.Writer.Write(chunk); err != nil {
18 return err
19 }
20
21 l += n1
22 }
23 }
24 if token != -2 {
25 return st.Conn.WriteInt32(-(token + 1))
26 }
27 return nil
28}
29
30// rsync/token.c:send_token.
31func (st *Transfer) sendToken(ms *mapStruct, i int32, offset int64, n int64) error {
32 // TODO(compression): send deflated token
33 return st.simpleSendToken(ms, i, offset, n)
34}