Channel: Make mutable() and engage_padding_activities infallible

As per
  https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/657#note_2826151

This gets rid of quite some Bug error paths.
This commit is contained in:
Ian Jackson 2022-08-08 17:09:14 +01:00
parent 5db974ef72
commit 03d8a09c0e
5 changed files with 12 additions and 18 deletions

View File

@ -2,7 +2,6 @@
use std::io;
use std::net::SocketAddr;
use std::result::Result as StdResult;
use std::sync::{Arc, Mutex};
use crate::{event::ChanMgrEventSender, Error};
@ -255,8 +254,8 @@ impl crate::mgr::AbstractChannel for tor_proto::channel::Channel {
fn reparameterize(&mut self, updates: Arc<ChannelsParamsUpdates>) -> tor_proto::Result<()> {
self.reparameterize(updates)
}
fn engage_padding_activities(&self) -> StdResult<(), tor_error::Bug> {
self.engage_padding_activities()
fn engage_padding_activities(&self) {
self.engage_padding_activities();
}
}

View File

@ -54,7 +54,7 @@ pub(crate) trait AbstractChannel: Clone {
/// Idempotent.
///
/// There is no way to undo the effect of this call.
fn engage_padding_activities(&self) -> StdResult<(), tor_error::Bug>;
fn engage_padding_activities(&self);
}
/// Trait to describe how channels are created.
@ -148,7 +148,7 @@ impl<CF: ChannelFactory> AbstractChanMgr<CF> {
match usage {
CU::Dir | CU::UselessCircuit => {}
CU::Exit => chan.0.engage_padding_activities()?,
CU::Exit => chan.0.engage_padding_activities(),
}
Ok(chan)
@ -393,9 +393,7 @@ mod test {
self.last_params = Some((*updates).clone());
Ok(())
}
fn engage_padding_activities(&self) -> StdResult<(), tor_error::Bug> {
Ok(())
}
fn engage_padding_activities(&self) {}
}
impl FakeChannel {

View File

@ -583,9 +583,7 @@ mod test {
self.params_update = Some(update);
Ok(())
}
fn engage_padding_activities(&self) -> StdResult<(), tor_error::Bug> {
Ok(())
}
fn engage_padding_activities(&self) {}
}
fn ch(ident: &'static str) -> ChannelState<FakeChannel> {
let channel = FakeChannel {

View File

@ -278,7 +278,7 @@ async fn padding_control_through_layers() {
c.expect_0();
eprintln!("### Exit ###");
c.channel.engage_padding_activities().unwrap();
c.channel.engage_padding_activities();
c.expect_1(Expected {
enabled: Some(true), // we now turn on our padding sender
timing: None, // with default parameters

View File

@ -412,18 +412,18 @@ impl Channel {
}
/// Acquire the lock on `mutable` (and handle any poison error)
fn mutable(&self) -> StdResult<MutexGuard<MutableDetails>, tor_error::Bug> {
fn mutable(&self) -> MutexGuard<MutableDetails> {
self.details
.mutable
.lock()
.map_err(|_| internal!("channel details poisoned"))
.expect("channel details poisoned")
}
/// Specify that this channel should do activities related to channel padding
///
/// See [`AbstractChannel::set_channel_padding_relevant`]
pub fn engage_padding_activities(&self) -> StdResult<(), tor_error::Bug> {
let mut mutable = self.mutable()?;
pub fn engage_padding_activities(&self) {
let mut mutable = self.mutable();
match &mutable.padding {
PCS::UsageDoesNotImplyPadding {
@ -442,7 +442,7 @@ impl Channel {
match self.send_control(CtrlMsg::ConfigUpdate(Arc::new(params))) {
Ok(()) => {}
Err(ChannelClosed) => return Ok(()),
Err(ChannelClosed) => return,
}
mutable.padding = PCS::PaddingConfigured;
@ -454,7 +454,6 @@ impl Channel {
}
drop(mutable); // release the lock now: lock span covers the send, ensuring ordering
Ok(())
}
/// Reparameterise (update parameters; reconfigure)