Arti issueshttps://gitlab.torproject.org/tpo/core/arti/-/issues2020-10-30T19:44:54Zhttps://gitlab.torproject.org/tpo/core/arti/-/issues/26Make a "channel-manager" to create channels on demand2020-10-30T19:44:54ZNick MathewsonMake a "channel-manager" to create channels on demandThe directory client code and the client code will both want to use a "channel manager" that launches channels on demand, and returns channels that already exist.The directory client code and the client code will both want to use a "channel manager" that launches channels on demand, and returns channels that already exist.A1: minimal socksportNick MathewsonNick Mathewsonhttps://gitlab.torproject.org/tpo/core/arti/-/issues/25Implement (or use implementation of) Socks4a and Socks52020-11-09T17:15:14ZNick MathewsonImplement (or use implementation of) Socks4a and Socks5I should find or write a SOCKS implmentation that we can use to make arti into a SOCKS proxy.I should find or write a SOCKS implmentation that we can use to make arti into a SOCKS proxy.A1: minimal socksportNick MathewsonNick Mathewsonhttps://gitlab.torproject.org/tpo/core/arti/-/issues/32Write a minimal tor proxy program2020-11-12T16:15:21ZNick MathewsonWrite a minimal tor proxy programOnce the other parts of the protocol are done, this should be pretty simple. Allocating a whole day, though, for bug hunting.Once the other parts of the protocol are done, this should be pretty simple. Allocating a whole day, though, for bug hunting.A1: minimal socksportNick MathewsonNick Mathewsonhttps://gitlab.torproject.org/tpo/core/arti/-/issues/29Store directory information on disk2020-11-30T17:56:34ZNick MathewsonStore directory information on diskWe should have support for storing directory stuff on disk. It doesn't need to be backward-compatible with Tor.
* [x] Extract read-tor-files code into tor-netdir
* [x] Basic sqlite implementation
* [x] Complete documentation
* [x] C...We should have support for storing directory stuff on disk. It doesn't need to be backward-compatible with Tor.
* [x] Extract read-tor-files code into tor-netdir
* [x] Basic sqlite implementation
* [x] Complete documentation
* [x] Complete test coverage
* [x] Invoke the code that expires old stuff from the directory.A1: minimal socksportNick MathewsonNick Mathewsonhttps://gitlab.torproject.org/tpo/core/arti/-/issues/30Download missing directory information and store it to disk2020-12-01T02:34:59ZNick MathewsonDownload missing directory information and store it to diskWe'll need to have code that does more or less the following:
* [x] Decide which resources we are missing, and need to download
* [x] Batch them into requests
* [x] Make those requests via HTTP-over-begindir
* [x] Receive the res...We'll need to have code that does more or less the following:
* [x] Decide which resources we are missing, and need to download
* [x] Batch them into requests
* [x] Make those requests via HTTP-over-begindir
* [x] Receive the result
* [x] Decompress the result
* [x] Validate the result
* [x] Store the result to disk if it is valid.
* [x] Find a way to let the in-memory directory exist in an 'updating' state.
* [x] Update the in-memory directory with the result.A1: minimal socksportNick MathewsonNick Mathewsonhttps://gitlab.torproject.org/tpo/core/arti/-/issues/36Support retries and timeouts in directory download code2020-12-02T14:47:14ZNick MathewsonSupport retries and timeouts in directory download code * [x] Time out directory requests that take too long
* [x] Retry requests for directories that we can't fetch.
* [x] Abandon circuits where we time out or find that they don't work. * [x] Time out directory requests that take too long
* [x] Retry requests for directories that we can't fetch.
* [x] Abandon circuits where we time out or find that they don't work.A1: minimal socksportNick MathewsonNick Mathewsonhttps://gitlab.torproject.org/tpo/core/arti/-/issues/39Use more correct "have enough paths" logic2020-12-02T19:10:44ZNick MathewsonUse more correct "have enough paths" logicThe current 'do we have enough paths to build circuits' logic is a temporary kludge and needs to be fixed.The current 'do we have enough paths to build circuits' logic is a temporary kludge and needs to be fixed.A1: minimal socksportNick MathewsonNick Mathewsonhttps://gitlab.torproject.org/tpo/core/arti/-/issues/38Update directories while arti proxy is running2020-12-04T19:12:19ZNick MathewsonUpdate directories while arti proxy is runningRight now the arti code can fetch a directory, but it only does it once on startup.
To be "working", it should be able to fetch later directories and switch over.Right now the arti code can fetch a directory, but it only does it once on startup.
To be "working", it should be able to fetch later directories and switch over.A1: minimal socksportNick MathewsonNick Mathewsonhttps://gitlab.torproject.org/tpo/core/arti/-/issues/40Update existing directory with new information2020-12-07T14:15:57ZNick MathewsonUpdate existing directory with new informationWhen we have a directory, we might not have all its microdescriptors. We should continue trying to fetch them until we abandon that directory.When we have a directory, we might not have all its microdescriptors. We should continue trying to fetch them until we abandon that directory.A1: minimal socksportNick MathewsonNick Mathewsonhttps://gitlab.torproject.org/tpo/core/arti/-/issues/28Basic path-generation logic2020-12-07T16:49:37ZNick MathewsonBasic path-generation logicI should extend tor-netdir (or some related crate) to build plausible paths through the Tor network.
At the very least for this milestone I want
* [x] Distinct relays
* [x] Making sure we know enough relays
* [ ] Avoiding relays in t...I should extend tor-netdir (or some related crate) to build plausible paths through the Tor network.
At the very least for this milestone I want
* [x] Distinct relays
* [x] Making sure we know enough relays
* [ ] Avoiding relays in the same family
* [x] Choosing exits that do what we want
* [x] Weighting more or less correctlyA1: minimal socksportNick MathewsonNick Mathewsonhttps://gitlab.torproject.org/tpo/core/arti/-/issues/42Stop handing out circuits that are too dirty2020-12-15T16:41:31ZNick MathewsonStop handing out circuits that are too dirtyIf we have some way to track when a circuit became dirty, we can stop handing out circuits that have been dirty for too long.If we have some way to track when a circuit became dirty, we can stop handing out circuits that have been dirty for too long.A1: minimal socksportNick MathewsonNick Mathewsonhttps://gitlab.torproject.org/tpo/core/arti/-/issues/46Support attempts to connect to an IPv6 address2020-12-15T19:43:33ZNick MathewsonSupport attempts to connect to an IPv6 addressWhen trying to connect to an IPv6 address, we should check the declared IPv6 policy for the exit.
Possibly, this will involve getting our begindir flags right.When trying to connect to an IPv6 address, we should check the declared IPv6 policy for the exit.
Possibly, this will involve getting our begindir flags right.A1: minimal socksportNick MathewsonNick Mathewsonhttps://gitlab.torproject.org/tpo/core/arti/-/issues/31Implement (client-side) consensus diffs2020-12-17T20:56:19ZNick MathewsonImplement (client-side) consensus diffsWe should write support for processing consensus diffs.
This should be pretty simple, since we don't need to generate diffs.We should write support for processing consensus diffs.
This should be pretty simple, since we don't need to generate diffs.A1: minimal socksportNick MathewsonNick Mathewsonhttps://gitlab.torproject.org/tpo/core/arti/-/issues/49Restore received_end in stream.rs2020-12-22T14:41:35ZNick MathewsonRestore received_end in stream.rsI hacked this out when I was trying to get proxying to work; I should turn it back on.I hacked this out when I was trying to get proxying to work; I should turn it back on.A1: minimal socksportNick MathewsonNick Mathewsonhttps://gitlab.torproject.org/tpo/core/arti/-/issues/48Let NetDir expose consensus parameters; use them elsewhere2020-12-22T21:18:56ZNick MathewsonLet NetDir expose consensus parameters; use them elsewhereThe initial value of sendwindow, for example, should not be hardcoded.The initial value of sendwindow, for example, should not be hardcoded.A1: minimal socksportNick MathewsonNick Mathewsonhttps://gitlab.torproject.org/tpo/core/arti/-/issues/37Clean-ups in directory download code2021-02-05T17:38:44ZNick MathewsonClean-ups in directory download codeHere's what needs to happen to clean up the directory download code:
* [x] Audit all the XXXXs to see if any are mustfix.
* [x] Open tickets for nontrivial mustfix XXXXs
* [ ] Better testing in tor-dirclient
* [ ] Better testing...Here's what needs to happen to clean up the directory download code:
* [x] Audit all the XXXXs to see if any are mustfix.
* [x] Open tickets for nontrivial mustfix XXXXs
* [ ] Better testing in tor-dirclient
* [ ] Better testing in tor-netdir
* [ ] Better testing in tor-dirmgr.A1: minimal socksportNick MathewsonNick Mathewsonhttps://gitlab.torproject.org/tpo/core/arti/-/issues/47tor-dirmgr: Never expose a DirMgr without a NetDir2021-09-16T14:40:22ZNick Mathewsontor-dirmgr: Never expose a DirMgr without a NetDirRight now, you can have a DirMgr that doesn't have any directory info at all. Instead, we should make it so that if you get a DirMgr, you're bootstrapped.Right now, you can have a DirMgr that doesn't have any directory info at all. Instead, we should make it so that if you get a DirMgr, you're bootstrapped.A1: minimal socksportNick MathewsonNick Mathewsonhttps://gitlab.torproject.org/tpo/core/arti/-/issues/27Make a "circuit manager" to create circuits on demand.2024-01-08T14:32:44ZNick MathewsonMake a "circuit manager" to create circuits on demand.We'll need a basic 'circuit manager' that can get existing circuits when suitable, and create new circuits when not.
* [x] Basic implementation
* [x] Timeouts
* [x] Retries
* [x] Support for abandoning old circuits
* [x] Allow exit...We'll need a basic 'circuit manager' that can get existing circuits when suitable, and create new circuits when not.
* [x] Basic implementation
* [x] Timeouts
* [x] Retries
* [x] Support for abandoning old circuits
* [x] Allow exit circuits to be used for more than one port
* [ ] Tests
* [ ] Complete documentation
* [x] Refactoring TBDA1: minimal socksportNick MathewsonNick Mathewson