[tor-commits] [tor/release-0.3.3] rust: Refactor Rust impl of protover_list_supports_protocol().
nickm at torproject.org
nickm at torproject.org
Tue Apr 3 23:16:05 UTC 2018
commit 63eeda89ea11bf719ec6fddc7619994cc7f654ca
Author: Isis Lovecruft <isis at torproject.org>
Date: Wed Mar 21 02:52:04 2018 +0000
rust: Refactor Rust impl of protover_list_supports_protocol().
This includes a subtle difference in behaviour, as in 4258f1e18, where we return
(matching the C impl's return behaviour) earlier than before if parsing failed,
saving us computation in parsing the versions into a
protover::protoset::ProtoSet.
* REFACTOR `protover::ffi::protover_list_supports_protocol()` to use new types
and methods.
---
src/rust/protover/ffi.rs | 18 ++++++++++--------
1 file changed, 10 insertions(+), 8 deletions(-)
diff --git a/src/rust/protover/ffi.rs b/src/rust/protover/ffi.rs
index c17696803..d9365bdd7 100644
--- a/src/rust/protover/ffi.rs
+++ b/src/rust/protover/ffi.rs
@@ -101,16 +101,18 @@ pub extern "C" fn protocol_list_supports_protocol(
Ok(n) => n,
Err(_) => return 1,
};
-
- let protocol = match translate_to_rust(c_protocol) {
- Ok(n) => n,
+ let proto_entry: UnvalidatedProtoEntry = match protocol_list.parse() {
+ Ok(n) => n,
Err(_) => return 0,
};
-
- let is_supported =
- protover_string_supports_protocol(protocol_list, protocol, version);
-
- return if is_supported { 1 } else { 0 };
+ let protocol: UnknownProtocol = match translate_to_rust(c_protocol) {
+ Ok(n) => n.into(),
+ Err(_) => return 0,
+ };
+ match proto_entry.supports_protocol(&protocol, &version) {
+ false => return 0,
+ true => return 1,
+ }
}
/// Provide an interface for C to translate arguments and return types for
More information about the tor-commits
mailing list