<feed xmlns='http://www.w3.org/2005/Atom'>
<title>mirrors/arti.git/crates/tor-dirserver/src/err.rs, branch arti-v2.1.0</title>
<subtitle>mirror of https://gitlab.torproject.org/tpo/core/arti
</subtitle>
<id>http://git.dilluti0n.com/mirrors/arti.git/atom?h=arti-v2.1.0</id>
<link rel='self' href='http://git.dilluti0n.com/mirrors/arti.git/atom?h=arti-v2.1.0'/>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/'/>
<updated>2026-01-22T16:25:15Z</updated>
<entry>
<title>tor-dirserver: Make compression failures a bug</title>
<updated>2026-01-22T16:25:15Z</updated>
<author>
<name>Clara Engler</name>
<email>cve@cve.cx</email>
</author>
<published>2026-01-21T17:53:24Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=bc59f1ef133eab5c70426388deb2bc95b8c6b8a4'/>
<id>urn:sha1:bc59f1ef133eab5c70426388deb2bc95b8c6b8a4</id>
<content type='text'>
This commit removes `DatabaseError::Compression` because it does not fit
in.  Right now, this single variant makes the error to be call-site
oriented which is not nice for error handling.  Instead, this error
should indicate that something was truly wrong with the database in
itself, such as an invalid schema, a low-level SQLite bug, etc.

Instead, we now map a compression error to `DatabaseError::Bug` because
there is no good reason on why it should fail, given that we compress
memory data to memory data.  Probably because it uses the
`std::io::Writer` interface which itself demands use of
`std::io::Result`.
</content>
</entry>
<entry>
<title>tor-dirserver: Implement authcert retrieval logic</title>
<updated>2026-01-15T10:49:44Z</updated>
<author>
<name>Clara Engler</name>
<email>cve@cve.cx</email>
</author>
<published>2025-12-18T13:48:37Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=61109d1b834cc8a3c5ca32c5011733ef2a25f6b8'/>
<id>urn:sha1:61109d1b834cc8a3c5ca32c5011733ef2a25f6b8</id>
<content type='text'>
This commit implements the logic necessary to retrieve the (missing)
directory authority certificates from an upstream directory authority.

In order to do so, this commit implements three new functions:
1. `download_authority_certificates()`
2. `parse_authority_certificates()`
3. `verify_authority_certificates()`
4. `insert_authority_certificates()`
</content>
</entry>
<entry>
<title>tor-dirserver: Support for inserting into store</title>
<updated>2026-01-15T10:49:12Z</updated>
<author>
<name>Clara Engler</name>
<email>cve@cve.cx</email>
</author>
<published>2025-12-18T11:51:01Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=2770569e0b23da07b543c0c9719e17beaf2e1162'/>
<id>urn:sha1:2770569e0b23da07b543c0c9719e17beaf2e1162</id>
<content type='text'>
This commit implements support for adding arbitrary documents into the
store table.

It is non-trivial because the relevant data has to be compressed into
various formats, so it can be retrieved without delays.
</content>
</entry>
<entry>
<title>tor-dirserver: Add doc for TcpConnect error</title>
<updated>2025-12-10T11:20:09Z</updated>
<author>
<name>Clara Engler</name>
<email>cve@cve.cx</email>
</author>
<published>2025-12-08T12:54:07Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=794b8a4fdac657b5eb6ff23c7fdc8bf1749c9a17'/>
<id>urn:sha1:794b8a4fdac657b5eb6ff23c7fdc8bf1749c9a17</id>
<content type='text'>
</content>
</entry>
<entry>
<title>tor-dirserver: Replace IO with TcpConnect error</title>
<updated>2025-12-10T11:20:07Z</updated>
<author>
<name>Clara Engler</name>
<email>cve@cve.cx</email>
</author>
<published>2025-12-08T11:45:49Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=35af7bc34a958c8ca8de028b0027a528ed12a612'/>
<id>urn:sha1:35af7bc34a958c8ca8de028b0027a528ed12a612</id>
<content type='text'>
This commit replaces `AuthorityCommunicationError::IO` with
`AuthorityCommunicationError::TcpConnect` while removing the respective
`From&lt;std::io::Error&gt;` implementation, mostly because an IO error is way
too generic and in our case, it would only occurr with a failed TCP
connection.
</content>
</entry>
<entry>
<title>tor-dirserver: Implement DownloadManager</title>
<updated>2025-12-10T11:20:05Z</updated>
<author>
<name>Clara Engler</name>
<email>cve@cve.cx</email>
</author>
<published>2025-11-03T13:49:16Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=f492b1bef61fa296450b93e020ea932cd106fe8a'/>
<id>urn:sha1:f492b1bef61fa296450b93e020ea932cd106fe8a</id>
<content type='text'>
This commit implements the DownloadManager in its own module, an object
responsible for downloading network documents from an upstream directory
authority.

Further motivation for this can be found in the rustdoc comment of the
respectively introduced type.
</content>
</entry>
<entry>
<title>tor-dirserver: Add SaturatingSystemTime</title>
<updated>2025-10-30T15:54:27Z</updated>
<author>
<name>Clara Engler</name>
<email>cve@cve.cx</email>
</author>
<published>2025-10-27T11:21:57Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=61a641e9b4b4932849e8aa212348a808d95a7033'/>
<id>urn:sha1:61a641e9b4b4932849e8aa212348a808d95a7033</id>
<content type='text'>
This commit changes various things in the dirmirror operation, namely
the use of a SystemTime wrapper type that provides saturation on both
ends.
</content>
</entry>
<entry>
<title>tor-dirserver: Make database full sync</title>
<updated>2025-10-30T15:53:27Z</updated>
<author>
<name>Clara Engler</name>
<email>cve@cve.cx</email>
</author>
<published>2025-10-20T14:33:31Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=b7dd6d4b7e230975347ec99c1db554498e2ace7e'/>
<id>urn:sha1:b7dd6d4b7e230975347ec99c1db554498e2ace7e</id>
<content type='text'>
This commit makes the entire database operations synchronous, thereby
replacing deadpool with r2d2.

The full motivation is outlined in a rustdoc comment at the top of the
`database` module, but it can be summarized to the fact that SQLite is
by design inherently synchronous due to directly interfacing with the
file system.
</content>
</entry>
<entry>
<title>tor-dirserver: Outline the dirmirror operation</title>
<updated>2025-10-30T15:53:27Z</updated>
<author>
<name>Clara Engler</name>
<email>cve@cve.cx</email>
</author>
<published>2025-10-14T11:50:49Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=ed0cfc6a7d8224e88ae9eb879226d52b472558a4'/>
<id>urn:sha1:ed0cfc6a7d8224e88ae9eb879226d52b472558a4</id>
<content type='text'>
This commit creates a function named `mirror::operation::serve`, that
will serve as the primary entry point for the dirmirror operation.

While the function itself already contains some logic, such as querying
the timeout to wait for the next consensus, it is largely a rustdoc
design document that adds lots of comment to the `mirror::operation`
module.
</content>
</entry>
<entry>
<title>tor-dirserver: Implement download timeout</title>
<updated>2025-10-30T15:53:25Z</updated>
<author>
<name>Clara Engler</name>
<email>cve@cve.cx</email>
</author>
<published>2025-10-01T14:08:02Z</published>
<link rel='alternate' type='text/html' href='http://git.dilluti0n.com/mirrors/arti.git/commit/?id=f59efc0b66e0a6e1301f8ef23a98345f78295abc'/>
<id>urn:sha1:f59efc0b66e0a6e1301f8ef23a98345f78295abc</id>
<content type='text'>
This commit starts work in the `mirror::operation` module by
implementing the functions for calculating the `Duration` to wait from a
given `SystemTime` until the point in time when the dirmirror should
download new documents from the authorities again.

Also, this commit introduces new error types and internal helper
functions in order to fulfill this purpose better.
</content>
</entry>
</feed>
