main pico / pkg / rsync-receiver / rsyncreceiver / token.go
Eric Bower  ·  2026-05-31
 1package rsyncreceiver
 2
 3import "io"
 4
 5// rsync/token.c:recvToken.
 6func (rt *Transfer) recvToken() (token int32, data []byte, _ error) {
 7	var err error
 8	token, err = rt.Conn.ReadInt32()
 9	if err != nil {
10		return 0, nil, err
11	}
12	if token <= 0 {
13		return token, nil, nil
14	}
15	data = make([]byte, int(token))
16	if _, err := io.ReadFull(rt.Conn.Reader, data); err != nil {
17		return 0, nil, err
18	}
19	return token, data, nil
20}