summaryrefslogtreecommitdiff
path: root/crates
Commit message (Collapse)AuthorAgeFilesLines
...
* | tor-hsservice: Add test for desc publisher reuploads.Gabriela Moldovan2024-02-121-3/+41
| | | | | | | | Part of #1241
* | tor-hsservice: Remove unnecessary locking in test.Gabriela Moldovan2024-02-121-8/+8
| |
* | tor-hsservice: Add a publisher TODO about limiting reuploads.Gabriela Moldovan2024-02-121-0/+7
| |
* | tor-hsservice: Periodically reupload the descriptor.Gabriela Moldovan2024-02-122-3/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | According to the spec, the publisher needs to periodically reupload the descriptor. ``` Specifically, every time a hidden service publishes its descriptor, it also sets up a timer for a random time between 60 minutes and 120 minutes in the future. When the timer triggers, the hidden service needs to publish its descriptor again to the responsible HSDirs for that time period. [TODO SPEC: Control republish period using a consensus parameter?] ``` After each `upload_for_time_period()`, the publisher now sets a timer as described in the spec, by pushing a `ReuploadTimer` into its `reupload_timers` heap. Closes #1241
* | tor-hsservice: Set the status to UploadScheduled when it's time to reupload.Gabriela Moldovan2024-02-121-0/+45
| |
* | tor-hsservice: Add helper type for scheduling descriptor reuploads.Gabriela Moldovan2024-02-122-0/+113
| |
* | tor-hsservice: Add a function for marking descriptors dirty for a specific TP.Gabriela Moldovan2024-02-121-0/+20
| | | | | | | | | | | | | | We will soon need the ability to trigger a descriptor reupload for a specific time period. Part of #1241
* | tor-hsservice: replay log test: Check SIGUSR2 status on entryIan Jackson2024-02-121-0/+35
| | | | | | | | Will make the situation in #1264 clear, I think.
* | tor-hsservice: replay log test: Break out sigemptyset()Ian Jackson2024-02-121-3/+7
| |
* | tor-hsservice: replay log test: Plumb output manuallyIan Jackson2024-02-121-2/+13
|/ | | | | | | | | Something libtest is doing hides the child stderr/stdout from the test log, when --nocapture is not given. With these changes, I see much more output in failing cases or with --nocapture. In the case mentioned in #1264, the message "we survived raise SIGUSR2" is now printed both with and without --nocapture.
* educe: Use std's default for two structsIan Jackson2024-02-122-5/+2
| | | | | | Reviewing uses of `#[educe(default)]`, I came across these two places where it was applied to a non-generic struct without any special attributes on fields. std's derive will do just as well here.
* educe: Use std's default for enums where default variant is unitIan Jackson2024-02-1212-62/+36
| | | | | | | | | | | | | Since Rust 1.66, std's default works properly for enums, provided that the default variant is a unit. Review all uses of `#[educe(default)]` on enums and replace them with std where possible, which is most of them. In 1.66 and later, std's `#[derive(Default)]` doesn't infer any generic bounds on the derived impl, where it's an enum - since the unit variant can always be constructed. So this change doesn't add any generic bounds and is not API-visible.
* Merge branch 'hsrproxy_errs' into 'main'Alexander Færøy2024-02-081-22/+34
|\ | | | | | | | | hsproxy: Improve error messages. See merge request tpo/core/arti!1973
| * hsproxy: Improve error messages.Nick Mathewson2024-02-081-22/+34
| | | | | | | | | | | | | | | | When giving an error message about an hsrproxy configuration: 1) mention that this is for an onion service. 2) mention what the invalid text was. Part of #1266
* | tor-persist: state_dir: Use DOT_LOCK in the final locationIan Jackson2024-02-081-1/+1
| | | | | | | | | | Actually, we want to test handling of the string with whatever the extension would be, if it changed.
* | tor-persist: state_dir: Introduce DOT_LOCKIan Jackson2024-02-081-2/+7
| | | | | | | | | | | | | | And replace ".lock" with it. Now the only place that the "lock" extension this is still present as a literal is in a test.
* | tor-persist: state_dir: Introduce LOCK_EXTNIan Jackson2024-02-081-4/+6
| | | | | | | | | | | | And replace "lock" with it. This is the first half of not open-coding this; the sites where the literal string is ".lock" are in the next commit, to help avoid the slip of using the wrong constant.
* | tor-persist: state_dir: Add a note about the instance modification timeIan Jackson2024-02-081-0/+3
| |
* | tor-persist: state_dir: Test that junk is ignoredIan Jackson2024-02-081-0/+27
| |
* | tor-persist: state_dir: Fix typoNick Mathewson2024-02-081-1/+1
| |
* | tor-persist: state_dir: Improve an error messageNick Mathewson2024-02-081-1/+1
| |
* | tor-persist: state_dir: Add a clippy allowIan Jackson2024-02-081-0/+1
| |
* | tor-persist: state_dir: Drop unused void dependencyIan Jackson2024-02-081-2/+1
| |
* | tor-persist: state_dir: (Re)move unused imports and allow (fmt)Ian Jackson2024-02-081-1/+1
| |
* | tor-persist: state_dir: (Re)move unused imports and allowIan Jackson2024-02-081-15/+10
| |
* | tor-persist: state_dir terminology: Use "INSTANCE_ID" in docsIan Jackson2024-02-081-5/+5
| | | | | | | | | | | | Now ee consistently use "instance id" or "instance identity" (or, where unambiguous, "id"), to mean the identity of an instance within a kind, and "instance" to refer to the whole thing including the kind.
* | tor-persist: state_dir tests: Test mtime resetIan Jackson2024-02-081-1/+184
| |
* | tor-persist: state_dir tests: Test iteration and purgeIan Jackson2024-02-082-0/+257
| |
* | tor-persist: state_dir tests: Break out mk_state_dirIan Jackson2024-02-081-5/+9
| | | | | | | | We're going to get more call sites.
* | tor-persist: state_dir terminology: Use "key", not "slug" (fmt)Ian Jackson2024-02-081-9/+4
| |
* | tor-persist: state_dir terminology: Use "key", not "slug"Ian Jackson2024-02-081-29/+30
| | | | | | | | | | | | | | | | Slug is the general type. Instance kinds are slugs too. We need a word for the slug-within-an-instance which identifies a storage location for StorageHandle, or a raw subdirectory. Let's use "key". Change the terminology (and variable names) everywhere.
* | tor-persist: state_dir: expiry: Implement purge_instancesIan Jackson2024-02-081-2/+133
| |
* | tor-persist: state_dir: expiry: Ensure that instance dir mtime is updatedIan Jackson2024-02-082-3/+19
| | | | | | | | | | | | Add comments where it's done automatically. (There will be tests of the claims I'm making, in a later commit.)
* | tor-persist: state_dir: purge API: Clarify callback edge casesIan Jackson2024-02-081-1/+26
| |
* | tor-persist: state_dir: purge API: Add notes about instance mtimeIan Jackson2024-02-081-0/+9
| |
* | tor-persist: state_dir: purge API: Discuss deletion non-atomicityIan Jackson2024-02-081-0/+31
| |
* | tor-persist: state_dir: purge API: Replace retain_unused_for with age_filterIan Jackson2024-02-081-14/+14
| | | | | | | | | | This will be slightly less ergonomic at call sites but it is a more orthogonal and logical API.
* | tor-persist: state_dir: purge API: Have purge_instances take SystemTimeIan Jackson2024-02-081-3/+10
| | | | | | | | | | | | | | Purging depends on the current time. We will want this to be able to come from Runtime but we don't want to have those types in this API.
* | tor-persist: state_dir: purge API: PurgeHandler must provide the kindIan Jackson2024-02-081-0/+6
| | | | | | | | We purge per-kind.
* | tor-persist: state_dir: docs: Remove a duplicated paragraphIan Jackson2024-02-081-5/+0
| | | | | | | | This was probably the result of rebase conflicts during develoopment.
* | tor-persist: state_dir: docs: Linkify a ref to StorageHandleIan Jackson2024-02-081-1/+1
| |
* | tor-persist: state_dir: Implement list_instancesIan Jackson2024-02-083-5/+72
|/
* Clarify onion service example(s) a little more.Nick Mathewson2024-02-081-3/+5
|
* Fix compilation with musl.Nick Mathewson2024-02-061-3/+3
| | | | | | | | Don't try to name the type of `RLIMIT_FSIZE` in our tests: its type is either `c_int` or `__rlimit_resource_t` depending on the libc instance. Closes #1264.
* tor-keymgr: Downgrade a TODO to a Note.Gabriela Moldovan2024-02-051-3/+3
| | | | | | | I don't think we need to do this right now, so I am downgrading this TODO. Part of #1115
* tor-keymgr: Make KeyMgr::remove return the removed key (fmt).Gabriela Moldovan2024-02-051-24/+28
|
* tor-keymgr: Make KeyMgr::remove return the removed key.Gabriela Moldovan2024-02-053-6/+11
| | | | Part of #1115
* tor-keymgr: Remove a TODO about rewriting KeyType.Gabriela Moldovan2024-02-051-8/+0
| | | | | | Not all algorithms have exactly 2 variants (`Public` and `Keypair`). For example, for `ed25519`, we need `Public`, `Keypair`, and `ExpandedKeypair`.
* tor-keymgr: Downgrade a TODO from a test.Gabriela Moldovan2024-02-051-1/+1
|
* tor-keymgr: Downgrade a TODO about the KeyType API.Gabriela Moldovan2024-02-051-1/+1
| | | | | | | The `KeySpecifier` argument isn't needed yet, so let's defer this for now. Part of #1115