mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-09-23 14:34:58 +02:00
e6625113c9
* ADD new protover::protoset module. * ADD new protover::protoset::ProtoSet class for holding protover versions. * REMOVE protover::Versions type implementation and its method `from_version_string()`, and instead implement this behaviour in a more rust-like manner as `impl FromStr for ProtoSet`. * MOVE the `find_range()` utility function from protover::protover to protover::protoset since it's only used internally in the implementation of ProtoSet. * REMOVE the `contract_protocol_list()` function from protover::protover and instead refactor it (reusing nearly the entire thing, with minor superficial, i.e. non-behavioural, changes) into a more rusty `impl ToString for ProtoSet`. * REMOVE the `expand_version_range()` function from protover::protover and instead refactor it into a more rusty implementation of `impl Into<Vec<Version>> for ProtoSet` using the new error types in protover::errors. * FIXES part of #24031: https://bugs.torproject.org/24031.
39 lines
1.6 KiB
Rust
39 lines
1.6 KiB
Rust
//! Copyright (c) 2016-2017, The Tor Project, Inc. */
|
|
//! See LICENSE for licensing information */
|
|
|
|
//! Versioning information for different pieces of the Tor protocol.
|
|
//!
|
|
//! The below description is taken from src/rust/protover.c, which is currently
|
|
//! enabled by default. We are in the process of experimenting with Rust in
|
|
//! tor, and this protover module is implemented to help achieve this goal.
|
|
//!
|
|
//! Starting in version 0.2.9.3-alpha, Tor places separate version numbers on
|
|
//! each of the different components of its protocol. Relays use these numbers
|
|
//! to advertise what versions of the protocols they can support, and clients
|
|
//! use them to find what they can ask a given relay to do. Authorities vote
|
|
//! on the supported protocol versions for each relay, and also vote on the
|
|
//! which protocols you should have to support in order to be on the Tor
|
|
//! network. All Tor instances use these required/recommended protocol versions
|
|
//! to tell what level of support for recent protocols each relay has, and
|
|
//! to decide whether they should be running given their current protocols.
|
|
//!
|
|
//! The main advantage of these protocol versions numbers over using Tor
|
|
//! version numbers is that they allow different implementations of the Tor
|
|
//! protocols to develop independently, without having to claim compatibility
|
|
//! with specific versions of Tor.
|
|
|
|
#[deny(missing_docs)]
|
|
|
|
extern crate libc;
|
|
extern crate smartlist;
|
|
extern crate external;
|
|
extern crate tor_allocate;
|
|
extern crate tor_util;
|
|
|
|
pub mod errors;
|
|
pub mod protoset;
|
|
mod protover;
|
|
pub mod ffi;
|
|
|
|
pub use protover::*;
|