Improve and refactor circuit isolation code

With !38 (merged), we now have working circuit isolation code. Here are some follow-up items for %Arti 0.0.1 release: basic anonymity. We should probably talk about these before going ahead and doing them, however: most of these involve some design thinking.

  • Possibly: Split the Usage types and the Isolation types into separate types, such that they can be used and tested independently. Maybe the concrete TargetCircUsage and SupportedCircUsage types ought to be .
  • Possibly: Instead of IsolationToken, support isolation profiles with multiple fields, like we do in Tor. This would let us get rid of IsolationMap in tor-client. Perhaps "isolation" should be represented with a a trait and CircMgr should be parameterized with it?
  • Test coverage on IsolationMap, assuming we keep it.
  • A function on TorClient to return a clone of the TorClient whose streams are always isolated from the original TorClient.
  • Configurable isolation for different types of field in tor-client, like tor has today.
  • Integration tests that make sure that streams that are supposed to be isolated are in fact assigned to different circuits.
Edited Mar 28, 2022 by Nick Mathewson
Assignee Loading
Time tracking Loading