| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| | | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
When all guards are down, we would previously mark them all as up,
and retry aggressively. But that's far too aggressive: if there's
something wrong with our ability to connect to guards, it makes us
hammer the network over and over, ignoring all the guard retry
timeouts in practice.
Instead,
* We now allow the `pick_guard()` function to fail without
automatically retrying.
* We give different errors in the cases when all our guards are
down, and when all of the guards selected by our active usage
are down.
* Our "guards are down" error includes the time at which a guard
will next be retriable.
This is part of #407.
|
| | | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | |
| | | | | | |
C tor used one schedule, and guard-spec specified another. But in
reality we should probably use a randomized schedule to retry
guards, for the reasons explained in the documentation for
RetrySchedule.
I've chosen the minima to be not too far from our previous minima
for primary and non-primary guards.
This is part of #407.
|
| | |_|/ / /
|/| | | |
| | | | |
| | | | | |
Noticed this while reviewing !426
|
| |\ \ \ \ \
| |/ / / /
|/| | | |
| | | | |
| | | | | |
Move almost all of the rest of options.rs to arti crate
See merge request tpo/core/arti!425
|
| | | | | | |
|
| | | | | | |
|
| | | | | |
| | | | |
| | | | |
| | | | | |
Code motion and import fixups.
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Making these fields pub(crate) is quite reasonable and does away with
the need for accessors.
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
We put this in cfg.rs, rather than (say) socks.rs, because it has
config relating to both socks.rs and dns.rs.
Code motion and import fixups.
|
| |\ \ \ \ \
| |/ / / /
|/| | | |
| | | | |
| | | | |
| | | | |
| | | | | |
UdpSocket: remove support for connect().
Closes #410
See merge request tpo/core/arti!424
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Currently, Arti doesn't need this. But once it does, it will be
way better to have a separate type for connected sockets, rather
than having to error-check every time somebody gives us a socket.
Part of #410
|
| | | | | |
| | | | |
| | | | |
| | | | | |
This was clumsy. Now it is brought together it can be simplified.
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
This de-duplicates the code that was in those accessors, and is now in
filt_from_opt_str.
Code motion and direct field access.
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
There are no longer needed, because the code that uses this
configuration now lives in the same module as the configuration
itself.
|
| | | | | |
| | | | |
| | | | |
| | | | | |
Code motion and import fixups.
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
We are going to move LoggingConfig here. We should follow the
already-public name IMO.
|
| | | | | |
| | | | |
| | | | |
| | | | | |
Code motion and import fixups.
|
| |\ \ \ \ \
| |/ / / /
|/| | | |
| | | | |
| | | | | |
Abolish some accessors in drmgr
See merge request tpo/core/arti!423
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
This makes this information crate-private. The crate can reasonably
just access it.
|
| | | | | | |
|
| | | | | | |
|
| | | | | |
| | | | |
| | | | |
| | | | | |
Using accessors for crate-only fields is otiose.
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Rename this to be named the same as its accessor, and use the rename
feature of builder and serde. (The shorter name is nicer in the code
IMO.)
|
| |/ / / /
| | | |
| | | |
| | | | |
Prompted by a compiler warning which I weirdly can't seem to reproduce?
|
| |\ \ \ \
| |/ / /
|/| | |
| | | |
| | | |
| | | |
| | | | |
ClientCirc: add functions to return the circuit's actual path
Closes #415
See merge request tpo/core/arti!419
|
| | | | |
| | | |
| | | |
| | | | |
Closes #415
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Each channel now remembers an OwnedChanTarget.
Each circuit now remembers a vector of OwnedChanTarget to represent
the path that it was constructed for.
Part of #415.
|
| | | | |
| | | |
| | | |
| | | | |
This will help with #415
|
| |\ \ \ \
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Use less space in hashtables for microdescriptors
Closes #386
See merge request tpo/core/arti!415
|
| | | | | | |
|
| | | | | | |
|
| | | | | | |
|
| | | | | | |
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
Every time we want a microdescriptor, we know the index of that
microdesc's corresponding routerstatus within the consensus.
Therefore, we can use that index to store `Arc<Microdesc>`s in a
dense array, and not have to use a HashSet here at all.
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
We were using a hashtable to keep track of missing microdescriptor
digests. But this information is redundant with the NetDir state,
and there's now no longer any performance benefit to keeping a
separate copy.
Part of #386.
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
We previously kept missing-MD entries and present-MD entries all in
the same HashSet, which resulted in using more slack space than we
need. Now we use separate tables, so we can drop missing-MD
entries as we move forward.
Also, when constructing a NetDir, set its hash tables to their final
capacities.
This also lets us simplify some of our missing-md-listing code a
lot.
|
| | |/ / /
|/| | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Instead of requiring a `Box<dyn Isolation>`, it now takes either a
`Box<dyn Isolation>`, or an arbitrary `T` that implements
`Isolation`.
This API still allows the user to pass in a `Box<dyn Isolation>` if
that's what they have, but it doesn't require them to Box the
isolation on their own.
Part of #414.
|
| |\ \ \ \
| | | | |
| | | | |
| | | | |
| | | | | |
new api for isolation
See merge request tpo/core/arti!377
|
| | | | | | |
|
| | | | | | |
|
| | | | | | |
|
| | | | | | |
|
| | | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
it seems I added conditional compilation without noticing it??
and there was some errors when choosing a prefered runtime depending on
feature flags
|
| | | | | | |
|
| | | | | | |
|
| | | | | |
| | | | |
| | | | |
| | | | | |
this also removes JoinResult
|
| | | | | | |
|
| | | | | | |
|
| | | | | |
| | | | |
| | | | |
| | | | | |
the inverted logic was too easy to mess up
|
| | | | | | |
|