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:
Magnus Hagander 2018-04-03 13:57:49 +02:00
parent 4eb77d50c2
commit a08dc71195

View File

@ -1409,8 +1409,6 @@ sendFile(const char *readfilename, const char *tarfilename, struct stat *statbuf
}
while ((cnt = fread(buf, 1, Min(sizeof(buf), statbuf->st_size - len), fp)) > 0)
{
if (verify_checksum)
{
/*
* The checksums are verified at block level, so we iterate over
@ -1420,7 +1418,7 @@ sendFile(const char *readfilename, const char *tarfilename, struct stat *statbuf
*/
Assert(TAR_SEND_SIZE % BLCKSZ == 0);
if (cnt % BLCKSZ != 0)
if (verify_checksum && (cnt % BLCKSZ != 0))
{
ereport(WARNING,
(errmsg("cannot verify checksum in file \"%s\", block "
@ -1428,8 +1426,10 @@ sendFile(const char *readfilename, const char *tarfilename, struct stat *statbuf
"differ",
readfilename, blkno, (int) cnt, BLCKSZ)));
verify_checksum = false;
continue;
}
if (verify_checksum)
{
for (i = 0; i < cnt / BLCKSZ; i++)
{
page = buf + BLCKSZ * i;