HomePhabricator

Backport PR14897, PR15834 and PR16196

Description

Backport PR14897, PR15834 and PR16196

Summary:
They all are backported at once to avoid leaving master in a buggy state.

This is Core PR14897: https://github.com/bitcoin/bitcoin/pull/14897

  • Change in transaction pull scheduling to prevent InvBlock-related attacks

Co-authored-by: Suhas Daftuar <sdaftuar@gmail.com>

This is Core PR15834: https://github.com/bitcoin/bitcoin/pull/15834

  • Remove NOTFOUND transactions from in-flight data structures

This prevents a bug where the in-flight queue for our peers will not be
drained, resulting in not downloading any new transactions from our peers.

Thanks to ajtowns for reporting this bug.

  • Add an explicit memory bound to m_tx_process_time

Previously there was an implicit bound based on the handling of m_tx_announced,
but that approach is error-prone (particularly if we start automatically
removing things from that set).

  • Improve NOTFOUND comment
  • Expire old entries from the in-flight tx map

If a peer hasn't responded to a getdata request, eventually time out the request
and remove it from the in-flight data structures. This is to prevent any bugs in
our handling of those in-flight data structures from filling up the in-flight
map and preventing us from requesting more transactions (such as the NOTFOUND
bug, fixed in a previous commit).

Co-authored-by: Anthony Towns <aj@erisian.com.au>

  • Fix bug around transaction requests

If a transaction is already in-flight when a peer announces a new tx to us, we
schedule a time in the future to reconsider whether to download. At that future
time, there was a bug that would prevent transactions from being rescheduled
for potential download again (ie if the transaction was still in-flight at the
time of reconsideration, such as from some other peer). Fix this.

This is Core PR16196: https://github.com/bitcoin/bitcoin/pull/16196

  • doc: Add release notes for 14897 & 15834

Test Plan:

make check
./test/functional/test_runner.py --extended

Reviewers: #bitcoin_abc, Fabien

Reviewed By: #bitcoin_abc, Fabien

Subscribers: Fabien

Differential Revision: https://reviews.bitcoinabc.org/D4574

Details

Provenance
Gleb Naumenko <naumenko.gs@gmail.com>Authored on Feb 7 2019, 04:25
deadalnixCommitted on Nov 28 2019, 17:53
deadalnixPushed on Nov 28 2019, 17:56
Reviewer
Restricted Project
Differential Revision
D4574: Backport PR14897, PR15834 and PR16196
Parents
rSTAGING0e28ecba8ec1: Merge #15149: gui: Show current wallet name in window title
Branches
Unknown
Tags
Unknown
References
tag: phabricator/base/14493, tag: phabricator/base/14492