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:
parent
5db974ef72
commit
03d8a09c0e
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue