| Commit message (Collapse) | Author | Age | Files | Lines |
| | |
|
| | |
|
| |
|
|
|
|
| |
So now .arti_pattern() is a trait method.
arti#1151 item 3.
|
| |
|
|
|
|
|
|
| |
This is a better API. The implementation has less monomorphisation.
arti#1151 item 2 and the patterns part of 4.
Closes #1126.
|
| |
|
|
|
|
| |
Filed
https://gitlab.torproject.org/tpo/core/arti/-/issues/1176
proposing a final fix.
|
| |\
| |
| |
| |
| |
| |
| | |
tor-netdoc: Make HsDescBuilder::auth_clients take an Option.
Closes #1019
See merge request tpo/core/arti!1840
|
| | |
| |
| |
| | |
Closes #1019
|
| |/ |
|
| |\
| |
| |
| |
| | |
Clear away some misc todos in tor-hsservice.
See merge request tpo/core/arti!1819
|
| | | |
|
| | | |
|
| |\ \
| | |
| | |
| | |
| | | |
tor-hsservice: If the error is fatal, do not retry the desc upload.
See merge request tpo/core/arti!1821
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
The errors returned by `upload_all` are now all fatal, so we there is no
point in retrying `upload_all` on failure.
Note this will exacerbate #1155, as it will cause the seemingly
transient time skew issues to become fatal (the corresponding error type
is `Bug`, so in principle they ought to be fatal)
|
| | | | |
|
| | | | |
|
| | | | |
|
| |/ / |
|
| | | |
|
| | | |
|
| | | |
|
| | |
| |
| |
| |
| |
| |
| | |
The publisher now returns `FatalError`s, so we don't need `ReactorError`
anymore. Addresses a TODO HSS in publish/reactor.rs
Part of #1129
|
| | | |
|
| | | |
|
| | | |
|
| | |
| |
| |
| |
| |
| |
| |
| | |
The publisher logs a nice `info!` message when it receives the shutdown
signal. The publisher can infer that the service is shutting down from
the errors received on its various receiver channels (i.e. from the
errors that suggest the sender was dropped), but listening for the
shutdown signal is nicer.
|
| | |
| |
| |
| |
| | |
This moves us one step closer to removing ReactorError in favour of
FatalError (see the TODO HSS above ReactorError for more details).
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Previously, this would return `ReactorError::PublishFailure` if the
upload failed. However, that error wasn't used for anything other than
logging.
Instead of returning the error, we now log it inside
`upload_descriptor_with_retries` and return an `UploadStatus` describing
the upload outcome. This will enable us to abolish
`ReactorError::PublishFailure` (and eventually replace `ReactorError`
with `FatalError`).
|
| |/
|
|
|
| |
The failure to build a descriptor out of seemingly valid parts is an
internal (irrecoverable) error.
|
| | |
|
| | |
|
| |
|
|
| |
This line is too long.
|
| |
|
|
|
| |
We already log the outcome of the HsDir upload in the function that
calls this code.
|
| |
|
|
| |
This also wraps the line.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously, it was possible for the `IptPublishSet` used to generate the
descriptor and the `IptPublishSet` `note_publication_attempt` to
differ. Now, the publisher generates the descriptor using the same
`IptPublishSet` it calls `note_publication_attempt` on.
Note that as a consequence, the publisher generates a new descriptor
just before _each_ HsDir upload. This means each HsDir could, in theory,
receive a different descriptor (not just in terms of revision-counters,
but also with a different set of IPTs). It may seem like this could lead
to some HsDirs being left with an outdated descriptor, but that's not
the case: after the upload completes, the publisher will be notified by
the ipt_watcher of the IPT change event (if there was one to begin
with), which will trigger another upload job.
Previously, the publisher would only generate a single descriptor for
each time period (all HsDirs in a given time period would receive the
same descriptor).
Closes #1097
|
| |
|
|
|
|
| |
This was previously in `TimePeriodUploadResult`. We will soon have
different revision_counter for each `HsDirUploadResult`, so let's
preemptively move the field there.
|
| | |
|
| |
|
|
| |
We're going to need to clone it soon.
|
| |
|
|
|
|
|
|
| |
`generate_revision_counter` and `create_ope_key` don't use anything from
`self` other than `imm`, so they might as well be methods on
`Immutable`. This change is needed because we're soon going to need to
use `generate_revision_counter` from an associated `Reactor` function
(where we don't have `self`).
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The publisher doesn't reupload unless explicitly asked to do so by the
`IptManager` (via `await_update()`).
Also, when the consensus changes, we always trigger a reupload, but only
to those HsDirs that don't already have the descriptor (the HsDirs
marked as "clean" stay "clean", and any new HsDirs are marked "dirty"
until they get a copy of the descriptor. See !1806).
Similarly, a config change only triggers a reupload if the change means
we need to generate a new descriptor (e.g. if the `anonymity` of the
service changes). Note, however, that this logic is currently commented
out (it depends on #1028).
Closes #1131
|
| |
|
|
| |
Fixes a clippy lint.
|
| | |
|
| |
|
|
|
|
|
| |
This fixes a bug where the publisher wasn't preserving the
`DescriptorStatus` of its `HsDirs` when handling consensus changes.
The bug is described in more detailed in the TODO removed by this commit.
|
| | |
|
| |
|
|
| |
This is actually a `TimePeriodContext`.
|
| |\
| |
| |
| |
| |
| |
| | |
Improve KeySpecifier, errors, IptKeySpecifier impl, etc.
Closes #1116 and #1148
See merge request tpo/core/arti!1796
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This allows a principled implentation via Display. The alternative
would be to have runtime panics whenever someone uses
KeySpecifierComponentViaDisplayFromStr but the Display impl can
produce wrong syntax (that doesn't fit in an ArtiPathComponent).
Bug seems like the right error since implemnting KeySpecifierComponent
implies that every value is representable in an ArtiPathComponent.
|
| | | |
|