diff --git a/src/bin/pg_basebackup/receivelog.c b/src/bin/pg_basebackup/receivelog.c index da7a6c84446effb58277aa497ca9e28f7310e564..d05a588b3aec45a8b50e6a4692d86584f65b9777 100644 --- a/src/bin/pg_basebackup/receivelog.c +++ b/src/bin/pg_basebackup/receivelog.c @@ -420,15 +420,20 @@ ReceiveXlogStream(PGconn *conn, XLogRecPtr startpos, uint32 timeline, if (standby_message_timeout) { TimestampTz targettime; + long secs; + int usecs; targettime = TimestampTzPlusMilliseconds(last_status, standby_message_timeout - 1); localTimestampDifference(now, targettime, - &timeout.tv_sec, - (int *) &timeout.tv_usec); - if (timeout.tv_sec <= 0) + &secs, + &usecs); + if (secs <= 0) timeout.tv_sec = 1; /* Always sleep at least 1 sec */ + else + timeout.tv_sec = secs; + timeout.tv_sec = usecs; timeoutptr = &timeout; } else