Make bootstrapping progress work properly (and refactor stopping a bit)
- Arti's bootstrap event sender doesn't reliably report readiness (arti#799 (closed)), which makes the state of the VPN appear glitched when it's actually working.
- To fix this, use the result of the
TorClient::bootstrap
function instead, and introduce a new sender to fake a 100% bootstrap status when this function returns. - We now send limited
Blockage
information, insofar as arti#800 (closed) doesn't yet let us determine the blockage kind. - The receiver passed into
start_with_receiver
is now a oneshot sender, instead of a broadcast one (the previous use of a broadcast channel wasn't actually necessary after refactoring the bootstrap status task to exit when the channel dies). - Also (mainly because this was found during testing), we no longer store an exit pointer in Java to stop the VPN, instead just using a mutex inside the Rust singleton.
closes #31 (closed)