| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| | | | | |
|
| | | | | |
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Several HS message types have an extension list type. They all use
the same framing for extensions, but each of them has separate
extension types and separate extension namespaces.
This commit simplifies establish_intro a little, and adds support
for maintaining unrecognized extension types--at the expense of some
new internal code.
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Some of the HS message types have a lot of dependent types, like
extensions and options for those extensions, and so on. Except when
those extensions are portable across cell types, it makes sense
to put them in their own modules.
|
| | | | | |
|
| |\ \ \ \
| |_|/ /
|/| | |
| | | |
| | | |
| | | |
| | | | |
Expire routerdescs as soon as any of their expiries expire
Closes #772
See merge request tpo/core/arti!1022
|
| |/ / /
| | |
| | |
| | | |
Fixes #772
|
| |\ \ \
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Finish #525 for relay messages: Only parse messages at the last instant.
Closes #773 and #525
See merge request tpo/core/arti!1017
|
| | | | | |
|
| | | | | |
|
| | | | | |
|
| | | | | |
|
| | | | |
| | | |
| | | |
| | | | |
Also, add some comments about how it is likely to change.
|
| | | | | |
|
| | | | |
| | | |
| | | |
| | | |
| | | | |
This closes #525, and ensures, at last, that we don't parse any
message that we wouldn't accept.
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This includes a partial solution for #769, but also turned up
another bug (#774) while I was working on it. I'll close them both
once I have a real solution.
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
If the meta handler reports an error, then the circuit has violated
its protocol, and needs to be shut down.
Fixes #773.
|
| | | | | |
|
| | | | |
| | | |
| | | |
| | | |
| | | | |
In general, we want to avoid parsing these cells until we are
fairly sure that they are something we would accept.
|
| | | | | |
|
| | | | |
| | | |
| | | |
| | | |
| | | | |
This will make it ergonomic to decode a single body type without
having to declare a variant that accepts only a single message.
|
| | | | | |
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
We'll use this to router relay messages on a circuit to the
appropriate stream, and hand them to that stream, without parsing
the message until the stream has been determined.
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
We now manipulate raw relay cell bodies as (an alias for)
`Box<[u8;509]>` rather than as (an alias for) `[u8;509]`. This
enables us to do much less copying. It will become more important
soon, as we defer parsing relay cell bodies even longer.
Related to #7.
We also use SliceWriter to avoid allocating a Vec<> for every relay
message we want to encode, and instead encode directly into the
cell.
|
| | |/ /
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Because the API assumes that many writes are infallible, this writer
takes ownership of the backing object, and will only return it to
you if you didn't run over the end.
I'm going to use this to save some allocations in relay cell bodies
|
| |\ \ \
| | | |
| | | |
| | | |
| | | | |
Fuzzing for hsdesc parsers
See merge request tpo/core/arti!1018
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
I've been running this for 5 minutes and haven't found any
crashes. I'll run it for an hour or two, then add the results to the
corpus repository.
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
We want to fuzz these parsers, but there's no currently way to get
at the parsers for inner documents without going through a lot of
encryption. (Coverage-guided fuzzers are powerful, but they
can't find SHA3 preimages.)
|
| |\ \ \ \
| |_|/ /
|/| | |
| | | |
| | | | |
Upgrade to latest toml crate.
See merge request tpo/core/arti!1019
|
| |/ / /
| | |
| | |
| | | |
(None of the breaking changes affect us this time.)
|
| |/ / |
|
| |\ \
| | |
| | |
| | |
| | | |
Introduce new batching iterator and use it in two places
See merge request tpo/core/arti!1016
|
| | | | |
|
| | | |
| | |
| | |
| | | |
And another UNSTABLE warning.
|
| | | | |
|
| | | | |
|
| | | |
| | |
| | |
| | | |
And explain why we're not using booleans.
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
As per
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/1016#note_2877759
"_prefixed" becomes "_with_header". That mirrors the returned struct
which is nice.
|
| | | |
| | |
| | |
| | |
| | | |
Roughly as per
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/1016#note_2877822
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | | |
This gets rid of a lot of manual boolean state variable iterator
stuff.
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
There will be two call sites to demonstrate it.
Eventually maybe this will want to be in tor-basic-utils, since it
doesn't depend on any of the tor-netdoc types. But it would be
sensible to wait until the situation with PeekableIterator and
Itertools is improved.
For now we make this #[doc(hidden)] to avoid it becoming part of our
stable API.
|
| | | |
| | |
| | |
| | |
| | | |
This will avoids some hairy borrowck disasters when we try to use
iterator adapters.
|