diff options
| author | bitflash-maintainer <noreply@bitflash.invalid> | 2026-08-12 16:08:22 +0000 |
|---|---|---|
| committer | bitflash-maintainer <noreply@bitflash.invalid> | 2026-08-23 04:37:36 +0000 |
| commit | 14e2d7f9ac83d22ea7231fd9f69b36a204afd721 (patch) | |
| tree | 0b6640d781450fab0e9455b038b121c4dbcb5d2e /src | |
| parent | 49167989ad8f39f7d617e2e081b848678465b7ed (diff) | |
net: time the stall, not the wait, before dropping an unreadable peer
Found auditing the previous commit for the push. Timing from the first
rewind would drop a peer whose message is large and merely slow, which
would be a fault of our own making rather than one we fixed.
Restart the clock whenever the buffer has grown by even one byte since the
last look. A transfer still making progress is never dropped however long
it takes; only one that has stopped growing while the node goes on
expecting more is, which is the actual failure.
(cherry picked from commit 5dddb26bae02013ce87719b11953aadf0bfa2594)
Diffstat (limited to 'src')
| -rw-r--r-- | src/net.h | 8 |
1 files changed, 6 insertions, 2 deletions
| @@ -670,9 +670,13 @@ public: | |||
| 670 | string strBtfAddr; | 670 | string strBtfAddr; |
| 671 | string strBtfMeeting; | 671 | string strBtfMeeting; |
| 672 | 672 | ||
| 673 | // When this peer's message loop first rewound a header to wait for the | 673 | // When this peer's message loop last rewound a header without having made |
| 674 | // rest of a message, or 0 when it is not waiting. See ProcessMessages. | 674 | // progress, or 0 when it is not waiting, plus how much was buffered then. |
| 675 | // The pair times a STALL rather than a duration, so a large message | ||
| 676 | // arriving slowly is never mistaken for one that is never arriving. | ||
| 677 | // See ProcessMessages. | ||
| 675 | int64 nMsgWaitSince; | 678 | int64 nMsgWaitSince; |
| 679 | unsigned int nMsgWaitSize; | ||
| 676 | 680 | ||
| 677 | // Height this peer announced in its version message, or -1 if it sent a | 681 | // Height this peer announced in its version message, or -1 if it sent a |
| 678 | // version message that predates the field. Knowing how far along everyone | 682 | // version message that predates the field. Knowing how far along everyone |