Removed all sphinx key caching from mixnodes and gateways (#713)
* Removed all sphinx key caching from mixnodes and gateways * Missing change in network monitor
This commit is contained in:
committed by
GitHub
parent
fdd34863ba
commit
fb253e53a4
@@ -18,6 +18,7 @@ use tokio_util::codec::Framed;
|
||||
|
||||
pub(crate) mod packet_processing;
|
||||
|
||||
#[derive(Clone)]
|
||||
pub(crate) struct ConnectionHandler {
|
||||
packet_processor: PacketProcessor,
|
||||
delay_forwarding_channel: PacketDelayForwardSender,
|
||||
@@ -34,13 +35,6 @@ impl ConnectionHandler {
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) fn clone_without_cache(&self) -> Self {
|
||||
ConnectionHandler {
|
||||
packet_processor: self.packet_processor.clone_without_cache(),
|
||||
delay_forwarding_channel: self.delay_forwarding_channel.clone(),
|
||||
}
|
||||
}
|
||||
|
||||
fn delay_and_forward_packet(&self, mix_packet: MixPacket, delay: Option<SphinxDelay>) {
|
||||
// determine instant at which packet should get forwarded. this way we minimise effect of
|
||||
// being stuck in the queue [of the channel] to get inserted into the delay queue
|
||||
|
||||
@@ -3,16 +3,16 @@
|
||||
|
||||
use crate::node::node_statistics;
|
||||
use crypto::asymmetric::encryption;
|
||||
use mixnode_common::cached_packet_processor::error::MixProcessingError;
|
||||
use mixnode_common::cached_packet_processor::processor::CachedPacketProcessor;
|
||||
pub use mixnode_common::cached_packet_processor::processor::MixProcessingResult;
|
||||
use mixnode_common::packet_processor::error::MixProcessingError;
|
||||
pub use mixnode_common::packet_processor::processor::MixProcessingResult;
|
||||
use mixnode_common::packet_processor::processor::SphinxPacketProcessor;
|
||||
use nymsphinx::framing::packet::FramedSphinxPacket;
|
||||
use tokio::time::Duration;
|
||||
|
||||
// PacketProcessor contains all data required to correctly unwrap and forward sphinx packets
|
||||
#[derive(Clone)]
|
||||
pub struct PacketProcessor {
|
||||
/// Responsible for performing unwrapping
|
||||
inner_processor: CachedPacketProcessor,
|
||||
inner_processor: SphinxPacketProcessor,
|
||||
|
||||
/// Responsible for updating metrics data
|
||||
node_stats_update_sender: node_statistics::UpdateSender,
|
||||
@@ -22,21 +22,13 @@ impl PacketProcessor {
|
||||
pub(crate) fn new(
|
||||
encryption_key: &encryption::PrivateKey,
|
||||
node_stats_update_sender: node_statistics::UpdateSender,
|
||||
cache_entry_ttl: Duration,
|
||||
) -> Self {
|
||||
PacketProcessor {
|
||||
inner_processor: CachedPacketProcessor::new(encryption_key.into(), cache_entry_ttl),
|
||||
inner_processor: SphinxPacketProcessor::new(encryption_key.into()),
|
||||
node_stats_update_sender,
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) fn clone_without_cache(&self) -> Self {
|
||||
PacketProcessor {
|
||||
inner_processor: self.inner_processor.clone_without_cache(),
|
||||
node_stats_update_sender: self.node_stats_update_sender.clone(),
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) fn process_received(
|
||||
&self,
|
||||
received: FramedSphinxPacket,
|
||||
|
||||
@@ -31,7 +31,7 @@ impl Listener {
|
||||
loop {
|
||||
match listener.accept().await {
|
||||
Ok((socket, remote_addr)) => {
|
||||
let handler = connection_handler.clone_without_cache();
|
||||
let handler = connection_handler.clone();
|
||||
tokio::spawn(handler.handle_connection(socket, remote_addr));
|
||||
}
|
||||
Err(err) => warn!("Failed to accept incoming connection - {:?}", err),
|
||||
|
||||
@@ -101,11 +101,8 @@ impl MixNode {
|
||||
) {
|
||||
info!("Starting socket listener...");
|
||||
|
||||
let packet_processor = PacketProcessor::new(
|
||||
self.sphinx_keypair.private_key(),
|
||||
node_stats_update_sender,
|
||||
self.config.get_cache_entry_ttl(),
|
||||
);
|
||||
let packet_processor =
|
||||
PacketProcessor::new(self.sphinx_keypair.private_key(), node_stats_update_sender);
|
||||
|
||||
let connection_handler = ConnectionHandler::new(packet_processor, delay_forwarding_channel);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user