Fix for checksum validation patch
Reorder the check for non-BLCKSZ size reads to make sure we don't abort sending the file in this case. Missed in the previous commit.
This commit is contained in:
parent
4eb77d50c2
commit
a08dc71195
@ -1410,26 +1410,26 @@ sendFile(const char *readfilename, const char *tarfilename, struct stat *statbuf
|
||||
|
||||
while ((cnt = fread(buf, 1, Min(sizeof(buf), statbuf->st_size - len), fp)) > 0)
|
||||
{
|
||||
/*
|
||||
* The checksums are verified at block level, so we iterate over
|
||||
* the buffer in chunks of BLCKSZ, after making sure that
|
||||
* TAR_SEND_SIZE/buf is divisible by BLCKSZ and we read a multiple
|
||||
* of BLCKSZ bytes.
|
||||
*/
|
||||
Assert(TAR_SEND_SIZE % BLCKSZ == 0);
|
||||
|
||||
if (verify_checksum && (cnt % BLCKSZ != 0))
|
||||
{
|
||||
ereport(WARNING,
|
||||
(errmsg("cannot verify checksum in file \"%s\", block "
|
||||
"%d: read buffer size %d and page size %d "
|
||||
"differ",
|
||||
readfilename, blkno, (int) cnt, BLCKSZ)));
|
||||
verify_checksum = false;
|
||||
}
|
||||
|
||||
if (verify_checksum)
|
||||
{
|
||||
/*
|
||||
* The checksums are verified at block level, so we iterate over
|
||||
* the buffer in chunks of BLCKSZ, after making sure that
|
||||
* TAR_SEND_SIZE/buf is divisible by BLCKSZ and we read a multiple
|
||||
* of BLCKSZ bytes.
|
||||
*/
|
||||
Assert(TAR_SEND_SIZE % BLCKSZ == 0);
|
||||
|
||||
if (cnt % BLCKSZ != 0)
|
||||
{
|
||||
ereport(WARNING,
|
||||
(errmsg("cannot verify checksum in file \"%s\", block "
|
||||
"%d: read buffer size %d and page size %d "
|
||||
"differ",
|
||||
readfilename, blkno, (int) cnt, BLCKSZ)));
|
||||
verify_checksum = false;
|
||||
continue;
|
||||
}
|
||||
for (i = 0; i < cnt / BLCKSZ; i++)
|
||||
{
|
||||
page = buf + BLCKSZ * i;
|
||||
|
Loading…
x
Reference in New Issue
Block a user