Use confirmation status from keypair in dec-state
This commit is contained in:
@@ -20,7 +20,7 @@ use super::device::DeviceInner;
|
|||||||
use super::device::EncryptionState;
|
use super::device::EncryptionState;
|
||||||
use super::workers::{worker_inbound, worker_outbound, JobInbound, JobOutbound};
|
use super::workers::{worker_inbound, worker_outbound, JobInbound, JobOutbound};
|
||||||
|
|
||||||
use super::types::{Opaque, Callback, KeyCallback};
|
use super::types::{Callback, KeyCallback, Opaque};
|
||||||
|
|
||||||
const MAX_STAGED_PACKETS: usize = 128;
|
const MAX_STAGED_PACKETS: usize = 128;
|
||||||
|
|
||||||
@@ -47,7 +47,9 @@ pub struct PeerInner<T: Opaque, S: Callback<T>, R: Callback<T>, K: KeyCallback<T
|
|||||||
pub endpoint: spin::Mutex<Option<Arc<SocketAddr>>>,
|
pub endpoint: spin::Mutex<Option<Arc<SocketAddr>>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub struct Peer<T: Opaque, S: Callback<T>, R: Callback<T>, K: KeyCallback<T>>(Arc<PeerInner<T, S, R, K>>);
|
pub struct Peer<T: Opaque, S: Callback<T>, R: Callback<T>, K: KeyCallback<T>>(
|
||||||
|
Arc<PeerInner<T, S, R, K>>,
|
||||||
|
);
|
||||||
|
|
||||||
fn treebit_list<A, O, T: Opaque, S: Callback<T>, R: Callback<T>, K: KeyCallback<T>>(
|
fn treebit_list<A, O, T: Opaque, S: Callback<T>, R: Callback<T>, K: KeyCallback<T>>(
|
||||||
peer: &Arc<PeerInner<T, S, R, K>>,
|
peer: &Arc<PeerInner<T, S, R, K>>,
|
||||||
@@ -149,10 +151,9 @@ impl<T: Opaque, S: Callback<T>, R: Callback<T>, K: KeyCallback<T>> Drop for Peer
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn new_peer<T: Opaque, S: Callback<T>, R: Callback<T>, K: KeyCallback<T>>(
|
pub fn new_peer<T: Opaque, S: Callback<T>, R: Callback<T>, K: KeyCallback<T>>(
|
||||||
device: Arc<DeviceInner<T, S, R, K>>,
|
device: Arc<DeviceInner<T, S, R, K>>,
|
||||||
opaque: T
|
opaque: T,
|
||||||
) -> Peer<T, S, R, K> {
|
) -> Peer<T, S, R, K> {
|
||||||
|
|
||||||
// allocate in-order queues
|
// allocate in-order queues
|
||||||
let (send_inbound, recv_inbound) = sync_channel(MAX_STAGED_PACKETS);
|
let (send_inbound, recv_inbound) = sync_channel(MAX_STAGED_PACKETS);
|
||||||
let (send_outbound, recv_outbound) = sync_channel(MAX_STAGED_PACKETS);
|
let (send_outbound, recv_outbound) = sync_channel(MAX_STAGED_PACKETS);
|
||||||
@@ -265,7 +266,7 @@ impl<T: Opaque, S: Callback<T>, R: Callback<T>, K: KeyCallback<T>> Peer<T, S, R,
|
|||||||
recv.insert(
|
recv.insert(
|
||||||
new.recv.id,
|
new.recv.id,
|
||||||
DecryptionState {
|
DecryptionState {
|
||||||
confirmed: AtomicBool::new(false),
|
confirmed: AtomicBool::new(new.confirmed),
|
||||||
keypair: Arc::downgrade(&new),
|
keypair: Arc::downgrade(&new),
|
||||||
key: new.recv.key,
|
key: new.recv.key,
|
||||||
protector: spin::Mutex::new(AntiReplay::new()),
|
protector: spin::Mutex::new(AntiReplay::new()),
|
||||||
|
|||||||
Reference in New Issue
Block a user