<feed xmlns='http://www.w3.org/2005/Atom'>
<title>mirrors/arti.git/crates/tor-dirserver/src/mirror/operation, branch main</title>
<subtitle>mirror of https://gitlab.torproject.org/tpo/core/arti
</subtitle>
<id>http://git.dilluti0n.com/mirrors/arti.git/atom?h=main</id>
<link rel='self' href='http://git.dilluti0n.com/mirrors/arti.git/atom?h=main'/>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/'/>
<updated>2026-07-22T12:25:53Z</updated>
<entry>
<title>Much formatting churn for 2024 edition</title>
<updated>2026-07-22T12:25:53Z</updated>
<author>
<name>Ian Jackson</name>
<email>ijackson@chiark.greenend.org.uk</email>
</author>
<published>2026-07-22T12:25:53Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=e64263b921638ceb9c6adf3967fdde39e0a73db2'/>
<id>urn:sha1:e64263b921638ceb9c6adf3967fdde39e0a73db2</id>
<content type='text'>
</content>
</entry>
<entry>
<title>tor-dirserver: Add retry logic POC TODO</title>
<updated>2026-03-09T09:03:55Z</updated>
<author>
<name>Clara Engler</name>
<email>cve@cve.cx</email>
</author>
<published>2026-03-04T17:19:40Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=c9a508bad632d5d634b06ab5b46857632f572f5f'/>
<id>urn:sha1:c9a508bad632d5d634b06ab5b46857632f572f5f</id>
<content type='text'>
Adds a small TODO with regard to a potentially broken retry logic in the
proof-of-concept.
</content>
</entry>
<entry>
<title>tor-dirserver: Move POC to own module</title>
<updated>2026-03-09T08:31:28Z</updated>
<author>
<name>Clara Engler</name>
<email>cve@cve.cx</email>
</author>
<published>2026-03-02T11:20:43Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=2752d529bf9cf54f5a6d4f75f4da85c38cc8b752'/>
<id>urn:sha1:2752d529bf9cf54f5a6d4f75f4da85c38cc8b752</id>
<content type='text'>
This commit moves dirserver POC code to an own module to semantically
indicate it is not production ready.
</content>
</entry>
<entry>
<title>tor-dirserver: Remove download module</title>
<updated>2026-03-09T08:04:53Z</updated>
<author>
<name>Clara Engler</name>
<email>cve@cve.cx</email>
</author>
<published>2026-02-05T09:12:08Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=93fbfa435fbfa6c77f705bf90e3592e33ef69ed1'/>
<id>urn:sha1:93fbfa435fbfa6c77f705bf90e3592e33ef69ed1</id>
<content type='text'>
This commit removes the download manager module because it does not fit
well into the mental model of our current finite state machine anymore.
</content>
</entry>
<entry>
<title>tor-dirserver: Make downloader stateless</title>
<updated>2026-01-20T12:16:44Z</updated>
<author>
<name>Clara Engler</name>
<email>cve@cve.cx</email>
</author>
<published>2026-01-20T12:01:54Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=d4d99b5dc87632596fb6786288a13a24ec79efe0'/>
<id>urn:sha1:d4d99b5dc87632596fb6786288a13a24ec79efe0</id>
<content type='text'>
This commit makes the downloader found in `mirror::operation::download`
stateless by removing the `preferred_authority` field and changing all
methods from `&amp;mut self` to `&amp;self`.

The preferred authority is now accepted as a parameter to
`DownloadManager::download` which also returns a tuple now with the
actually used authority alongside the response, putting the management
of this to the responsibility of the caller.

Meanwhile, it also renames the structure from `ConsensusBoundDownloader`
to `DownloadManager` because it no longer keeps a state that
invalidates after a consensus "ends".

The purpose of this is to simplify overall state in order to make the
implementation of a finite-state-machine for the dirmirror operation
more easy (and deterministic).
</content>
</entry>
<entry>
<title>Fix flaky `request_fail_ultimately` test</title>
<updated>2026-01-19T09:45:49Z</updated>
<author>
<name>Clara Engler</name>
<email>cve@cve.cx</email>
</author>
<published>2026-01-19T09:45:49Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=bdf898a9e0cf7e511e09e231f747dfd9a58fe885'/>
<id>urn:sha1:bdf898a9e0cf7e511e09e231f747dfd9a58fe885</id>
<content type='text'>
This commit fixes the flaky `request_fail_ultimately` in tor-dirserver,
which is flaky due to the operating system's handling of TCP RSTs, which
are generally detected stochastically and sometimes are not received
even after the entire response has been parsed.

This leads to tor-dirclient either returning a connection reset or a
truncated header error, depending on whether it successfully or
unsuccessfully reads zero bytes from the server.

Fixes #2318
</content>
</entry>
<entry>
<title>tor-dirserver: Speedup tests using tokio's test-util</title>
<updated>2026-01-14T16:38:04Z</updated>
<author>
<name>Clara Engler</name>
<email>cve@cve.cx</email>
</author>
<published>2026-01-14T16:31:13Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=aa42cd41612c369a32bb6849fd6724ab12bdca36'/>
<id>urn:sha1:aa42cd41612c369a32bb6849fd6724ab12bdca36</id>
<content type='text'>
This commit speeds up the tests in `tor-dirserver` by using
functionality from Tokio's `test-util`.

Most notably, it runs the time intensive test in paused mode, which
means that the clock gets advanced either explicitly or implicitly using
auto-advance in case the runtime has nothing to do.

In our case, the last one, auto-advancing, is used, leading to our
sleep calls returning immediately.

This is good enough for testing in this module.  It is not the
responsibility of tor-dirserver to ensure whether `RetryDelay` returns
proper values, as this is the responsibility of `tor-basic-utils`.

Still, it is a bit unfortunate that Tokio offers no way to manually
disbale the auto-advancing.  In the future, it might be useful to
migrate more parts of this to crate to `tor-rtcompat`, but for now, this
change is a good enough performance fix.
</content>
</entry>
<entry>
<title>tor-dirserver: Remove slow ineffective test</title>
<updated>2026-01-14T16:37:25Z</updated>
<author>
<name>Clara Engler</name>
<email>cve@cve.cx</email>
</author>
<published>2026-01-14T14:43:47Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=ed8492816e0c86eade94f4df3ccf574990de3eda'/>
<id>urn:sha1:ed8492816e0c86eade94f4df3ccf574990de3eda</id>
<content type='text'>
This commit removes `mirror::download::test::request_fail_timeout` which
takes more than five seconds (due to a timeout) and is generally
ineffective in what it does, because testing whether a task is still
sleeping after a certain time is not super trivial with the tools Tokio
offers.

All this test offers is testing that we enter a timeout at all.
</content>
</entry>
<entry>
<title>fix(download): Use push_timed with mockable time sources</title>
<updated>2025-12-17T18:07:17Z</updated>
<author>
<name>Nihal</name>
<email>4218-nihalxkumar@gitlab.torproject.org</email>
</author>
<published>2025-12-17T18:06:13Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=11d2a7e3e12c4192b49b807f211f924ac9855094'/>
<id>urn:sha1:11d2a7e3e12c4192b49b807f211f924ac9855094</id>
<content type='text'>
</content>
</entry>
<entry>
<title>tor-dirserver: Document nested round-robins</title>
<updated>2025-12-10T11:20:13Z</updated>
<author>
<name>Clara Engler</name>
<email>cve@cve.cx</email>
</author>
<published>2025-12-09T15:22:39Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=53d620aab51e40f225db4d9c1dd2ebe7187d4e22'/>
<id>urn:sha1:53d620aab51e40f225db4d9c1dd2ebe7187d4e22</id>
<content type='text'>
</content>
</entry>
</feed>
