| Commit message (Collapse) | Author | Age | Files | Lines |
| |\
| |
| |
| |
| | |
CI: Stop using `./maint/preserve` for `target/doc/`
See merge request tpo/core/arti!4315
|
| | |
| |
| |
| |
| |
| |
| |
| | |
I think the original intent was to save the rustdoc build as an
artifact. But by using `./maint/preserve`, we preserve the docs between
jobs, which is not what we want.
Instead, we just save the rustdoc build as an artifact.
|
| |\ \
| | |
| | |
| | |
| | | |
arti: Preparation for RPC configuration management, part 1
See merge request tpo/core/arti!4322
|
| | | | |
|
| | | |
| | |
| | |
| | | |
This will be the basis for configuration _inspection_.
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | |
| | |
| | |
| | | |
(But before the watcher task is launched.)
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | |
| | | |
We want to be able to create the CfgMgr early so that we can give it
to the RPC code, then add a bunch of reconfigurable modules to it,
and only then launch the file-watcher task.
|
| |\ \ \
| |/ /
|/| |
| | |
| | | |
Initialize extra-info module
See merge request tpo/core/arti!4284
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This commit initializes the doc::extra_info module in tor-netdoc, which
is still marked as incomplete and will be extended in the future.
Right now, it is very barebones by only supporting the introduction item
as well as the bare minimum required for verification.
It also adds a simple unit test, which iterates over the available test
data, parses and verifies it.
|
| |\ \ \
| | | |
| | | |
| | | |
| | | | |
tor-proto: Fix tests build error when "testing" feature isn't enabled
See merge request tpo/core/arti!4319
|
| |/ / /
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This fixes:
```text
$ cargo test -p tor-proto --features relay
error[E0603]: enum import `CtrlMsg` is private
--> crates/tor-proto/src/relay/reactor.rs:463:33
|
463 | use crate::channel::CtrlMsg;
| ^^^^^^^ private enum import
|
note: the enum import `CtrlMsg` is defined here...
--> crates/tor-proto/src/channel.rs:117:5
|
117 | use testing_exports::*;
| ^^^^^^^^^^^^^^^^^^
note: ...and refers to the enum import `CtrlMsg` which is defined here...
<snip>
```
There are a few ways we could fix this, but I don't see an advantage of
one over another.
|
| |\ \ \
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
proto: Avoid sending DESTROY if we have received DESTROY
Closes #2646 and #2648
See merge request tpo/core/arti!4312
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This extends the `destroy_from_client()` test to also check that a
DESTROY received from the client (or, more generally speaking, from the
"inbound channel") is actually forwarded to the next hop.
The reason the `assert_destroy_sent()` assertion is commented out is
specified in the TODO that precedes it (tldr: testing the DESTROY
behaviour involves both the channel reactor and the circuit reactor, and
our test setup is currently quite limited, in that it doesn't actually
exercise the right channel reactor code paths for the *inbound*
channel). I plan to address this soon.
|
| | | | |
| | | |
| | | |
| | | | |
I am about to need this in a test.
|
| | | | | |
|
| | | | |
| | | |
| | | |
| | | | |
This fixes an old bad copy-paste that I've just noticed.
|
| | | | |
| | | |
| | | |
| | | | |
This adds an example suggested by opara.
|
| | | | | |
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
We need this because the channel reactor now only sends DESTROY for
circuits that are still in the circ map (and we are about to test this
behaviour, so we need the circuit map to actually have an entry for our
test circuit).
Initially, these tests were meant to test the circuit reactor in
isolation, but they've gradually grown more complex, and now require
a semi-working channel reactor. In the long run, I think I'd like to:
* change the tests from `tor_proto::relay::reactor` to use a proper
relay channel reactor as opposed to a `working_dummy_channel()`, and
to initialize a circuit through the normal means, namely by sending
a CREATE2 through the channel reactor (naturally, this "proper relay
channel reactor" still wouldn't be connected to the network). These
will test the integration between the channel and the circuit
reactor, as well as the circuit reactor behaviour
* add new, implementation-agnostic tests for the generic multi-reactor
system. These will use a mock channel reactor
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
The relay circuit reactor tests will soon need the ability to send
control messages (for allocating a circuit id for the circuit reactor
under test).
|
| | | | | |
|
| | | | |
| | | |
| | | |
| | | |
| | | | |
Now that we no longer respond to DESTROY by sending a DESTROY ourselves,
these tests need to be updated.
|
| | | | |
| | | |
| | | |
| | | | |
This test simulates the *next hop* sending us a DESTROY.
|
| |/ / /
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This change prevents the channel reactor from sending DESTROY cells on
already-closed (or non-existent) circuits. Upon receiving a DESTROY
cell, the channel reactor removes the corresponding circuit entry, if
any, from its circmap. It then passes the DESTROY to the circuit reactor
for handling. The circuit reactor handles it by shutting down, and
calling `Channel::close_circuit()` on drop. Previously, this would
unconditionally send a DESTROY cell, which caused #2648 and #2646.
This affects both clients and relays, because both circuit reactors call
`Channel::close_circuit()` on drop.
Closes #2648, #2646
|
| |\ \ \
| | | |
| | | |
| | | |
| | | | |
tor-persist: fix display of Target path(s).
See merge request tpo/core/arti!4317
|
| | | |/
| |/|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This patch changes how display works on our Target struct. Currently,
log messages generated by Arti Relay looks like this:
`tor_persist::load_store: storing
"/path/to/arti-relay/state"/"circuit_timeouts.json"`
With this patch applies it instead looks like this:
`tor_persist::load_store: storing
"/path/to/arti-relay/state/circuit_timeouts.json"`
With this change we ensure that the correct delimiter between the
directory and the filename is used (on Unix it's "/", but on Windows
it's "\") and we also avoid the added "" around both the directory and
filename.
|
| |\ \ \
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
CI: Reduce disk usage after job ends
Closes #2669 and #2672
See merge request tpo/core/arti!4316
|
| | | | | |
|
| | | | | |
|
| | |/ / |
|
| |\ \ \
| |/ /
|/| |
| | |
| | | |
maint/cargo-audit: Bump h2 to address RUSTSEC-2026-0258
See merge request tpo/core/arti!4318
|
| |/ /
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Older versions of `h2` have a bug that causes empty HTTP/2 DATA frames
to be queued without limit if the streams are not read from quickly
enough.
According to the [hyper advisory]:
> To determine if vulnerable, all these things must be true:
>
> * You are using HTTP/2, either as a server or a client.
> * Your application does not fully drain incoming request
> or response bodies (for example, a proxy applying backpressure,
> or a client that delays reading the body).
> * The direct remote peer is malicious and intentionally
> sends large numbers of empty DATA frames.
To my knowledge, the only non-example crates that use `hyper` are `arti`
and `tor-dirserver`. Both of them run HTTP/1.1 servers, so I don't
believe we're affected by the `h2` bug.
[hyper advisory]: https://github.com/hyperium/hyper/security/advisories/GHSA-q83h-524g-xf6h
|
| |\ \
| | |
| | |
| | |
| | | |
refactor: fail when all addresses bind fail
See merge request tpo/core/arti!4309
|
| | | | |
|
| |\ \ \
| | | |
| | | |
| | | |
| | | | |
arti: refactor reload_cfg in preparation for RPC work
See merge request tpo/core/arti!4310
|
| | | | |
| | | |
| | | | |
Co-authored-by: gabi-250 <[email protected]>
|
| | | | | |
|
| | | | |
| | | |
| | | |
| | | | |
Code movement only.
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Right now this just helps us keep the parts of the
configuration-reloading logic in one place, and clarifies what needs
to be owned by the watcher thread and what doesn't.
Moving forward, this will help make the configuration something
that RPC can inspect and change.
|
| | | | |
| | | |
| | | |
| | | |
| | | | |
(If you drop a FileWatcher, the thread that makes it works will
exit.)
|
| |\ \ \ \
| |_|/ /
|/| | |
| | | |
| | | | |
Update the relay circuit reactor docs
See merge request tpo/core/arti!4313
|
| | | | | |
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
There is no `BackwardReactor` heading, because there isn't that much to
say about it (it moves `RELAY` cells in the opposite direction, and
rejects RELAY_EARLY and PADDING_NEGOTIATE).
|
| | | | | |
|
| | | | | |
|
| | | | | |
|