summaryrefslogtreecommitdiff
path: root/crates
Commit message (Collapse)AuthorAgeFilesLines
...
| * | | | tor-persist: Use correct pathnames in errorsIan Jackson2024-01-241-5/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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".
| * | | | state-dir: Use a real lock guardIan Jackson2024-01-242-4/+6
| | | | | | | | | | | | | | | | | | | | | | | | | Bring in the fslock-guard crate and replace the Void in the structs. (Separated out since this contains Cargo.lock churn.)
| * | | | state-dir: Move from tor-hsservice to tor-persistIan Jackson2024-01-245-12/+12
| |/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | | | Merge branch 'onion-svc-status' into 'main'gabi-2502024-01-248-97/+258
|\ \ \ \ | | | | | | | | | | | | | | | | | | | | tor-hsservice: Make the publisher update the `OnionServiceStatus` See merge request tpo/core/arti!1902
| * | | | tor-hsservice: Explain why the publisher never transitions to Recovering.Gabriela Moldovan2024-01-241-0/+48
| | | | |
| * | | | tor-hsservice: Update the IptManager status.Gabriela Moldovan2024-01-241-2/+7
| | | | |
| * | | | tor-hsservice: Remove Publisher::status().Gabriela Moldovan2024-01-241-14/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The publisher status is obtained via `StatusSender` (rather than by polling `Publisher::status()`). Part of #1083
| * | | | tor-hsservice: Remove some TODOs about setting the OnionService status.Gabriela Moldovan2024-01-241-2/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
| * | | | tor-hsservice: Change TODO to reference #1194.Gabriela Moldovan2024-01-241-2/+2
| | | | | | | | | | | | | | | | | | | | This isn't something we need to do for #1083.
| * | | | tor-hsservice: Map the publisher status to a State variant.Gabriela Moldovan2024-01-241-1/+8
| | | | |
| * | | | tor-hsservice: Update the publisher state on shutdown.Gabriela Moldovan2024-01-241-2/+10
| | | | |
| * | | | tor-hsservice: Implement {Publisher, IptMgr}StatusSender.Gabriela Moldovan2024-01-241-23/+54
| | | | |
| * | | | tor-hsservice: Implement OnionServiceStatus::current_problem.Gabriela Moldovan2024-01-241-1/+9
| | | | |
| * | | | tor-hsservice: Rename OnionServiceStatus fields.Gabriela Moldovan2024-01-241-7/+7
| | | | | | | | | | | | | | | | | | | | The new names are shorter and just as descriptive.
| * | | | tor-hsservice: Remove outdated TODO.Gabriela Moldovan2024-01-241-2/+0
| | | | |
| * | | | tor-hsservice: Add separate status structs for the svc subsystems.Gabriela Moldovan2024-01-241-7/+48
| | | | |
| * | | | tor-hsservice: Replace StartupError with Problem.Gabriela Moldovan2024-01-241-10/+16
| | | | |
| * | | | tor-hsservice: Make UploadError public.Gabriela Moldovan2024-01-244-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | We need it to be public, because we're about to expose it in the `OnionServiceStatus`.
| * | | | tor-hsservice: Implement Into<RetryError<E>> for BackoffError.Gabriela Moldovan2024-01-241-0/+11
| | | | | | | | | | | | | | | | | | | | | | | | | We're about to report the inner error in the `OnionServiceStatus` (without making `BackoffError` public).
| * | | | tor-hsservice: Remove unused BackoffError variants.Gabriela Moldovan2024-01-241-31/+1
| | | | | | | | | | | | | | | | | | | | They're not used anywhere, so let's remove them.
| * | | | tor-hsservice: Reassign a TODO to #1194.Gabriela Moldovan2024-01-241-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | The key expiration status is only relevant if the service is running in "offline mode", so these TODOs should be part of #1194.
| * | | | tor-hsservice: Remove unused field.Gabriela Moldovan2024-01-241-4/+0
| | | | | | | | | | | | | | | | | | | | This field is unused now that we have `ipt_mgr_state` and `publisher_state`.
| * | | | tor-hsservice: Give the IptManager a StatusSender.Gabriela Moldovan2024-01-242-0/+15
| | | | | | | | | | | | | | | | | | | | Part of #1083
| * | | | tor-hsservice: Give the publisher a StatusSender.Gabriela Moldovan2024-01-243-0/+20
| | | | | | | | | | | | | | | | | | | | The publisher needs it to notify `OnionService` of status changes.
| * | | | tor-hsservice: Add separate StatusSender types for the publisher and IPT mgr.Gabriela Moldovan2024-01-241-0/+10
| |/ / / | | | | | | | | | | | | | | | | | | | | For updating the underlying component statuses of an `OnionServiceStatus. Part of #1083
* | | | Merge branch 'fix-wallclock-bug-again' into 'main'gabi-2502024-01-242-5/+42
|\ \ \ \ | |_|_|/ |/| | | | | | | | | | | tor-hsservice: Make offset_within_srv_period() work with timestamps from newer periods. See merge request tpo/core/arti!1914
| * | | tor-netdir: Add a unit test for HsDirParams::offset_within_srv_period.Gabriela Moldovan2024-01-242-1/+38
| | | |
| * | | tor-hsservice: Make offset_within_srv_period() work with timestamps from ↵Gabriela Moldovan2024-01-241-4/+4
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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). ```
* | | Merge branch 'hss_errorkinds' into 'main'Nick Mathewson2024-01-245-48/+57
|\ \ \ | | |/ | |/| | | | | | | | | | | | | hsservice: Fix some errorkinds and related error handling issues. Closes #1225 See merge request tpo/core/arti!1906
| * | hss: Report errors from keep_intro_established.Nick Mathewson2024-01-241-3/+3
| | | | | | | | | | | | | | | Also, change `keep_intro_established`'s return type to indicate that it has no non-failing return cases.
| * | hss: Refactor keep_intro_established to avoid needing NetDirNick Mathewson2024-01-241-22/+9
| | | | | | | | | | | | | | | | | | | | | | | | 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.
| * | hss: Downgrade MissingHsIdKeypair TODONick Mathewson2024-01-241-1/+1
| | | | | | | | | | | | | | | 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
| * | hss: Change ticket about ErrorKind for IntroPointNotListedNick Mathewson2024-01-241-1/+1
| | | | | | | | | | | | This is now #1255, which is not a MUST.
| * | hss: Clean up errors while expecting intro_establishedNick Mathewson2024-01-241-11/+25
| | | | | | | | | | | | Part of #1225, also #1237.
| * | hss: Correct the Kind for EstablishTimeout.Nick Mathewson2024-01-241-1/+1
| | |
| * | hss: Return LocalResourceAlreadyInUse on StateLocked.Nick Mathewson2024-01-231-2/+1
| | |
| * | hss: Return summarized errorkind for RendCirc error.Nick Mathewson2024-01-231-2/+3
| | |
| * | tor-circmgr: Expose ErrorKind-combining calculation.Nick Mathewson2024-01-232-5/+13
| | | | | | | | | | | | | | | We use this for a RetryError in circmgr, but we will also want it in hsservice.
* | | Merge branch 'fslock-guard-windows-fix' into 'main'Nick Mathewson2024-01-242-6/+29
|\ \ \ | |_|/ |/| | | | | | | | | | | | | | fslock-guard: use winapi to test file-equivalency on windows Closes #1258 See merge request tpo/core/arti!1910
| * | fslock-guard: Add links to documentation about windows approachNick Mathewson2024-01-241-0/+7
| | |
| * | fslock-guard: use winapi to test file-equivalency on windowsNick Mathewson2024-01-232-6/+22
| | |
* | | tor-hsservice: Fix typos etc.gabi-2502024-01-241-2/+2
| | |
* | | tor-hsservice: key expiry: Code motion and reindentingIan Jackson2024-01-241-26/+22
| | | | | | | | | | | | | | | Now the remove_if_expire closure, which does the actual work, is lexically outside the macro, and the macro is trivial.
* | | tor-hsservice: key expiry: Introduce HsTimePeriodKeySpecifier traitIan Jackson2024-01-241-10/+49
| | | | | | | | | | | | | | | | | | This allows us to have a closure containing runtime-polymorphic code, reducing monomorphisation and moving code out of a macro into a closure.
* | | tor-hsservice: key expiry: Rely on limiting publisher key scanIan Jackson2024-01-241-2/+6
| | | | | | | | | | | | | | | | | | | | | | | | Our pattern is now supposed to ensure that we don't see any irrelevant keys. So if we do, that's a bug. (The code layout is getting increasingly odd. We'll sort that out along with some code motion later.)
* | | tor-hsservice: key expiry: Limit publisher key scanIan Jackson2024-01-241-5/+5
| | | | | | | | | | | | | | | | | | | | | Only examine keys for this HS. This avoids thinking about every key for every HS for every netdir change. That's quadratic in the number of HS's.
* | | tor-hsservice: key expiry: clippy followupIan Jackson2024-01-241-3/+2
| | | | | | | | | | | | | | | These are now the last uses of these values, so they need the "no clone" form.
* | | tor-hsservice: key expiry: Do publisher expiry from reactorIan Jackson2024-01-243-131/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In principle there is a small race with doing this in a separate task: the reactor and the sweeper might process the new netdir at different times. For example, if two netdir updates come in quick succession, and the sweeper is slower, the sweeper might still be running with the previous TPs as the publisher is creating keys in the new TPs. Theoretically, the sweeper might delete keys the reactor has just generated. This is also considerably simpler.
* | | tor-hsservice: key expiry: Break out KeystoreSweeper::expire_keysIan Jackson2024-01-242-43/+55
| | | | | | | | | | | | We're going to change where this is called.
* | | tor-netdir: Make hs_dirs_{upload, download} take separate args instead of tuple.Gabriela Moldovan2024-01-245-5/+10
| | | | | | | | | | | | Prompted by https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/1904#note_2987777