Arti issueshttps://gitlab.torproject.org/tpo/core/arti/-/issues2023-04-22T13:45:48Zhttps://gitlab.torproject.org/tpo/core/arti/-/issues/398Inspect TODOs in source code; fix whatever we can2023-04-22T13:45:48ZNick MathewsonInspect TODOs in source code; fix whatever we can*(This is a placeholder ticket, made so that people can find it when they search for things to do under the ~"First Contribution" label.)*
In our source code, we often use the string `TODO` to indicate a place where we want to come back...*(This is a placeholder ticket, made so that people can find it when they search for things to do under the ~"First Contribution" label.)*
In our source code, we often use the string `TODO` to indicate a place where we want to come back and improve things. You can sometimes find good starting projects by looking for this string in the code.
Unfortunately, some of these `TODO` issues are harder than they initially appear: therefore, it might be a good idea to ask about the intended fix before you start on one of them. Feel free to ask here, or on the `#tor-dev` IRC channel on OFTC.
Happy hacking!https://gitlab.torproject.org/tpo/core/arti/-/issues/400Use coverage tools to find code that needs more unit tests2024-02-05T21:36:04ZNick MathewsonUse coverage tools to find code that needs more unit tests*(This is a placeholder ticket, made so that people can find it when they search for things to do under the ~"First Contribution" label.)*
We try to use coverage tools to check how well our test code actually reaches all of our function...*(This is a placeholder ticket, made so that people can find it when they search for things to do under the ~"First Contribution" label.)*
We try to use coverage tools to check how well our test code actually reaches all of our functions. Coverage reports are [uploaded daily](https://tpo.pages.torproject.net/core/arti/coverage/). To test your own changes to see whether you've improved coverage, you'll need to install a few extra tools:
1. Use rustup to update to a recent rust version (1.60 or newer), if you haven't done so already: `rustup update`.
1. Install the grcov prerequisites and tools:
* `rustup component add llvm-tools-preview`
* `cargo install grcov`
* (if you run into trouble, see the [grcov documentation](https://github.com/mozilla/grcov#how-to-get-grcov).)
1. In the arti source repository, run: `./maint/coverage unit`. This may take a long time.
1. Load in the newly created `coverage/all/index.html` file in your web browser, and you can inspect Arti's code coverage!
---
When you're writing new tests, make sure that your tests actually *test* the code that they're calling. It's no good to increase coverage just by *calling* the underlying code: a good test needs to make sure that the code works.
As a general rule, ask yourself: Would this test still pass if the code did the wrong thing? The answer should be "no".
Also ask yourself: would this test fail if the code did the right thing, but in a different way than it does now? Ideally, the answer should be "yes".https://gitlab.torproject.org/tpo/core/arti/-/issues/399Improve documentation and examples in `arti-client`2023-03-28T21:11:07ZNick MathewsonImprove documentation and examples in `arti-client`*(This is a placeholder ticket, made so that people can find it when they search for things to do under the ~"First Contribution" label.)*
Try to write a program using `arti`. (The interface in the `arti-client` crate is the place to s...*(This is a placeholder ticket, made so that people can find it when they search for things to do under the ~"First Contribution" label.)*
Try to write a program using `arti`. (The interface in the `arti-client` crate is the place to start.)
As you do this, you'll probably find that the documentation didn't explain something you wanted to know, or didn't explain it very well. After you figure out the issue (either by asking us, or reading the code), why not contribute a patch to improve the documentation?
----
Also, it's a good convention for all Rust code to have rustdoc examples for how to use it. These examples can be at the function level, the module level, or the type level. Right now, a lot of our crates are missing those. (`arti-client` is most important, but examples everywhere are welcome.)
When writing examples, please make sure that the example actually shows people how they would would _want_ to use the code, and what happens when they do.Arti: Feature parity with the C implementationhttps://gitlab.torproject.org/tpo/core/arti/-/issues/35Refactor buffers in tor-dirclient/src/lib.rs2021-08-02T05:30:07ZNick MathewsonRefactor buffers in tor-dirclient/src/lib.rsRight now, the buffer used in tor-dirclient/src/lib.rs is a `Vec<u8>`, and the code copies around inside it a lot.
It might be cool to change that to be a VecDeque<u8> instead, and not have to copy inside the buffer.Right now, the buffer used in tor-dirclient/src/lib.rs is a `Vec<u8>`, and the code copies around inside it a lot.
It might be cool to change that to be a VecDeque<u8> instead, and not have to copy inside the buffer.https://gitlab.torproject.org/tpo/core/arti/-/issues/580make arti client stop advertising TLS session tickets support in connection h...2023-04-06T12:42:35ZpseudonymisaTormake arti client stop advertising TLS session tickets support in connection handshakeClientHello includes `session_ticket Extension`.
But we disabled session tickets support server-side.
Ctor doesn't.
http://eweiibe6tdjsdprb4px6rqrzzcsi22m4koia44kc5pcjr7nec2rlxyad.onion/tpo/core/tor/-/blob/main/src/lib/tls/tortls_ope...ClientHello includes `session_ticket Extension`.
But we disabled session tickets support server-side.
Ctor doesn't.
http://eweiibe6tdjsdprb4px6rqrzzcsi22m4koia44kc5pcjr7nec2rlxyad.onion/tpo/core/tor/-/blob/main/src/lib/tls/tortls_openssl.c#L589-603