don't let a web console page hang on a stopped service - #2518
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The console asks other threads for a snapshot of their sessions and waits for the answer without any bound: GetECIESx25519SessionsList().get() for a destination and GetSSU2Sessions(sessions).get() for the transport. A task posted to a service that is already stopped never runs, so the waiting console thread would block forever and the page would never come back.
Both waits are now bounded by three seconds. If the answer does not arrive in time, the page says so in that place and renders the rest as usual instead of hanging.
This is what was asked for in the channel: call wait_for instead of get.
Checked locally: the router starts and the front page, local destinations, transports and tunnels pages all render in about a millisecond. Builds without warnings, unit tests pass, C++17 syntax check is fine.