Skip to content

fix(transport): clamp FibonacciBackoff state at max to avoid u64 overflow - #770

Open
tradatious wants to merge 1 commit into
wboayue:mainfrom
tradatious:fibonacci-overflow
Open

fix(transport): clamp FibonacciBackoff state at max to avoid u64 overflow#770
tradatious wants to merge 1 commit into
wboayue:mainfrom
tradatious:fibonacci-overflow

Conversation

@tradatious

Copy link
Copy Markdown
Contributor

The fix for PR #763 exposed an issue with next_delay() that I didn't notice at the time.

…flow

`next_delay()` capped only the returned delay; the internal state kept
growing as a raw Fibonacci sequence, which overflows u64 at call 93
(fib(94)). A reconnect loop with a large `max_reconnect_attempts` or
`reconnect_forever` reaches that during a long outage. With the
30 s `max` both call sites use, about 45 minutes of continuous outage.
In debug builds `next_delay()` would panic with `attempt to add with
overflow`, and in release the addition would wrap and the delays would
become nonsense.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant