| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| | | |/ /
| |/| | |
|
| |\ \ \ \
| | | | |
| | | | |
| | | | |
| | | | | |
tor_config: Provide Flatten
See merge request tpo/core/arti!1605
|
| | | | | |
| | | | |
| | | | |
| | | | | |
At some earlier point of development this struct was pub.
|
| | | | | | |
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
This is a better trickery! Now we don't need to derive the list of
field names at all.
The test case becomes much simpler too, and no longer needs to compare
field lists since we have only the serde field list.
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Add a performance note, and the manually-verified test case to support
it.
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
This involves returning the field list in the
`FlattenableTesterSuccess`.
This leaves the names a little off; we'll update those at the end.
Export this - it's going to replace the hidden pub test function.
|
| | | | | |
| | | | |
| | | | |
| | | | | |
We're going to use this some more, even.
|
| | | | | | |
|
| | | | | | |
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Prompted by
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/1605#note_2945202
|
| | | | | | |
|
| | | | | | |
|
| | |/ / /
| | | |
| | | |
| | | |
| | | | |
This is an attempt to deal with the fact that `#[serde(flatten)]`
is weirdly broken and doesn't work with `serde_ignored`.
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
The compile error happened because there was a conflict between
arti!1603 and arti!1599:
* the patch from !1603 uses `OnionServiceConfig::encrypt_descriptor`
* !1599 removes `encrypt_descriptor` altogether
|
| |\ \ \ \
| |/ / /
|/| | |
| | | |
| | | | |
tor-hsservice: Descriptor publisher improvements
See merge request tpo/core/arti!1603
|
| | | | |
| | | |
| | | |
| | | | |
See https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/1603#note_2944902
|
| | | | | |
|
| | | | | |
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
The previous code was correct too: after uploading the descriptor, the
`PublishStatus` is not updated, because the reactor is still in a state
where it has enough information to publish descriptors. Note that simply
"being" in the `UploadScheduled` state isn't enough to trigger another
upload, because `publish_status_rx.next()` (from the `select_biased!` of
the main-loop), blocks until something triggers another state transition
(`AwaitingIpts` -> `UploadScheduled`, or even `UploadScheduled` ->
`UploadScheduled`), so while a third state is not strictly necessary, it
does help with readability.
|
| | | | |
| | | |
| | | |
| | | | |
This also documents how updates are rescheduled.
|
| | | | | |
|
| | | | |
| | | |
| | | |
| | | |
| | | | |
Now that we've switched to `std::sync::Mutex` many publish functions no
longer need to be async.
|
| | | | | |
|
| | | | | |
|
| | | | | |
|
| | | | |
| | | |
| | | |
| | | |
| | | | |
`handle_ipt_change` no longer handles the new intro points: it now
handles the IPT _change_ by updating the publish state of the reactor.
|
| | | | | |
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
We don't really need to keep the handles around, so let's just discard
them.
This also updates `upload_all` to propagate any errors coming from
`build_sign`.
|
| | | | | |
|
| | | | | |
|
| | | | | |
|
| | | | | |
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
It doesn't make sense to use an mpsc channel for rescheduling the
rate-limited uploads. If we use an mpsc channel and `upload_all` is
called multiple times in a short timespan, we will end up scheduling
more than 1 upload reattempt. So let's use postage::watch instead.
|
| | | | |
| | | |
| | | |
| | | |
| | | | |
This updates the docs (and renames the channel for rescheduling
rate-limited uploads) for clarity.
|
| | | | | |
|
| | | | | |
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
We don't actually need an intermediate `Descriptor` struct (and keeping
a builder around doesn't make much sense either):
* the information from the onion service config can just be read from
the `config` field of the `Inner` (mutable) reactor state
* the IPT information is retrieved right before building the
descriptor
* any key information will (eventually) be read from the `KeyMgr`
|
| | | | | |
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
See thread at
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/1599#note_2944510
for information about why `flatten` doesn't work here.
|
| | | | | |
|
| | | | |
| | | |
| | | |
| | | | |
This matches our design.
|
| | | | | |
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
We now have a single ProxyTarget action for the case where we accept
a request and forward it: `Forward`. It takes an encapsulation
method (currently only "direct") and a target address which can
be inet or unix.
|
| | | | | |
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This implementation uses rangemap to detect _all_ unreachable
patterns, which might be a little overkill, but it's actually
simpler to write it this way than to use an O(N^2) search to make
sure that no pattern is covered by a _single_ previous pattern.
|
| | | | |
| | | |
| | | |
| | | |
| | | | |
Temporarily disable descriptor encryption configuration while we
figure out how it should work (see #1028)
|
| | | | | |
|
| | |/ /
|/| | |
|
| |\| |
| | |
| | |
| | |
| | | |
tor-hsservice: Implement PartialEq for HsClientDescEncKey, Anonimity, DescEncryptionConfig
See merge request tpo/core/arti!1601
|