summaryrefslogtreecommitdiff
path: root/crates/tor-dirmgr/src
Commit message (Collapse)AuthorAgeFilesLines
* clippy: deny `mod_module_files`Steven Engler2025-01-061-0/+1
| | | | | | Denies 'mod.rs' files for consistency. https://rust-lang.github.io/rust-clippy/master/index.html#mod_module_files
* add_warnings, *: Allow clippy::needless_lifetimesNick Mathewson2024-12-031-0/+1
| | | | | | | | In 1.83, this warning triggers on many of our crates. We're thinking of fixing them all, but for now, we're going to disable the warning. This is part of #1765.
* TimerangeBound: Stop using std::ops::Bound.Wesley Aptekar-Cassels2024-11-252-7/+5
| | | | Fixes: #1691
* tor-dirmgr: don't support changing `DirMgrConfig::cache_trust`Steven Engler2024-11-052-0/+5
| | | | | `DirMgrConfig::update_from_config` uses the old value and not the new value, so it should be reported using `Reconfigure::cannot_change`.
* Replace _ => panic!() elsewhereIan Jackson2024-10-151-1/+1
|
* Upgrade to derive_more version 1.0.0Nick Mathewson2024-09-252-5/+5
| | | | | | The `derive_more` crate broke backward compatibility with this version, so this change involved quite a few manual fixups. With luck, they'll keep compatibility for some while in the future.
* rtcompat: Add an extension trait for building modified RuntimesNick Mathewson2024-09-241-2/+3
| | | | | | | With this extension trait, we no longer need to construct `CompoundRuntime` directly outside of tor-rtcompat. This in turn will make it a little less painful when we have to add more generics to CompoundRuntime.
* Fix typosDimitris Apostolou2024-09-031-1/+1
|
* extract tor_async_utils::oneshot into ::oneshot-fused-workaroundJim Newsome2024-08-282-2/+2
| | | | | | | | | | | | | | Having this in the `tor-async-utils` crate prevents us from doing both of the following without introducing a circular dependency: * using it in `tor-rtmock` (which we currently do, particularly in tests). * using `tor-rtmock` to test things in `tor-async-utils`. We don't do this yet, but it is generally sensible to do so. In particular we want to move the `stream_peak` module there, which is currently tested with `tor-rtmock`. Moving this into its own crate avoids this circular dependency.
* Merge branch 'sqlite-race' into 'main'gabi-2502024-07-312-9/+62
|\ | | | | | | | | | | | | tor-dirmgr: Return an error if storage is readonly and DB is missing/incompatbile. Closes #1497 See merge request tpo/core/arti!2283
| * tor-dirmgr: Replace from_conn impl with a call to from_conn_internal helper.Gabriela Moldovan2024-07-301-7/+16
| |
| * tor-dirmgr: Return an error if storage is readonly and DB is ↵Gabriela Moldovan2024-07-302-14/+58
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | missing/incompatbile. This fixes a bug in `SqliteStore`'s constructor: previously, it would unconditionally try to create the missing database, even if it didn't have write access. As a result, it was impossible to reliably start multiple concurrent arti processes configured with the same (empty or nonexistent) cache_dir, because many of them would fail with errors such as ``` attempt to write a readonly database: Error code 8: Attempt to write a readonly database ``` Returning a `LocalResourceAlreadyInUse` error kind here enables us to leverage the retry loop from `TorClientBuilder::create_unbootstrapped` (which retries on local resource errors if `local_resource_timeout` is set). Closes #1497
* | tor-dirmgr: Use Path::try_exists() instead of Path::exists().Gabriela Moldovan2024-07-301-1/+1
|/
* tor-dirmgr: Deprecate Error::CachePermissions, use CacheAccessIan Jackson2024-07-101-1/+12
|
* tor-dirmgr: Correct message and description for mistrust errorIan Jackson2024-07-101-2/+4
|
* tor-dirmgr: Add some duplicate dead code allowsIan Jackson2024-07-082-2/+4
| | | | Sadly, rustc seems to want us to mark this allow in several places.
* Merge branch 'tolerate_missing_blob' into 'main'Nick Mathewson2024-06-181-23/+161
|\ | | | | | | | | | | | | dirmgr::storage: Treat a missing blob file as an absent object. Closes #1466 See merge request tpo/core/arti!2200
| * sqlite: (style) Use consistent casing on "ExtDocs"Nick Mathewson2024-06-181-2/+2
| | | | | | | | SQL is case-insensitive, but it is still nice to be consistent.
| * storage: Remove orphaned files from dir_blobsNick Mathewson2024-06-121-0/+117
| | | | | | | | | | | | | | | | | | | | This patch removes files from dir_blobs if they are not referenced from the database, or if their filenames are not valid UTF-8. (If they were not valid UTF-8, we wouldn't have put them in our database.) To ensure that there can't be any race conditions, we only do this when the file is a bit old.
| * dirmgr: create temporary testing stores with correct paths.Nick Mathewson2024-06-121-3/+3
| | | | | | | | | | Previously, we were putting an (optional) db.sql file and our blobs into the same path, which is not what we do outside of our tests.
| * dirmgr::storage: Enable foreign keys on our sqlite connections.Nick Mathewson2024-06-121-0/+4
| | | | | | | | | | | | Without this, "ON DELETE CASCADE" will do nothing. Part of fixing #1466.
| * dirmgr::storage: Treat a missing blob file as an absent object.Nick Mathewson2024-06-121-19/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously it was counted as a hard error, which would cause an absolute failure to start if a blob file had been deleted improperly -- for example, by a renegade cache-cleaner that had decided to remove the largest files it could find. Upon encountering a missing blob, we remove it from the database as well: if we did not, then unavailable consensuses could still cause us to try to fetch consensus diffs, because their rows would still be present. Fixes #1466.
* | dirmgr: Limit the number of mds that we will fetch from sqlite at once.Nick Mathewson2024-06-121-6/+14
| | | | | | | | | | | | This should help limit our memory usage when restarting from cache. Possible (imperfect) solution for #1027.
* | dirmgr: split out the loading part of load_once into a new function.Nick Mathewson2024-06-121-6/+17
|/
* dirauth: Add new faravahar authorityDavid Goulet2024-05-301-1/+2
| | | | | | | Related to C-tor MR: https://gitlab.torproject.org/tpo/core/tor/-/merge_requests/819 Signed-off-by: David Goulet <[email protected]>
* DirMgr: Clarify dead_code status on storage methods.Nick Mathewson2024-05-141-2/+5
| | | | | | | | | Per comments on #1383, we're keeping these methods. This commit replaces the "TODO" comments with comments explaining why it's okay that this methods are unused. Part of #1383.
* Use the right feature name for an allow(dead_code).Nick Mathewson2024-05-071-1/+1
|
* Re-run maint/add_warning.Nick Mathewson2024-05-061-2/+2
| | | | This commit is automatically generated.
* properly report bootstrap readiness without cachetrinity-1686a2024-04-291-0/+3
|
* Mark tor_dirmgr::storage::Store::consensus_by_meta cfg(test)Ian Jackson2024-04-252-0/+2
| | | | This seems to be used only in tests, since at least 2022.
* Add temporary allows for some dead code warningsIan Jackson2024-04-251-0/+2
|
* dirmgr: Use contains_key in check.Nick Mathewson2024-04-221-1/+1
|
* dirauth: New tor26 v3 identityDavid Goulet2024-04-091-1/+1
| | | | | | | C-tor commit for this change: e3e4fa35e8b9368ac549db4da3240aba1ee3054e Signed-off-by: David Goulet <[email protected]>
* tor-rtcompat: CompoundRuntime: Add a CoarseTimeProvider, and implIan Jackson2024-03-251-1/+1
| | | | | | In all the uses in-crate, this is just a RealCoarseTimeProvider. Now all the compound runtimes impl CoarseTimeProvider.
* Run maint/add_warning.Nick Mathewson2024-03-1312-0/+12
|
* Fix typos in doc commentsTobias Stoeckmann2024-03-062-2/+2
|
* deny clippy::unchecked_duration_subtractiontrinity-1686a2024-02-291-0/+1
|
* Upgrade to latest event-listenerNick Mathewson2024-02-261-1/+1
|
* educe: Use std's default for enums where default variant is unitIan Jackson2024-02-121-3/+2
| | | | | | | | | | | | | Since Rust 1.66, std's default works properly for enums, provided that the default variant is a unit. Review all uses of `#[educe(default)]` on enums and replace them with std where possible, which is most of them. In 1.66 and later, std's `#[derive(Default)]` doesn't infer any generic bounds on the derived impl, where it's an enum - since the unit variant can always be constructed. So this change doesn't add any generic bounds and is not API-visible.
* clippy: Use Result::cloned in several placesIan Jackson2024-01-311-1/+1
|
* tor-dirmgr: Simplify a clone call (fmt)Ian Jackson2024-01-311-3/+1
|
* tor-dirmgr: Simplify a clone callIan Jackson2024-01-311-2/+1
| | | | Prompted by clippy.
* dirmgr: Make the `dir_mgr_config` method publicEmil Engler2024-01-091-2/+2
| | | | | | | | | | | This commit makes the `dir_mgr_config` method of the `TorClientConfig` struct public. It might be questionable whether we should make this function public or switch to a `TryInto` trait in general, which also seems like an even Rustier solution Rustier solution. Fixes #1175
* clippy nightly: For now, locally allow implied_bounds_in_implsIan Jackson2024-01-021-0/+2
| | | | | | Filed https://gitlab.torproject.org/tpo/core/arti/-/issues/1177 proposing a final fix.
* clippy nightly: For now, locally allow blocks_in_conditionsIan Jackson2024-01-021-0/+1
| | | | | | Filed https://gitlab.torproject.org/tpo/core/arti/-/issues/1176 proposing a final fix.
* clippy: Replace many calls to .get(0) with .first()Ian Jackson2024-01-021-1/+1
| | | | | FTR I don't think agree with clippy on this question, but then I often don't.
* tor-persist: Provide FsMistrustErrorExt, and use itIan Jackson2023-12-131-7/+2
| | | | | | | | | | | | | This code needs fs_mistrust::Error and tor_error::ErrorKind. I think we probably don't want fs_mistrust to depend on tor_error or vice versa. tor_persist is approximately the place where these two threads of thought come together, and it's currently the lowest place where this is needed. Use it in tor-dirmgr too, which is currently the other place that embodies this knowledge about fs_mistrust::Error.
* tor-dirmgr: Rename DirMgrConfig.cache_path to cache_dirIan Jackson2023-12-043-9/+9
| | | | | | This variable contains precisely the value of cache_dir from arti_client::config::StorageConfig and it should therefore have the same name.
* oneshot: Apply deferred rustfmt churnIan Jackson2023-10-111-1/+1
| | | | cargo fmt, precisely.
* oneshot: Use veneer in tor-dirmgrIan Jackson2023-10-112-2/+3
|