[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[tor-commits] [tor/master] rust: Refactor Rust impl of protover_list_supports_protocol_or_later().



commit 0a5494b81df684109986354a3d31051b6f8d0bec
Author: Isis Lovecruft <isis@xxxxxxxxxxxxxx>
Date:   Wed Mar 21 02:59:25 2018 +0000

    rust: Refactor Rust impl of protover_list_supports_protocol_or_later().
    
    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_or_later()` to use
       new types and methods.
---
 src/rust/protover/ffi.rs | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/src/rust/protover/ffi.rs b/src/rust/protover/ffi.rs
index 0d0376e52..7f8d86d04 100644
--- a/src/rust/protover/ffi.rs
+++ b/src/rust/protover/ffi.rs
@@ -138,13 +138,15 @@ pub extern "C" fn protocol_list_supports_protocol_or_later(
         Err(_) => return 0,
     };
 
-    let is_supported = protover_string_supports_protocol_or_later(
-        protocol_list,
-        protocol,
-        version,
-    );
+    let proto_entry: UnvalidatedProtoEntry = match protocol_list.parse() {
+        Ok(n)  => n,
+        Err(_) => return 1,
+    };
 
-    return if is_supported { 1 } else { 0 };
+    if proto_entry.supports_protocol_or_later(&protocol.into(), &version) {
+        return 1;
+    }
+    0
 }
 
 /// Provide an interface for C to translate arguments and return types for



_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits