| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| | | | | |
|
| | | | |
| | | |
| | | |
| | | | |
This should give us better behavior if the network is slow.
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Now we have clearer-named constants for overall and individual
timeouts, and we use them in the right places.
Closes #1121.
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
These may need tuning eventually, but there's no reason to think
that we have a better guess now. (They don't correspond to anything
that C tor does, so we don't have that to guide us.)
Part of #1121; see there for some more discussion.
|
| |\ \ \ \
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Move state_dir to tor_persist and start to implement it
Closes #1205
See merge request tpo/core/arti!1913
|
| | | | | |
| | | | |
| | | | |
| | | | | |
It's not a runtime dep, in fact.
|
| | | | | | |
|
| | | | | | |
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
You can't call these yet and there aren't any tests. But this
demonstrates use of the previous refactoring.
|
| | | | | | |
|
| | | | | | |
|
| | | | | | |
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Before this, we would say the problem happened while accessing
Resource::File {
container: "STATE_DIR",
file: "KEY.json",
}
which would imply that we failed to access "STATE_DIR/KEY.json".
But that's not true: we *actually* access "STATE_DIR/state/KEY.json".
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Bring in the fslock-guard crate and replace the Void in the structs.
(Separated out since this contains Cargo.lock churn.)
|
| | |/ / /
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
And, instead of being a hidden module, it's a public experimental one.
I have feature-gated all the new dependencies since we probably want
to feature-gate this module in perpetuity, since some builds of Arti
won't need it.
Closes #1205
|
| |\ \ \ \
| | | | |
| | | | |
| | | | |
| | | | | |
tor-hsservice: Make the publisher update the `OnionServiceStatus`
See merge request tpo/core/arti!1902
|
| | | | | | |
|
| | | | | | |
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
The publisher status is obtained via `StatusSender` (rather than by
polling `Publisher::status()`).
Part of #1083
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Currently, the status of the `OnionService` is derived from the statuses
of its subcomponents. Their initial status will be `Shutdown`, so we
don't need to explicitly initialize it.
As for setting the status when `RunnionOnionService::launch` fails, I
don't think that's necessary: `launch()` returns an error on failure, so
the user will know about it (it doesn't need to watch the stream of
status events to find out it failed).
Part of #1083
|
| | | | | |
| | | | |
| | | | |
| | | | | |
This isn't something we need to do for #1083.
|
| | | | | | |
|
| | | | | | |
|
| | | | | | |
|
| | | | | | |
|
| | | | | |
| | | | |
| | | | |
| | | | | |
The new names are shorter and just as descriptive.
|
| | | | | | |
|
| | | | | | |
|
| | | | | | |
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
We need it to be public, because we're about to expose it in the
`OnionServiceStatus`.
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
We're about to report the inner error in the `OnionServiceStatus`
(without making `BackoffError` public).
|
| | | | | |
| | | | |
| | | | |
| | | | | |
They're not used anywhere, so let's remove them.
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
The key expiration status is only relevant if the service is running in
"offline mode", so these TODOs should be part of #1194.
|
| | | | | |
| | | | |
| | | | |
| | | | | |
This field is unused now that we have `ipt_mgr_state` and `publisher_state`.
|
| | | | | |
| | | | |
| | | | |
| | | | | |
Part of #1083
|
| | | | | |
| | | | |
| | | | |
| | | | | |
The publisher needs it to notify `OnionService` of status changes.
|
| | |/ / /
| | | |
| | | |
| | | |
| | | |
| | | | |
For updating the underlying component statuses of an `OnionServiceStatus.
Part of #1083
|
| |\ \ \ \
| |_|_|/
|/| | |
| | | |
| | | | |
tor-hsservice: Make offset_within_srv_period() work with timestamps from newer periods.
See merge request tpo/core/arti!1914
|
| | | | | |
|
| | |/ /
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
newer periods.
This fixes a bug where `offset_within_srv_period()` returns `None`,
instead of the offset of `when` from the start of the SRV of the
previous time period:
```
2024-01-24T15:24:46Z ERROR tor_hsservice::svc::publish::reactor: descriptor upload failed for HS service
allium-cepa2 and time period TimePeriod { interval_num: 19745, length: IntegerMinutes { value: 1440 },
epoch_offset_in_sec: 43200 }: error: Programming error: internal error (bug) at
/../arti/crates/tor-hsservice/src/svc/publish/reactor.rs:218:13: current wallclock time not within
SRV range?! (now=SystemTime { tv_sec: 1706109886, tv_nsec: 246572852 },
SRV_start=SystemTime { tv_sec: 1705968000, tv_nsec: 0 })
```
We need to be able to calculate this offset even if `now` is not within
the SRV range (because we upload the descriptor to the HsDirs of the
*previous* time period too).
Note a similar bug exited in `offset_within_period()` (which no longer
exists) too! That one was fixed in !1744:
```
Hidden services can have multiple "active" time periods for which they
generate descriptors. We need to be able to compute the offset of a
timestamp from the start of a given time period, even if that timestamp
falls within the "next" time period (for example, when publishing
descriptors for the "previous" time period, the `when` timestamp will
fall outside the `(start, end)` range of the "previous" time period).
```
|
| |\ \ \
| | |/
| |/|
| | |
| | |
| | |
| | | |
hsservice: Fix some errorkinds and related error handling issues.
Closes #1225
See merge request tpo/core/arti!1906
|
| | | |
| | |
| | |
| | |
| | | |
Also, change `keep_intro_established`'s return type to indicate that
it has no non-failing return cases.
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
We already have the NetDir in establish_intro_once, so we might as
well use it to get the intro-point details there.
This confirms that we will not need IptError::NoNetdir, since we
use wait_for_netdir in establish_intro_once.
|
| | | |
| | |
| | |
| | |
| | | |
This is not typically wrong, but it may become wrong if we do not
tidy up MissingHsIdKeypair in the future. The TODO now refers to
|
| | | |
| | |
| | |
| | | |
This is now #1255, which is not a MUST.
|
| | | |
| | |
| | |
| | | |
Part of #1225, also #1237.
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | | |
We use this for a RetryError in circmgr, but we will also want it in
hsservice.
|