Isis Lovecruft
a4797a7e62
rust: Remove now unused byte_slice_is_c_like() utility.
2018-02-10 02:31:07 +00:00
Isis Lovecruft
081e99c16f
rust: Remove empty_static_cstr() in favour of new cstr!() macro.
2018-02-10 02:19:18 +00:00
Isis Lovecruft
6c77593a57
rust: Use tor_util::strings utils for protover_compute_for_old_tor.
2018-02-10 02:18:55 +00:00
Isis Lovecruft
3c4e006e7e
rust: Use tor_util::strings utils for protover_get_supported_protocols.
2018-02-10 02:15:06 +00:00
Isis Lovecruft
8fff331bb0
rust: Add macro for passing static borrowed strings from Rust to C.
...
* ADD a new macro, tor_util::string::cstr!() which takes Rust strings,
concatenates them together, appends a NUL byte, and converts it into a
std::ffi::CStr for handing to C.
2018-02-10 02:15:06 +00:00
Isis Lovecruft
45c59eff6c
rust: Replace two unwrap()
s in FFI code with unwrap_or()
s.
2018-02-10 01:21:31 +00:00
Nick Mathewson
d9826b0a30
Merge remote-tracking branch 'frewsxcv/frewsxcv-protover'
2018-02-08 17:45:17 -05:00
Nick Mathewson
af049657eb
Stop claiming that compute_for_old_tor() returns pairs
2018-02-08 17:36:08 -05:00
Nick Mathewson
d8307cb0e9
Remove new unsafe {} use.
...
Rationale: this helps for performance only, but we don't actually
have any reason to think that the checks here are
performance-critical. Let's not normalize the use of unsafe {}.
2018-02-08 17:29:50 -05:00
Isis Lovecruft
b85436c596
protover: Fix memleak in Rust impl of protover_compute_for_old_tor.
...
* FIXES #25127 : https://bugs.torproject.org/25127
* ADDS a new module to the Rust tor_util crate for small utilities
for working with static strings between languages.
* CHANGES the return type of protover_compute_for_old_tor to point to
immutable data.
* CHANGES the code from the previous commit to use the new static
string utilities.
2018-02-07 22:51:58 +00:00
Isis Lovecruft
7ea9e080c5
protover: Fix memleak in Rust implementation.
...
* FIXES #25127 : https://bugs.torproject.org/25127 .
2018-02-06 02:56:16 +00:00
teor
b67f010678
Add Link protocol version 5 to the supported protocols list in protover.rs
...
And fix the unsupported protover example so it uses a Link protover much
higher than 5.
Part of #25070 , bugfix on 0.3.3.1-alpha, which introduced the protover crate.
2018-01-30 02:18:57 +11:00
Corey Farwell
124caf28e6
Wrap types in protover.rs.
...
https://trac.torproject.org/projects/tor/ticket/24030
Introduce new wrapper types:
- `SupportedProtocols`
- `Versions`
Introduce a type alias:
- `Version` (`u32`)
2018-01-29 07:30:51 -05:00
Chelsea Holland Komlo
d0184963f9
fixups from code review
2018-01-22 18:33:22 -05:00
Nick Mathewson
1dab8bae21
smartlist.rs: The libc::c_char type is not the same as i8.
...
The code had been using c_char and i8 interchangeably, but it turns
out that c_char is only i8 on platforms where "char" is signed. On
other platforms, c_char is u8.
Fixes bug 24794; bug not on any released Tor.
2018-01-04 12:21:55 -05:00
Corey Farwell
2529319f68
[fixup] this might be an improvement?
2017-12-28 18:17:45 -08:00
Corey Farwell
8ba5805bae
Remove unneeded heap allocations in protover.rs.
2017-12-27 22:05:06 -08:00
Chelsea Holland Komlo
510a91af53
remove unnecessary lifetime
2017-12-22 00:26:52 -05:00
Chelsea Holland Komlo
4cdf0c8899
add testing implementation for tor logging
2017-12-21 19:01:30 -05:00
Chelsea Holland Komlo
d4be1b1e76
allow running protover test with a testing feature flag
2017-12-21 15:29:33 -05:00
Chelsea Holland Komlo
71a5376141
move macro body to inline rust function
2017-12-21 15:29:33 -05:00
Chelsea Holland Komlo
0e032fe9ea
fixups from code review
2017-12-21 15:29:33 -05:00
Chelsea Holland Komlo
cd8bcacfe1
cargo fmt fixes
2017-12-21 15:29:33 -05:00
Chelsea Holland Komlo
3dfe8e6522
add minimal rust module for logging to tor's logger
...
Allows an optional no-op for testing purposes
2017-12-21 15:29:33 -05:00
Nick Mathewson
1969d57363
Change our build process to run Cargo from inside the build tree
...
Instead of using the cwd to specify the location of Cargo.toml, we
use the --manifest-path option to specify its location explicitly.
This works around the bug that isis diagnosed on our jenkins builds.
2017-12-05 14:23:55 -05:00
Nick Mathewson
0694a6dc01
Don't pass --quiet to cargo for now
...
Fixes bug 24518.
2017-12-04 14:19:22 -05:00
Chelsea Holland Komlo
1c50331b9a
annotate where C and Rust need to stay in sync
2017-11-11 23:19:34 -05:00
Nick Mathewson
039a776367
slight improvement to rust idiomicity
2017-11-09 09:48:52 -05:00
Nick Mathewson
c80bb04542
Rust implementation of protocol_list_supports_protocol_or_later()
2017-11-09 09:42:09 -05:00
Alex Xu (Hello71)
a72e13a669
Fix rust welcome message typo.
2017-11-05 13:58:51 -05:00
Sebastian Hahn
acdd349dee
rename {,TOR_}RUST_DEPENDENCIES
2017-11-01 13:45:15 -04:00
Nick Mathewson
69502942b0
[rust] Avoid a clone in contract_protocol_list()
2017-10-27 13:02:14 -04:00
Nick Mathewson
6e08807b54
Add a build-rust alias to just rebuild the rust code.
2017-10-27 12:52:07 -04:00
Nick Mathewson
1e66ab363a
[rust] Add "unsafe" to the testing-mode tor_malloc_ wrapper.
...
This change lets us remove the allow(unused_unsafe) directive
from allocate_and_copy_string().
2017-10-27 12:49:51 -04:00
Nick Mathewson
3a364529a4
Make distcleancheck pass with --enable-rust
2017-10-27 12:35:13 -04:00
Nick Mathewson
2153814ba8
Include rust files in 'make dist'
2017-10-27 12:19:31 -04:00
Nick Mathewson
7f764bcba8
repair "make distcheck"
2017-10-27 11:59:15 -04:00
Nick Mathewson
2ca8fcb892
Add missing copyright/license statements on all .rs files
...
(Yes, I have Chelsea's permission.)
2017-10-27 10:02:08 -04:00
Chelsea Holland Komlo
6be75bd61d
cargo fmt; fix line length warnings
2017-10-27 10:02:08 -04:00
Chelsea Holland Komlo
90daad999e
remove experimental rust features
...
allow unsafe on function that calls C
2017-10-27 10:02:08 -04:00
Chelsea Holland Komlo
7999d0bf6b
update tor_allocate and add tests
2017-10-27 10:02:08 -04:00
Chelsea Holland Komlo
7d126b9db9
remove unused include.am for rust modules
2017-10-27 10:02:08 -04:00
Chelsea Holland Komlo
cd2a036959
refactor smartlist for readability
...
limit scoping of unsafe, and other cleanup
2017-10-27 10:02:08 -04:00
Chelsea Holland Komlo
91bca5c31b
move to allocating c strings from rust
2017-10-27 10:02:08 -04:00
Chelsea Holland Komlo
76bbdfbfa9
add tor allocator for rust
2017-10-27 10:02:08 -04:00
Chelsea Holland Komlo
d14a83f74f
remove unneeded dependencies, remove types where unnecessary
2017-10-27 10:02:08 -04:00
Chelsea Holland Komlo
0c4d535972
refactor build infrastructure for single rust binary
2017-10-27 10:02:08 -04:00
Chelsea Holland Komlo
be583a34a3
use tor allocator for string allocation in rust
2017-10-27 10:02:08 -04:00
Chelsea Holland Komlo
0c04b54d4d
minimize scope for unsafe
...
update documentation
missing check for null
2017-10-27 10:02:08 -04:00
Chelsea Holland Komlo
d1820c1516
rust implementation of protover
2017-10-27 10:02:08 -04:00
Ties Stuij
2e99f839e9
22839: Build tor with rust enabled on win
...
- make tor_util static library name configurable
- fix Rust libary dependency order for Windows
2017-08-21 15:08:24 -04:00
Chelsea H. Komlo
eb355e031e
use CARGO_HOME instead of HOME when building with rust
2017-07-13 18:12:35 +00:00
Sebastian Hahn
70c067102b
Allow Rust build using locally supplied crates or crates.io
...
This adds a couple of configure commands to control whether we're
requiring all dependencies to be available locally (default) or not
(--enable-cargo-online-mode). When building from a tarball, we require
the RUST_DEPENDENCIES variable to point to the local repository of
crates. This also adds src/ext/rust as a git submodule that contains
such a local repository for easy setup.
2017-05-19 08:47:11 -04:00
Sebastian Hahn
d6f9a4f11a
cargo-online-mode configure argument
...
Passing --enable-cargo-online-mode during configure allows cargo to make
network requests while building Tor or running tests. If this flag is
not supplied, the dependencies need to be available in the form of a
local mirror.
2017-05-19 08:47:11 -04:00
Sebastian Hahn
ed15511ac3
Add rustfmt.toml
2017-05-19 08:47:11 -04:00
Sebastian Hahn
f8ef7c65d1
Add some Rust utility functions and print support
...
This gives an indication in the log that Tor was built with Rust
support, as well as laying some groundwork for further string-returning
APIs to be converted to Rust
2017-05-19 08:47:10 -04:00