summaryrefslogtreecommitdiff
path: root/crates
Commit message (Collapse)AuthorAgeFilesLines
...
| * | | | ffi: Expose OS error field.Nick Mathewson2024-08-031-2/+23
| | | | | | | | | | | | | | | | | | | | Closes #1501.
| * | | | ffi: Store the os error code in FfiError.Nick Mathewson2024-08-031-0/+40
| | | | | | | | | | | | | | | | | | | | (This is an errno or a GetLastError.)
| * | | | rpc-client-core: Add thiserror #[source] annotationsNick Mathewson2024-08-032-7/+7
| |/ / / | | | | | | | | | | | | | | | | This will make error outputs more usable, and will make it possible to expose OS error codes.
* / / / arti: Elide the -c help in the expected output of the CLI tests.Gabriela Moldovan2024-08-051-2/+1
|/ / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The help output of the `-c ` option includes some local paths, which can be quite long on some platforms, spanning over multiple lines. This causes the CLI tests to fail, because they expect each of the paths from the `-c` help to fit on a single line. To fix this, we can use `trycmd`'s `...` to match as many lines as needed. Closes #1509
* | | Merge branch 'hss-nickname-error' into 'main'gabi-2502024-08-022-4/+7
|\ \ \ | | | | | | | | | | | | | | | | Have `arti hss onion-name` error if it doesn't print the onion name See merge request tpo/core/arti!2305
| * | | Have `arti hss onion-name` error if it doesn't print the onion nameKunal Mehta2024-08-012-4/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | There are two error cases where the onion name isn't printed, but previously returned `Ok(())`. It now returns an error to exit with a non-zero status code.
* | | | Merge branch 'use-unordered-futures-rebased' into 'main'Jim Newsome2024-08-017-144/+1109
|\ \ \ \ | |_|/ / |/| | | | | | | | | | | tor-proto::circuit::StreamMap: Use StreamPollSet See merge request tpo/core/arti!2285
| * | | tor-proto: Remove circuit reactor's outbound bufferJim Newsome2024-08-011-71/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | We no longer need this. StreamMap now supports handling only one outgoing message at a time while ensuring no streams starve, so we no longer ever pull messages out of the map when we're not actually ready to send them.
| * | | tor-proto::circuit::StreamMap: Use StreamPollSetJim Newsome2024-08-014-76/+129
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Refactors `StreamMap` to use `StreamPollSet` to manage its receivers for mpsc streams. * Extends `StreamMap` to support iterating only over streams that have a pending outgoing message, and in round-robin order. * Updates `circuit::reactor::Reactor` to use this functionality. It now iterates only over streams that have a ready outgoing message, and only actually "pops" a message that is ready to be sent. This mildly simplifies the circuit reactor, but more importantly clears the way to: * Remove the "outbound queue" of messages that were pulled from stream channels but that we couldn't send yet due to congestion control. * Support opportunistic packing when preparing to send a relay message. (proposal 340). * Refactor the circuit reactor's `run_once` into futures that we can `select!` over.
| * | | Add StreamPollSetJim Newsome2024-08-012-0/+603
| | | |
| * | | Add KeyedFuturesUnorderedJim Newsome2024-08-012-0/+367
| |/ /
* / / Remove semver.md files post-release.Nick Mathewson2024-08-013-3/+0
|/ /
* | Bump "arti" crate to 1.2.6Nick Mathewson2024-08-013-3/+3
| | | | | | | | | | | | | | | | Done with ``` cargo set-version --bump patch -p arti ```
* | Bump versions for tor- and arti- crates to 0.21.0Nick Mathewson2024-08-0145-358/+358
| | | | | | | | | | | | | | | | | | | | This is the result of: ``` for crate in $( ./maint/list_crates |grep '^\(tor\|arti-\)' ); do cargo set-version -p $crate 0.21.0 done ```
* | Run "cargo update" for crates/{equix/hashx}/bench.Nick Mathewson2024-08-012-162/+210
| |
* | Minor bumps on fslock-guard, fs-mistrust, equixNick Mathewson2024-08-013-3/+3
| | | | | | | | | | | | | | | | No updates on their dependents, because: fslock-guard (only tests have changed) equix (only change is removal of a private constant) fs-mistrust (documentation, formatting, and use of Path::try_exists in tests)
* | Run "fixup-features".Nick Mathewson2024-08-013-3/+3
|/
* ffi: Make "sealed" a little less effective.Nick Mathewson2024-07-311-7/+7
| | | | | Rust 1.70 (our MSRV) will not allow us to use a trait from a private module in this way, unfortunately.
* ffi: Re-run cbindgen.Nick Mathewson2024-07-312-23/+55
|
* ffi: Add some explicit ()s to prove they are there.Nick Mathewson2024-07-312-2/+6
|
* ffi: Document safety for each function using ffi_body_raw.Nick Mathewson2024-07-312-3/+17
|
* ffi: rename ffi_body_simple to ffi_body_rawNick Mathewson2024-07-313-18/+18
|
* ffi: Document rules for ensuring return valuesNick Mathewson2024-07-311-0/+13
|
* ffi: Clean up long lines and confusing expressions.Nick Mathewson2024-07-313-9/+18
|
* ffi: Clarify rules for *out pointers.Nick Mathewson2024-07-311-3/+5
| | | | Except for *error_out, they are always set to NULL on error.
* ffi: use void to omit unreachable "on invalid" blocksNick Mathewson2024-07-314-26/+59
|
* RPC: Re-wrap some macro definitions and usages.Nick Mathewson2024-07-311-14/+41
|
* ffi: Remove all non-opt conversionsNick Mathewson2024-07-313-206/+120
| | | | | | | Additionally, inline the related conversion functions. This should reduce the total amount of unsafe code that somebody would need to look at.
* ffi: Always abort on panic.Nick Mathewson2024-07-313-42/+13
|
* ffi: Document on-error behavior of consuming and setting.Nick Mathewson2024-07-311-0/+5
|
* ffi: Refactor @init macro expansions into new functions.Nick Mathewson2024-07-311-23/+102
| | | | (Documentation movement still needed.)
* ffi: Document internal ffi_initialize macro.Nick Mathewson2024-07-311-0/+14
|
* Apply suggestions about macro behavior, design, and usageNick Mathewson2024-07-311-0/+18
|
* Apply safety-related suggestions from DizietNick Mathewson2024-07-313-5/+18
|
* RPC FFI: Write a bit more text for the C no-UB requirements.Nick Mathewson2024-07-312-11/+26
| | | | | | | I got this by reading over all the relevant Rust stdlib safety documentation (now linked to in the macro definitions), and making sure that the C no-UB text is sufficient to guarantee that those requirements are met.
* ffi: Ensures every converter tries to run.Nick Mathewson2024-07-311-30/+55
| | | | | | | | | Previously, some of our conversion macros tried to exit early with `?`. This is undesirable, since the OutPtr conversion has the side effect of writing NULL to a pointer (if it is present). Now, every conversion runs, and _then_ we exit with an error if any of them fails.
* Use macros to make FFI functions simpler to read and check.Nick Mathewson2024-07-313-145/+406
| | | | | | | | | | | | | | | | | | | | These macros do the only part of our FFI functions that needs to be `unsafe`: converting input pointers into types that can be used in safe rust. I've added documentation about what requirements each of these conversions puts onto out inputs: both informally, and via a reference to the relevant parts of the Rust library documentation. While doing this I found a safety bug in `OutPtr::from_opt_ptr`: it should have been using `MaybeUninit`. These macros should allow us to build a "proof sketch" for the safety of our FFI code. We need to show, for each input parameter: - That the documented requirements for its conversion method are also documented requirements for that kind of input, in our header file. - That the documented requirements for how it can be used after conversion are in fact followed in the code.
* rpc: Explain _why_ utf-8 in Utf8CString is a safety requirement.Nick Mathewson2024-07-311-0/+6
| | | | (and to what extent)
* Rename Utf8CStr=>Utf8CStringNick Mathewson2024-07-315-18/+18
|
* Copy suggestions from .h file to cbindgen.tomlNick Mathewson2024-07-311-7/+9
|
* rpclib: Suggestions from @diziet for improving safety docs.Nick Mathewson2024-07-312-8/+11
|
* rpclib ffi: Grand identifier renamingNick Mathewson2024-07-315-71/+92
| | | | In brief: Everything now starts with ARTI_RPC, arti_rpc, or ArtiRpc.
* rpclib: Revise/condense "safety" docs for C functionsNick Mathewson2024-07-314-98/+78
| | | | | | | | | | | | | | | These documents are no longer called "safety". They are now mostly collected as a big list of "correctness requirements" at the start of the cbindgen header. Because of these requirements, most functions no longer need their own "safety" sections. I am explicitly using `#[allow(clippy::missing_safety_doc)]` on each function, rather than adding a blanket exception: - There are other unsafe functions in this code, to which we wouldn't want an exception to apply. - Documenting the safety^W correctness requirements of a function is important enough to make sure that we aren't skipping out on it unintentionally.
* rpc: Rename OutPtr functions for clarityNick Mathewson2024-07-313-13/+13
|
* rpclib: Grand error refactoring: outparam, not thread-localNick Mathewson2024-07-316-155/+138
| | | | | | | | Per discussion, we'd rather have an optional output parameter for error objects rather than mess with thread-local variables. This is possibly less convenient for direct usage from C, but likely more convenient for wrapper functions in other languages.
* rpclib: _Sketch_ of string API.Nick Mathewson2024-07-316-40/+66
| | | | | | | | | | | | | In this API, borrowed strings are `const char *`, and owned strings are `ArtiRpcStr *`. You can get the former from the latter with `arti_rpc_str_get()`, which returns a `const char *` in hopes that you will neither modify nor free() that `const char *` (Note that there are no places where string ownership needs to be passed into this library; and at present, there is only one case where it is passed out. I do not anticipate that we will need to do intake of owned strings. We will probably need to return these in a few more cases as we add more API surface.)
* rpclib: Add "STATUS" to status codes.Nick Mathewson2024-07-312-16/+16
|
* rpc: Improve documentation and strings for FFI status codes.Nick Mathewson2024-07-312-6/+54
|
* rpclib: Tweaks from review to header documentation.Nick Mathewson2024-07-312-6/+12
|
* rpc ffi: Try a more reference-driven approach to pointer handling.Nick Mathewson2024-07-315-31/+198
|