Skip to content

Commit

Permalink
Fix cargo-semver-checks hickup
Browse files Browse the repository at this point in the history
  • Loading branch information
thomaseizinger committed Dec 8, 2022
1 parent 1c2712c commit fa8151e
Show file tree
Hide file tree
Showing 4 changed files with 57 additions and 29 deletions.
12 changes: 9 additions & 3 deletions protocols/dcutr/src/handler/relayed.rs
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,10 @@ pub struct Handler {
/// A pending fatal error that results in the connection being closed.
pending_error: Option<
ConnectionHandlerUpgrErr<
EitherError<protocol::inbound::UpgradeError, protocol::outbound::UpgradeError>,
EitherError<
protocol::inbound::InboundUpgradeError,
protocol::outbound::OutboundUpgradeError,
>,
>,
>,
/// Queue of events to return when polled.
Expand All @@ -148,7 +151,7 @@ pub struct Handler {
>,
/// Inbound connect, accepted by the behaviour, pending completion.
inbound_connect:
Option<BoxFuture<'static, Result<Vec<Multiaddr>, protocol::inbound::UpgradeError>>>,
Option<BoxFuture<'static, Result<Vec<Multiaddr>, protocol::inbound::InboundUpgradeError>>>,
keep_alive: KeepAlive,
}

Expand Down Expand Up @@ -302,7 +305,10 @@ impl ConnectionHandler for Handler {
type InEvent = Command;
type OutEvent = Event;
type Error = ConnectionHandlerUpgrErr<
EitherError<protocol::inbound::UpgradeError, protocol::outbound::UpgradeError>,
EitherError<
protocol::inbound::InboundUpgradeError,
protocol::outbound::OutboundUpgradeError,
>,
>;
type InboundProtocol = upgrade::EitherUpgrade<protocol::inbound::Upgrade, DeniedUpgrade>;
type OutboundProtocol = protocol::outbound::Upgrade;
Expand Down
27 changes: 21 additions & 6 deletions protocols/dcutr/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,28 @@
pub mod behaviour;
mod handler;
mod protocol;

pub use protocol::{
inbound::UpgradeError as InboundUpgradeError, outbound::UpgradeError as OutboundUpgradeError,
PROTOCOL_NAME,
};

#[allow(clippy::derive_partial_eq_without_eq)]
mod message_proto {
include!(concat!(env!("OUT_DIR"), "/holepunch.pb.rs"));
}

pub use protocol::PROTOCOL_NAME;
pub mod inbound {
pub use crate::protocol::inbound::InboundUpgradeError as UpgradeError; // TODO: Rename the inner error once `cargo-semver-checks` supports it: https://github.com/obi1kenobi/cargo-semver-checks/issues/152
}

pub mod outbound {
pub use crate::protocol::outbound::OutboundUpgradeError as UpgradeError; // TODO: Rename the inner error once `cargo-semver-checks` supports it: https://github.com/obi1kenobi/cargo-semver-checks/issues/152
}

#[deprecated(
since = "0.8.1",
note = "Use `libp2p_dcutr::inbound::UpgradeError` instead.`"
)]
pub type InboundUpgradeError = inbound::UpgradeError;

#[deprecated(
since = "0.8.1",
note = "Use `libp2p_dcutr::outbound::UpgradeError` instead.`"
)]
pub type OutboundUpgradeError = outbound::UpgradeError;
28 changes: 16 additions & 12 deletions protocols/dcutr/src/protocol/inbound.rs
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ impl upgrade::UpgradeInfo for Upgrade {

impl upgrade::InboundUpgrade<NegotiatedSubstream> for Upgrade {
type Output = PendingConnect;
type Error = UpgradeError;
type Error = InboundUpgradeError;
type Future = BoxFuture<'static, Result<Self::Output, Self::Error>>;

fn upgrade_inbound(self, substream: NegotiatedSubstream, _: Self::Info) -> Self::Future {
Expand All @@ -50,11 +50,13 @@ impl upgrade::InboundUpgrade<NegotiatedSubstream> for Upgrade {
);

async move {
let HolePunch { r#type, obs_addrs } =
substream.next().await.ok_or(UpgradeError::StreamClosed)??;
let HolePunch { r#type, obs_addrs } = substream
.next()
.await
.ok_or(InboundUpgradeError::StreamClosed)??;

let obs_addrs = if obs_addrs.is_empty() {
return Err(UpgradeError::NoAddresses);
return Err(InboundUpgradeError::NoAddresses);
} else {
obs_addrs
.into_iter()
Expand All @@ -65,14 +67,15 @@ impl upgrade::InboundUpgrade<NegotiatedSubstream> for Upgrade {
Err(_) => true,
})
.collect::<Result<Vec<Multiaddr>, _>>()
.map_err(|_| UpgradeError::InvalidAddrs)?
.map_err(|_| InboundUpgradeError::InvalidAddrs)?
};

let r#type = hole_punch::Type::from_i32(r#type).ok_or(UpgradeError::ParseTypeField)?;
let r#type =
hole_punch::Type::from_i32(r#type).ok_or(InboundUpgradeError::ParseTypeField)?;

match r#type {
hole_punch::Type::Connect => {}
hole_punch::Type::Sync => return Err(UpgradeError::UnexpectedTypeSync),
hole_punch::Type::Sync => return Err(InboundUpgradeError::UnexpectedTypeSync),
}

Ok(PendingConnect {
Expand All @@ -93,7 +96,7 @@ impl PendingConnect {
pub async fn accept(
mut self,
local_obs_addrs: Vec<Multiaddr>,
) -> Result<Vec<Multiaddr>, UpgradeError> {
) -> Result<Vec<Multiaddr>, InboundUpgradeError> {
let msg = HolePunch {
r#type: hole_punch::Type::Connect.into(),
obs_addrs: local_obs_addrs.into_iter().map(|a| a.to_vec()).collect(),
Expand All @@ -104,11 +107,12 @@ impl PendingConnect {
.substream
.next()
.await
.ok_or(UpgradeError::StreamClosed)??;
.ok_or(InboundUpgradeError::StreamClosed)??;

let r#type = hole_punch::Type::from_i32(r#type).ok_or(UpgradeError::ParseTypeField)?;
let r#type =
hole_punch::Type::from_i32(r#type).ok_or(InboundUpgradeError::ParseTypeField)?;
match r#type {
hole_punch::Type::Connect => return Err(UpgradeError::UnexpectedTypeConnect),
hole_punch::Type::Connect => return Err(InboundUpgradeError::UnexpectedTypeConnect),
hole_punch::Type::Sync => {}
}

Expand All @@ -117,7 +121,7 @@ impl PendingConnect {
}

#[derive(Debug, Error)]
pub enum UpgradeError {
pub enum InboundUpgradeError {
#[error(transparent)]
Codec(#[from] prost_codec::Error),
#[error("Stream closed")]
Expand Down
19 changes: 11 additions & 8 deletions protocols/dcutr/src/protocol/outbound.rs
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ impl Upgrade {

impl upgrade::OutboundUpgrade<NegotiatedSubstream> for Upgrade {
type Output = Connect;
type Error = UpgradeError;
type Error = OutboundUpgradeError;
type Future = BoxFuture<'static, Result<Self::Output, Self::Error>>;

fn upgrade_outbound(self, substream: NegotiatedSubstream, _: Self::Info) -> Self::Future {
Expand All @@ -69,19 +69,22 @@ impl upgrade::OutboundUpgrade<NegotiatedSubstream> for Upgrade {

let sent_time = Instant::now();

let HolePunch { r#type, obs_addrs } =
substream.next().await.ok_or(UpgradeError::StreamClosed)??;
let HolePunch { r#type, obs_addrs } = substream
.next()
.await
.ok_or(OutboundUpgradeError::StreamClosed)??;

let rtt = sent_time.elapsed();

let r#type = hole_punch::Type::from_i32(r#type).ok_or(UpgradeError::ParseTypeField)?;
let r#type =
hole_punch::Type::from_i32(r#type).ok_or(OutboundUpgradeError::ParseTypeField)?;
match r#type {
hole_punch::Type::Connect => {}
hole_punch::Type::Sync => return Err(UpgradeError::UnexpectedTypeSync),
hole_punch::Type::Sync => return Err(OutboundUpgradeError::UnexpectedTypeSync),
}

let obs_addrs = if obs_addrs.is_empty() {
return Err(UpgradeError::NoAddresses);
return Err(OutboundUpgradeError::NoAddresses);
} else {
obs_addrs
.into_iter()
Expand All @@ -92,7 +95,7 @@ impl upgrade::OutboundUpgrade<NegotiatedSubstream> for Upgrade {
Err(_) => true,
})
.collect::<Result<Vec<Multiaddr>, _>>()
.map_err(|_| UpgradeError::InvalidAddrs)?
.map_err(|_| OutboundUpgradeError::InvalidAddrs)?
};

let msg = HolePunch {
Expand All @@ -115,7 +118,7 @@ pub struct Connect {
}

#[derive(Debug, Error)]
pub enum UpgradeError {
pub enum OutboundUpgradeError {
#[error(transparent)]
Codec(#[from] prost_codec::Error),
#[error("Stream closed")]
Expand Down

0 comments on commit fa8151e

Please sign in to comment.