mirror of
https://github.com/RsyncProject/rsync.git
synced 2026-03-24 17:22:41 -04:00
Moved read_sum_head() here from sender.c (because the generator uses it
too) and improved it with better error checking.
This commit is contained in:
25
io.c
25
io.c
@@ -48,6 +48,7 @@ extern int am_daemon;
|
||||
extern int am_sender;
|
||||
extern int am_generator;
|
||||
extern int eol_nulls;
|
||||
extern int csum_length;
|
||||
extern int checksum_seed;
|
||||
extern int protocol_version;
|
||||
extern char *remote_filesfrom_file;
|
||||
@@ -779,6 +780,30 @@ unsigned char read_byte(int f)
|
||||
return c;
|
||||
}
|
||||
|
||||
/* Populate a sum_struct with values from the socket. This is
|
||||
* called by both the sender and the receiver. */
|
||||
void read_sum_head(int f, struct sum_struct *sum)
|
||||
{
|
||||
sum->count = read_int(f);
|
||||
sum->blength = read_int(f);
|
||||
if (sum->blength < 0 || sum->blength > MAX_BLOCK_SIZE) {
|
||||
rprintf(FERROR, "Invalid block length %ld\n",
|
||||
(long)sum->blength);
|
||||
exit_cleanup(RERR_PROTOCOL);
|
||||
}
|
||||
sum->s2length = protocol_version < 27 ? csum_length : (int)read_int(f);
|
||||
if (sum->s2length < 0 || sum->s2length > MD4_SUM_LENGTH) {
|
||||
rprintf(FERROR, "Invalid checksum length %d\n", sum->s2length);
|
||||
exit_cleanup(RERR_PROTOCOL);
|
||||
}
|
||||
sum->remainder = read_int(f);
|
||||
if (sum->remainder < 0 || sum->remainder > sum->blength) {
|
||||
rprintf(FERROR, "Invalid remainder length %ld\n",
|
||||
(long)sum->remainder);
|
||||
exit_cleanup(RERR_PROTOCOL);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Sleep after writing to limit I/O bandwidth usage.
|
||||
|
||||
Reference in New Issue
Block a user