wallet2: fix refresh retry when a block/tx fails to parse

It would switch to a new set of blocks and fail, getting out of sync
with the hash chain in the process
This commit is contained in:
moneromooo-monero 2018-08-04 12:41:15 +00:00
parent b219c24c3a
commit 62511df622
No known key found for this signature in database
GPG Key ID: 686F07454D6CEFC3

View File

@ -2498,10 +2498,6 @@ void wallet2::refresh(bool trusted_daemon, uint64_t start_height, uint64_t & blo
break; break;
} }
// switch to the new blocks from the daemon
blocks_start_height = next_blocks_start_height;
blocks = std::move(next_blocks);
parsed_blocks = std::move(next_parsed_blocks);
first = false; first = false;
// handle error from async fetching thread // handle error from async fetching thread
@ -2509,6 +2505,11 @@ void wallet2::refresh(bool trusted_daemon, uint64_t start_height, uint64_t & blo
{ {
throw std::runtime_error("proxy exception in refresh thread"); throw std::runtime_error("proxy exception in refresh thread");
} }
// switch to the new blocks from the daemon
blocks_start_height = next_blocks_start_height;
blocks = std::move(next_blocks);
parsed_blocks = std::move(next_parsed_blocks);
} }
catch (const std::exception&) catch (const std::exception&)
{ {