summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
| * | Sequence reconfiguration requests.Nick Mathewson2021-12-071-8/+25
| | | | | | | | | | | | | | | | | | If we allow overlapping reconfiguration requests, we introduce all kinds of "fun" bugs. For example, we could wind up with a configuration made up of parts of one reconfiguration attempt, and parts of another.
| * | Improve documentation of which config can change.Nick Mathewson2021-12-071-0/+2
| | | | | | | | | | | | | | | It no longer makes sense to say "most things can't change", now that most things can.
| * | Make much of DirMgrConfig reconfigurable.Nick Mathewson2021-12-074-38/+94
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We can't change the authorities while in-flight: that would be pretty miserable to implement. Similarly we can't change the cache while in-flight. Everything else should be fair game, though there are a couple of tricky bits. I've tried to document those.
| * | Make TorClient reconfigurable.Nick Mathewson2021-12-072-15/+29
| | | | | | | | | | | | This covers ClientAddrConfig and ClientTimeoutConfig.
| * | Minor circuit predictor tweaks and comments.Nick Mathewson2021-12-071-3/+11
| | | | | | | | | | | | | | | | | | Most notably, make min_exit_circs_for_port actually get used. Also add a couple of comments.
| * | Make preemptive circuits reconfigurable.Nick Mathewson2021-12-073-43/+79
| | | | | | | | | | | | | | | | | | This required re-centralizing the configuration object for preemptive circuits, since previously the settings from it were a bit spread out over the crate.
| * | MutCfg: Add map_and_replace.Nick Mathewson2021-12-071-0/+10
| | | | | | | | | | | | | | | This will help in the case when a configuration can only partially change.
| * | Make circuit_timing reconfigurable.Nick Mathewson2021-12-073-18/+26
| | |
| * | Add new configuration objects to reconfigure.Nick Mathewson2021-12-072-5/+13
| | | | | | | | | | | | | | | (These weren't in the codebase when I started the first version of this branch.)
| * | Allow on-the-fly changing of path_rulesNick Mathewson2021-12-077-20/+102
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | And now the complexity begins: when the user changes the path_rules, they not only want new circuits to obey those rules: they want _all new requests_ to be put onto circuits that obey those rules. That means that when the path rules become more restrictive, we need to retire all the circuits, and make sure that currently pending circuits aren't used for any requests. If it's any comfort, doing this was even more complicated in C tor. ;)
| * | MutCfg facility to help with reconfiguration.Nick Mathewson2021-12-072-0/+68
| | | | | | | | | | | | | | | | | | | | | | | | | | | It's useful to keep configuration objects inside a RwLock<Arc<>>, so we can have slightly-stale pointers to the existing configuration structure without holding locks too long. This code adds a MutCfg type with basic support for this pattern, and functions to make it a bit more ergonomic.
| * | Sketch API for reconfiguration.Nick Mathewson2021-12-0712-16/+176
| | | | | | | | | | | | | | | | | | | | | This patch doesn't actually make anything reconfigurable, but it does create an API that will tell you "you can't change the value of that!" If the API looks reasonable, I can start making it possible to change the values of individual items.
* | | Merge branch 'bug89' into 'main'eta2021-12-132-0/+11
|\ \ \ | |_|/ |/| | | | | | | | | | | | | | Don't create circuits if the consensus is stale by over 72 hours Closes #89 See merge request tpo/core/arti!190
| * | Don't create circuits if the consensus is stale by over 72 hoursNeel Chauhan2021-12-122-0/+11
|/ /
* | address lint warningsDaniel Eades2021-12-091-8/+8
| | | | | | | | | | [Edited by nickm: This applies one of Daniel's fixes in place of one of Trinity's: Trinity says it's a bit cleaner, and I agree.]
* | drop arcs before awaitingTrinity Pointard2021-12-091-0/+1
| |
* | fix nightly clippy errorsTrinity Pointard2021-12-098-32/+19
| |
* | update rusqlite and revert minimal version changeTrinity Pointard2021-12-093-5/+4
| |
* | Beautify some Vec->array code in tor-proto.Nick Mathewson2021-12-081-6/+7
| | | | | | | | | | | | | | [T;N] supports TryFrom<Vec<T>>, and has since Rust 1.48: we can just use that. This resolves an XXXX comment.
* | proxy: report an error if all listeners fail.Nick Mathewson2021-12-081-1/+1
| |
* | Resolve XXXXs in proxy.rsNick Mathewson2021-12-081-3/+3
| | | | | | | | These issues all have tickets, so can become TODOs.
* | Treat unrecognized SENDME versions as an error.Nick Mathewson2021-12-081-2/+1
| | | | | | | | | | | | We should never get one of these unless we have opted in to get it. (This behavior is the same as C tor.)
* | tor-bytes: Enable `subtle` and `mac` features in digest.Nick Mathewson2021-12-081-1/+1
| | | | | | | | | | These features are necessary for digest to expose its CtOutput type; without them, the tor-bytes crate doesn't build independently.
* | Merge remote-tracking branch 'origin/mr/183'Nick Mathewson2021-12-081-9/+14
|\ \
| * | Use a safer histogram rebuild algorithm.Nick Mathewson2021-12-081-9/+14
| | | | | | | | | | | | | | | Our old algorithm could, on some inputs, exhaust RAM. That's not great, since we try to be robust againt corruption to the state file.
* | | Merge remote-tracking branch 'origin/mr/180'Nick Mathewson2021-12-081-11/+10
|\ \ \
| * | | In CryptInit, return a Result in initialize()Neel Chauhan2021-12-081-11/+10
| | |/ | |/|
* | | tor-netdir: Resolve an XXXX about type uglinessNick Mathewson2021-12-083-5/+41
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We had no function to infallibly convert BoundedInt32<{0 or 1},H> into a u32, even though we could have. Because of that, we were treating weight_scale as an i32 when logically it's a u32 or a NonZeroU32. Moreover, it turns out we were using an incorrect minimum for the bwweightscale param, which would in theory have allowed the authorities to make us divide by zero. This patch introduces the necessary From<> implementation and uses it. It corrects the binimum bwweightscale, and prevents a division-by-zero issue in case weight_scale is zero.
* | | Temporarily change minimal-versions CI to use Rust 1.56Nick Mathewson2021-12-081-1/+2
| | | | | | | | | | | | | | | | | | Because of arti#257, compatibility with earlier versions of rust are broken: we hope this is temporary, but fixing it will probably require a new version of rusqlite.
* | | Remove a XXXX comment in tor-llcrypto.Nick Mathewson2021-12-081-1/+0
| | | | | | | | | | | | | | | This comment was about an unspecified string; the issue of specifying the string is now torspec!55.
* | | Remove a couple of spec-related XXXXs in tor-netdir.Nick Mathewson2021-12-081-2/+0
| |/ |/| | | | | | | I've opened torspec!54 to fill in the missing parts of the spec about these issues.
* | Change an XXX in pareto.rs: a ticket is now open.Nick Mathewson2021-12-081-2/+3
| |
* | Resolve an XXXX: timeout scaling _is_ documentedNick Mathewson2021-12-081-1/+2
| |
* | Update semver_status.md with recent changes.Nick Mathewson2021-12-081-0/+14
| |
* | Merge branch 'new_digest_crate' into 'main'eta2021-12-0813-83/+100
|\ \ | |/ |/| | | | | Upgrade to digest v0.10.0 See merge request tpo/core/arti!182
| * Upgrade to digest v0.10.0Nick Mathewson2021-12-0713-83/+100
|/ | | | | We generally try to track the latest rust-crypto traits when we can: fortunately, this upgrade didn't break much, considering.
* Merge branch 'dns_config_cleanups' into 'main'eta2021-12-074-33/+38
|\ | | | | | | | | Small cleanups to stream timeout configurations See merge request tpo/core/arti!179
| * Make ClientTimeoutConfig members crate-private.Nick Mathewson2021-12-071-3/+3
| | | | | | | | We shouldn't have pub members in these config objects.
| * Rename timeout_rules to stream_timeouts.Nick Mathewson2021-12-074-31/+36
|/ | | | | | | (There are other timeout rules, after all.) Also, rename stream_timeout to connect_timeout, to make it more clear when it applies.
* Merge branch 'revised_preemptive_config' into 'main'eta2021-12-075-76/+99
|\ | | | | | | | | Usability: renaming and documentation in preemptive circuit config See merge request tpo/core/arti!176
| * Clarify names and docs for predictive circuits.Nick Mathewson2021-12-074-33/+56
| | | | | | | | | | Also, use humantime_serde, rather than a number of seconds, to indicate configuration time.
| * Rename circuits_preemptive to preemptive_circuitsNick Mathewson2021-12-075-46/+46
| | | | | | | | | | | | This obeys a few conventions: * adjective before noun * config objects end with "config"
* | Merge branch 'tlsconnector-wrapping' into 'main'eta2021-12-0710-76/+108
|\ \ | | | | | | | | | | | | Make TlsConnector wrap TCP connections, not create its own See merge request tpo/core/arti!166
| * | Make TlsConnector wrap TCP connections, not create its owneta2021-12-0710-76/+108
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `tor-rtcompat`'s `TlsConnector` trait previously included a method to create a TLS-over-TCP connection, which implied creating a TCP stream inside that method. This commit changes that, and makes the function wrap a TCP stream, as returned from the runtime's `TcpProvider` trait implementation, instead. This means you can actually override `TcpProvider` and have it apply to *all* connections Arti makes, which is useful for issues like arti#235 and other cases where you want to have a custom TCP stream implementation. This required updating the mock TCP/TLS types in `tor-rtmock` slightly; due to the change in API, we now store whether a `LocalStream` should actually be a TLS stream inside the stream itself, and check this property on reads/writes in order to detect misuse. The fake TLS wrapper checks this property and removes it in order to "wrap" the stream, making reads and writes work again.
* | Merge branch 'bug252' into 'main'eta2021-12-076-15/+124
|\ \ | | | | | | | | | | | | | | | | | | Make DNS fields in arti-client/src/client.rs configurable Closes #252 See merge request tpo/core/arti!171
| * | Rename ClientDNSConfig -> ClientTimeoutConfigNeel Chauhan2021-12-074-37/+43
| | |
| * | Improve ClientDNSConfig field commentsNeel Chauhan2021-12-031-3/+5
| | |
| * | Make DNS fields in arti-client/src/client.rs configurableNeel Chauhan2021-12-036-15/+116
| | |
* | | Merge branch 'real_chutney_v2' into 'main'eta2021-12-072-10/+37
|\ \ \ | |_|/ |/| | | | | | | | Detect and use CHUTNEY_PATH in test scripts. See merge request tpo/core/arti!168
| * | chutney: Make $target relative to ${CHUTNEY_PATH}Nick Mathewson2021-12-052-6/+11
| | | | | | | | | | | | This is per a suggestion from @trinity-1686a.