Commit Graph

3183 Commits

Author SHA1 Message Date
Ian Jackson 20d61dd4d4 DirMgrConfig: Rename two fields that contained a _config
This entire struct is config.  This is otiose.
2022-04-26 15:29:33 +01:00
Ian Jackson d2cc0aa50a Document breaking changes to DownloadSchedule etc. 2022-04-26 15:19:52 +01:00
Ian Jackson ed71858123 DownloadSchedule: Rename field to "attempts"
This is actually a number of *attempts* not a number of *retries*.
The setter method was already called "attempts".

This chnages the deserialisation of the config.
2022-04-26 15:16:32 +01:00
Ian Jackson cb303cefb3 DownloadSchedule: Abolish accessors in DownloadScheduleConfig
We can just make the fields pub(crate).
2022-04-26 15:16:32 +01:00
Ian Jackson eb35555330 DownloadSchudule: Have NetworkConfig contain Builders
Use sub_builder.  We must do something special for defaults.

This involves moving the actual default values for retry_bootstrap and
retry_microdescs into config.rs, since they need to access the fields
of the un-built version of the structure.  (An alternative would be to
generate "weak setters" which do not override previous settings, but
derive_builder does not offer to generate them and that seems
overkill.)
2022-04-26 15:16:32 +01:00
Ian Jackson f4a1e34bee DownloadSchedule: Abolish new() method
Instead, everyone should use DownloadScheduleBuilder.

The new() method would in any case be useless in a moment, since we're
going to embed DownloadScheduleBuilder in the NetworkConfig, not
DownloadSchedule.

The call sites in the tests are all about to change again.
2022-04-26 15:16:32 +01:00
Ian Jackson e1d1fe6569 DownloadSchedule: tests: Do not try to set parallelism to 0
The current behaviour is to treat 0 as indicating "use the default",
which is quite strange.  We are going to get rid of that.

The new way will be to reject zero, during
DownloadScheduleBuilder::build, Add a test case for that.
2022-04-26 15:16:03 +01:00
Ian Jackson a720205d35 DownloadSchedule: Provide builder 2022-04-26 15:16:03 +01:00
Nick Mathewson c1ea419477 Merge branch 'main' into 'msrv_1_56'
# Conflicts:
#   crates/tor-config/Cargo.toml
#   crates/tor-dirmgr/src/state.rs
#   doc/semver_status.md
2022-04-26 12:45:16 +00:00
Nick Mathewson ed1f5abe20 Merge branch 'config-sub-list' into 'main'
Introduce macro for ThingListBuilder, and use for AuthorityListBuilder

See merge request tpo/core/arti!471
2022-04-26 12:26:16 +00:00
Ian Jackson c529d6cd06 Merge branch 'abstime-sum' into 'main'
retry-error: Provide AbsRetryTime::from_sub and use it

See merge request tpo/core/arti!470
2022-04-25 18:23:03 +00:00
Ian Jackson 15dd7cbdd3 AbsRetryTime::from_sum: Provide a test case
As requested in
  https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/470#note_2798015
2022-04-25 18:39:11 +01:00
Ian Jackson 2d9b50540d AbsRetryTime::from_sum: Add missing full stop
As per
  https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/470#note_2797945
2022-04-25 18:37:14 +01:00
Nick Mathewson d1fcd3eeae Update semver_status to note that all crates have had a breaking change. 2022-04-25 13:31:06 -04:00
Ian Jackson e81d215787 list-builder: Provide tests of all methods
Because the macro output is private, if we miss one out of the tests,
it doesn't fail due to dead code :-).
2022-04-25 18:24:28 +01:00
Ian Jackson c71046294b list_builder: Allow the struct to not be pub
Really, we probably don't want any of these not to be pub, but it
triggers "unreachable pub" in my test cases, and making it not pub by
mistake seems not very serious, and likely to be noticed.

Making the struct private in the test cases has the useful effect of
checking that all the methods are tested.
2022-04-25 18:24:06 +01:00
Ian Jackson 83b9fbea99 list_builder: Use $crate namespaced imports
I don't think we need to bother with things in the prelude,
but doing it for serde and ConfigBuildError seems nice.

Noticed while writing a test case.
2022-04-25 18:23:02 +01:00
Ian Jackson ce877e4421 Document defaults for all the config lists
And add an imprecation in define_list_config_builder's doc comment do
do so in future for other invocations of the macro.

Add add the missing full stops.
2022-04-25 18:22:54 +01:00
Ian Jackson bb81a412ea define_list_config_builder: Provide example of item_build
As per
  https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/471#note_2798027
2022-04-25 18:20:21 +01:00
Ian Jackson bfd0e48a5c define_list_config_builder: Expand generated docs for methods etc.
Requested in
  https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/471#note_2798022
2022-04-25 18:20:21 +01:00
Ian Jackson 3f44078227 Add semver note about added macros in tor-condfig 2022-04-25 18:19:03 +01:00
Ian Jackson f6506721ab Add semver notes for AuthorityListBuilder, PredictedPortsListBuilder
These were omitted in the earlier commits.
2022-04-25 18:15:25 +01:00
Ian Jackson 8664766270 Rename macro_first_nonempty (from macro_coalesce_args)
As per
  https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/471#note_2798026
2022-04-25 18:15:25 +01:00
Ian Jackson 1f215da1a3 Rename ThingListBuilder::replace (from set)
As per
  https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/471#note_2798024
2022-04-25 18:15:25 +01:00
Nick Mathewson 2f6bc6bdc4 squash! Bump every crate's edition to 2021.
Remove all `use` statements for `TryFrom` and `TryInto`.  These are
now redundant in Rust 2021.
2022-04-25 13:06:26 -04:00
Nick Mathewson b60b0a266a Bump every crate's edition to 2021.
This is an automated change made with a perl one-liner and verified
with grep -L and grep -l.

Some warnings are introduced with this change; they will be removed
in subsequent commits.

See arti#208 for older discussion on this issue.
2022-04-25 13:05:31 -04:00
Nick Mathewson ca05b0904c Add 'rust-version = "1.56"' to every Cargo.toml file.
This change was made automatically with a perl one-liner, and
confirmed with `grep -L`.

The `rust-version` field itself was introduced in 1.56.0.
2022-04-25 13:04:31 -04:00
Nick Mathewson 0069fd2206 Reformat all not-yet-reformatted Cargo.toml files.
There are no semantic changes here; only formatting.  This is in
preparation for other changes (wrt MSRV and edition)
2022-04-25 13:04:31 -04:00
Nick Mathewson 6f3f351140 Increase our MSRV to 1.56.
Our support policy says that we can update to any Rust released at
least 6 months ago; 1.56 came out on 21 October 2021.

This doesn't yet change any code: it just increases the version
we say we need in our README, and the version we test against in
CI.

Our main justification for this change is to be able to upgrade to
newer versions of our dependencies, including `async_executors` >=
0.5, `aes` >= 0.8, and `cipher` >= 0.4.
2022-04-25 13:03:31 -04:00
Ian Jackson dca4f3ede1 Use better syntax for doc comment attribute
As per
  https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/471#note_2798020
2022-04-25 17:05:30 +01:00
Ian Jackson 24518675db Introduce PredictedPortsListBuilder
This means that `NetworkConfig::initial_predicted_ports` is now like
the other list-like things, returning `&mut list_builder` with the same
`set()` and `append()` methods.
2022-04-25 17:05:30 +01:00
Ian Jackson 961f6b527e config list-builder: Allow overriding the per-item build method
This will be useful especially for simple lists where the entry
doesn't need a separate builder type.
2022-04-25 17:04:23 +01:00
Ian Jackson d98d7a60bd macro_coalesce_args: New helper macro 2022-04-25 17:04:05 +01:00
Ian Jackson 4ad9e5e4b0 Introduce AuthorityListBuilder in NetworkConfigBuilder
NetworkConfigBuilder needs to not contain any validated structs, so
that its serde does not expose the validated details.

AuthorityListBuilder is what ought to go here - and it contains
Vec<AuthorityBuilder>, not Vec<Authority>.  As a consequence, many
places now deal with AuthorityBuilder, rather than Authority.
2022-04-25 12:54:51 +01:00
Ian Jackson 166af2c3f6 Fix error return type of AuthorityBuilder 2022-04-25 12:41:39 +01:00
Ian Jackson 0036b91662 Introduce define_list_config_builder macro
This replaces two almost-identical sets of structs and impls.  More
are on the way, as per
  https://gitlab.torproject.org/tpo/core/arti/-/issues/447
2022-04-25 12:41:00 +01:00
Ian Jackson 62aa071998 logging: Drop a pointless .within() call
Since "logfiles: Introduce LogfileListConfigBuilder", this code is in
LogfileListConfigBuilder::build(), which is called by derive_builder's
generated LoggingConfig::build(), and which will add a file context
itself due to the `sub_builder` feature.

So this is otiose.  And, we are about to replace this whole thing with
macro_rules-generated code (which won't do this).
2022-04-25 12:38:36 +01:00
Ian Jackson 144f886e72 Merge branch 'integers' into 'main'
Better handling of integer overflows

See merge request tpo/core/arti!466
2022-04-25 09:50:12 +00:00
Ian Jackson 07de58370e retry-error: Provide AbsRetryTime::from_sub and use it
This same calculation was in the code three times.
2022-04-25 10:42:52 +01:00
Ian Jackson 0d4c53bb2d Merge branch 'experimental-v3ident-public' into 'main'
Authority: make v3ident public under experimental-api

See merge request tpo/core/arti!463
2022-04-25 09:31:05 +00:00
Ian Jackson 174883ee6d Merge branch 'fix-typos' into 'main'
Fix typos bothering rust-nightly pipeline

See merge request tpo/core/arti!464
2022-04-25 09:27:50 +00:00
Ian Jackson 96fdaa7934 Merge branch 'test' into 'main'
tor-basic-utils: Add RetryDelay::reset test

See merge request tpo/core/arti!467
2022-04-25 09:25:23 +00:00
Ian Jackson 28c9be1283 Merge branch 'type-skewestimate' into 'main'
fix typo in doc

See merge request tpo/core/arti!469
2022-04-25 09:23:52 +00:00
trinity-1686a b9dd23de91 fix typo in doc 2022-04-25 00:27:29 +02:00
Samanta Navarro 77653608d6 tor-error: Handle integer overflows
If duration addition overflows, then continue with Never.

Caching the AbsRetryTime constructed with duration from supplied
function also reduces the overhead of earliest_absolute.
2022-04-23 13:33:00 +00:00
Samanta Navarro f0bc1b6649 retry-error: Handle integer overflow
In theory n_errors could overflow, which is an error in Rust.
The check is cheap and I have added a test for it.
2022-04-23 13:32:27 +00:00
Samanta Navarro d3b1a93474 tor-basic-utils: Add RetryDelay::reset test 2022-04-23 12:04:15 +00:00
Christian Grigis 349b5497a5
Fix typos bothering rust-nightly pipeline 2022-04-22 19:53:31 +02:00
Christian Grigis 08bce9b6db
Authority: make v3ident public under experimental-api 2022-04-22 19:33:36 +02:00
eta a566f82d40 Merge branch 'config-sub' into 'main'
Replace much handwritten config code with use of derive_builder

See merge request tpo/core/arti!462
2022-04-22 17:15:27 +00:00