Circuit based events
Currently rust-onionmasq has socket-based events, that signal if a socket connection for a given application has been established, failed or closed. These events contain the information about the used circuit, which we want to display in TorVPN. Socket connections are often short-lived which makes it difficult to use them to give UI feedback about the circuits an app is (re)using. !212 (merged) works around ephemerality by caching the circuit information of the last created socket connection so that it can be displayed to the user without flickering. However the approach in !212 (merged) implies that there is only one active circuit per app, which might or might not be true. A real solution to the problem would be to have proper circuit events that inform that
- a circuit has been first used by an app
- a circuit has been dismissed
- contains the hops (including country codes) involved in a circuit
- the guard node is a bridge or not / the obfuscation protocol used
For reference the UI part we want to use the circuit information for: