summaryrefslogtreecommitdiff
path: root/tor-dirmgr/src/lib.rs
Commit message (Collapse)AuthorAgeFilesLines
* Fix some warnings about needless & from nightly clippyNick Mathewson2021-06-181-1/+1
|
* Add noop_method_call warning.Nick Mathewson2021-05-271-0/+1
| | | | | | This would have saved ahf and me a lot of confusion in debugging a situation where we were cloning a reference of a type that didn't implement Clone.
* Enable cargo_common_metadata warning.Nick Mathewson2021-05-251-0/+1
|
* Module docs for remaining cratesNick Mathewson2021-05-251-1/+7
|
* Add the "unreachable_pub" lint.Nick Mathewson2021-05-181-0/+1
| | | | | | This is a somewhat obnoxious change in its scope and requirements, but it makes it easier to understand what the real public and private parts of our APIs are.
* Always capitalize as RouterDesc, Microdesc.Nick Mathewson2021-05-181-4/+4
|
* Consistency, renaming, and testing for dirmgrconfigNick Mathewson2021-05-141-1/+1
|
* Rename NetDirConfig to DirMgrConfig.Nick Mathewson2021-05-141-7/+7
|
* Add builders for remaining config types in tor-dirmgr.Nick Mathewson2021-05-141-1/+4
|
* Fix some warnings from nightly clippyNick Mathewson2021-05-071-2/+2
|
* Repair multiprocess collaborative directory download.Nick Mathewson2021-05-031-1/+3
|
* Add trait_duplication_in_bounds warning.Nick Mathewson2021-05-031-0/+1
|
* Add unseparated_literal_suffix lint, and fix it.Nick Mathewson2021-05-031-0/+1
|
* Add a few more clippy warningsNick Mathewson2021-05-031-0/+5
|
* Add some more clippy warnings to our list.Nick Mathewson2021-04-271-1/+6
|
* Enforce (and obey) clippy lints about exhaustive enums, structs.Nick Mathewson2021-04-271-0/+3
| | | | | | | | These lints force us to declare our exported enums and exhaustive-looking structs as non-exhaustive (so that we can add to them in the future without breaking our API) or to explicitly disable the warning for a given enum/struct (to say that we _intend_ for additions to be a breaking change).
* Fix some broken rustdoc links.Nick Mathewson2021-04-181-1/+1
|
* Move timer functions into an extension trait.Nick Mathewson2021-04-171-3/+2
|
* Move around the public modules in tor_rtcompat.Nick Mathewson2021-04-171-1/+1
|
* Remove all non-runtime methods in tor_rtcompat.Nick Mathewson2021-04-161-15/+30
|
* Add a "Runtime" parameter to all the manager types.Nick Mathewson2021-04-161-8/+9
| | | | | This is a big change, but it is a step towards our goal of removing tor_rtcompat:: calls directly.
* Move the "sleep()" function from task to timer.Nick Mathewson2021-04-161-2/+2
|
* Major revision on DirMgr logic -- almost a complete rewrite.Nick Mathewson2021-04-131-887/+223
| | | | | | | | The big idea of this revision is to separate the code that knows about doing downloads from the code that decides what to download. Later, we can make a similar change for database access. With these changes together, we can make our code much more testable, and eventually enable more download types in parallel.
* Start moving responsibility for building requests into dirmgrNick Mathewson2021-04-091-1/+79
| | | | This will help with my planned "directory state" refactoring.
* DirMgr::netdir() is no longer asyncNick Mathewson2021-04-021-11/+8
| | | | | | | | Since we moved to a non-async mutex(*), we no longer need to worry that this function might need to suspend. (*) This is _not_ safe in general, but it's okay in this case, since we never suspend while holding that mutex: see shared_ref.rs.
* Turn the shared network directory reference into its own typeNick Mathewson2021-04-021-27/+13
| | | | | | Doing this will make it easier to use it from other parts of the crate, and will make it more obvious that it's safe to use a regular (not async) rwlock here.
* Make ConsensusRequest take a flavor.Nick Mathewson2021-04-011-1/+2
|
* Add accessors for members of different directory requestsNick Mathewson2021-04-011-3/+3
| | | | | | | | This will let us use these types both as client and server-side implementations. Making this change required me to change the download code to take requests by reference. (Sorry, David)
* DirMgr: add text() and texts() functions to ask for document textNick Mathewson2021-03-311-3/+80
| | | | | Also, start on a larger refactoring where we ask for documents by their ID.
* Refactor sqlite.rs to know about consensus flavors.Nick Mathewson2021-03-311-4/+4
| | | | | These were stored in the database before, but they were hardwired in the API.
* Use Arc::make_mut() to simplify the code a bitNick Mathewson2021-03-301-7/+11
| | | | | Previously we used NetDir::extend here, which used try_unwrap. But it's much simpler to use the intended object for this purpose.
* Fix Rust-1.51 clippy warnings about acronyms in camel case.Nick Mathewson2021-03-291-8/+8
| | | | This is painful, but we shouldn't have to do it again.
* DirMgr: cooperative multiprocess support.Nick Mathewson2021-03-291-33/+99
| | | | | | | | | | | | | | A directory manager can now launch or run in read-only or read-write mode, depending on whether it manages to acquire a lock on the filesystem. In read-write mode, it bootstraps and stores data into the database as usual. In read-only mode, it assumes that another process will be updating the database, and so it only loads it periodically, looking for new information. However, it also tries to acquire the lock itself, so it can enter read-write mode.
* Create a DirMgr::load_or_bootstrap_from_config.Nick Mathewson2021-03-291-0/+16
|
* Add DirMgr::load_once.Nick Mathewson2021-03-291-0/+25
| | | | | This function loads a current bootstrapped directory from disk, if it can.
* Use the CircMgr in the DirMgr for all our downloading needs.Nick Mathewson2021-03-291-15/+18
|
* Make CircMgr an optional element of DirMgr. Not yet used.Nick Mathewson2021-03-291-3/+15
|
* Avoid unwrap() in dirmgrNick Mathewson2021-03-041-2/+7
|
* Make first-level directory retry logic configurable.Nick Mathewson2021-02-171-16/+17
|
* Make our initial bootstrap retry schedule configurarableNick Mathewson2021-02-171-5/+5
|
* Add support to override network parameters in the configuration.Nick Mathewson2021-02-161-1/+1
|
* Make authorities and fallbacks configurable.Nick Mathewson2021-02-111-1/+1
| | | | | | | | | | This commit adds configuration options for these values, with the right defaults, and uses those options instead of built-in functions to set them. We also remove the function to extract information from chutney directories: now that arti is configurable, it can be chutney's job to make its own network configurations.
* Check declared post-digest on consensus diffs.Nick Mathewson2021-01-251-5/+6
|
* Don't give up easily on initial bootstrap attempts.Nick Mathewson2021-01-251-7/+14
|
* Resolve a few more XXX-A1 comments in dirmgr.Nick Mathewson2021-01-251-18/+29
|
* dirmgr: fix usage and meaning of `pending`.Nick Mathewson2021-01-251-3/+3
| | | | | The documentation and implementation diverged; the documentation was correct.
* Detect consensuses that are signed by the wrong authorities.Nick Mathewson2021-01-251-0/+32
| | | | | | | | | | | | With this patch we don't consider a consensus to be even potentially well-signed if the authorities that are listed as signing it don't contain enough authorities we believe in. Otherwise, we'd just try fetching certs for them and failing forever. (I found this by switching from a chutney network to the main network without cleaning out my cache.) Closes #44
* dirmgr: Extra explanatory comments.Nick Mathewson2021-01-251-3/+23
| | | | Also replace some "disk" with "cache" in log messages
* dirmgr: Handle another error in download_mds().George Kadianakis2020-12-231-8/+12
| | | | Co-authored-by: David Goulet <[email protected]>
* dirmgr: Handle some errors in download_mds().George Kadianakis2020-12-231-3/+8
| | | | Co-authored-by: David Goulet <[email protected]>