mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-24 12:23:32 +01:00
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.
This commit is contained in:
parent
c7bcca0233
commit
63eeda89ea
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user