mirror of
https://github.com/jmcorgan/fips.git
synced 2026-08-09 00:04:54 +00:00
Merge maint into master (libclang build-prereq doc + transport mutex-poison recovery)
This commit is contained in:
@@ -34,7 +34,7 @@ impl DiscoveryBuffer {
|
||||
pub fn add_peer(&self, addr: &BleAddr) {
|
||||
let ta = addr.to_transport_addr();
|
||||
let peer = DiscoveredPeer::new(self.transport_id, ta.clone());
|
||||
let mut peers = self.peers.lock().unwrap();
|
||||
let mut peers = self.peers.lock().unwrap_or_else(|e| e.into_inner());
|
||||
// Deduplicate by address string
|
||||
let addr_str = addr.to_string_repr();
|
||||
peers.retain(|p| p.addr.as_str() != Some(addr_str.as_str()));
|
||||
@@ -49,7 +49,7 @@ impl DiscoveryBuffer {
|
||||
pub fn add_peer_with_pubkey(&self, addr: &BleAddr, pubkey: XOnlyPublicKey) {
|
||||
let ta = addr.to_transport_addr();
|
||||
let peer = DiscoveredPeer::with_hint(self.transport_id, ta.clone(), pubkey);
|
||||
let mut peers = self.peers.lock().unwrap();
|
||||
let mut peers = self.peers.lock().unwrap_or_else(|e| e.into_inner());
|
||||
let addr_str = addr.to_string_repr();
|
||||
peers.retain(|p| p.addr.as_str() != Some(addr_str.as_str()));
|
||||
peers.push(peer);
|
||||
@@ -57,7 +57,7 @@ impl DiscoveryBuffer {
|
||||
|
||||
/// Drain all discovered peers since the last call.
|
||||
pub fn take(&self) -> Vec<DiscoveredPeer> {
|
||||
let mut peers = self.peers.lock().unwrap();
|
||||
let mut peers = self.peers.lock().unwrap_or_else(|e| e.into_inner());
|
||||
std::mem::take(&mut *peers)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -634,7 +634,10 @@ impl MockBleIo {
|
||||
where
|
||||
F: Fn(&BleAddr, u16) -> Result<MockBleStream, TransportError> + Send + Sync + 'static,
|
||||
{
|
||||
*self.connect_handler.lock().unwrap() = Some(Box::new(handler));
|
||||
*self
|
||||
.connect_handler
|
||||
.lock()
|
||||
.unwrap_or_else(|e| e.into_inner()) = Some(Box::new(handler));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -654,7 +657,10 @@ impl BleIo for MockBleIo {
|
||||
}
|
||||
|
||||
async fn connect(&self, addr: &BleAddr, psm: u16) -> Result<Self::Stream, TransportError> {
|
||||
let handler = self.connect_handler.lock().unwrap();
|
||||
let handler = self
|
||||
.connect_handler
|
||||
.lock()
|
||||
.unwrap_or_else(|e| e.into_inner());
|
||||
match handler.as_ref() {
|
||||
Some(f) => f(addr, psm),
|
||||
None => Err(TransportError::ConnectionRefused),
|
||||
|
||||
@@ -65,7 +65,7 @@ impl DiscoveryBuffer {
|
||||
pub fn add_peer(&self, src_mac: [u8; 6], pubkey: XOnlyPublicKey) {
|
||||
let addr = TransportAddr::from_bytes(&src_mac);
|
||||
let peer = DiscoveredPeer::with_hint(self.transport_id, addr, pubkey);
|
||||
let mut peers = self.peers.lock().unwrap();
|
||||
let mut peers = self.peers.lock().unwrap_or_else(|e| e.into_inner());
|
||||
// Deduplicate by MAC address — keep the latest
|
||||
peers.retain(|p| p.addr.as_bytes() != src_mac);
|
||||
peers.push(peer);
|
||||
@@ -73,7 +73,7 @@ impl DiscoveryBuffer {
|
||||
|
||||
/// Drain all discovered peers since the last call.
|
||||
pub fn take(&self) -> Vec<DiscoveredPeer> {
|
||||
let mut peers = self.peers.lock().unwrap();
|
||||
let mut peers = self.peers.lock().unwrap_or_else(|e| e.into_inner());
|
||||
std::mem::take(&mut *peers)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -214,7 +214,7 @@ impl PacketSocket {
|
||||
/// parses the next frame from the internal buffer, stripping the
|
||||
/// Ethernet header. Returns `(payload_bytes, source_mac)`.
|
||||
pub fn recv_from(&self, buf: &mut [u8]) -> std::io::Result<(usize, [u8; 6])> {
|
||||
let mut state = self.read_state.lock().unwrap();
|
||||
let mut state = self.read_state.lock().unwrap_or_else(|e| e.into_inner());
|
||||
let state = &mut *state;
|
||||
loop {
|
||||
// Try to parse the next frame from the read buffer
|
||||
|
||||
@@ -144,7 +144,7 @@ impl UdpTransport {
|
||||
|
||||
// Check cache
|
||||
{
|
||||
let cache = self.dns_cache.lock().unwrap();
|
||||
let cache = self.dns_cache.lock().unwrap_or_else(|e| e.into_inner());
|
||||
if let Some((resolved, cached_at)) = cache.get(addr)
|
||||
&& cached_at.elapsed() < DNS_CACHE_TTL
|
||||
{
|
||||
@@ -157,7 +157,7 @@ impl UdpTransport {
|
||||
|
||||
// Store in cache
|
||||
{
|
||||
let mut cache = self.dns_cache.lock().unwrap();
|
||||
let mut cache = self.dns_cache.lock().unwrap_or_else(|e| e.into_inner());
|
||||
cache.insert(addr.clone(), (resolved, Instant::now()));
|
||||
}
|
||||
|
||||
@@ -230,14 +230,14 @@ impl UdpTransport {
|
||||
if let Some(ref name) = self.name {
|
||||
info!(
|
||||
name = %name,
|
||||
local_addr = %self.local_addr.unwrap(),
|
||||
local_addr = %self.local_addr.map_or_else(|| "<unbound>".to_string(), |a| a.to_string()),
|
||||
recv_buf = actual_recv,
|
||||
send_buf = actual_send,
|
||||
"UDP transport started"
|
||||
);
|
||||
} else {
|
||||
info!(
|
||||
local_addr = %self.local_addr.unwrap(),
|
||||
local_addr = %self.local_addr.map_or_else(|| "<unbound>".to_string(), |a| a.to_string()),
|
||||
recv_buf = actual_recv,
|
||||
send_buf = actual_send,
|
||||
"UDP transport started"
|
||||
@@ -289,14 +289,14 @@ impl UdpTransport {
|
||||
if let Some(ref name) = self.name {
|
||||
info!(
|
||||
name = %name,
|
||||
local_addr = %self.local_addr.unwrap(),
|
||||
local_addr = %self.local_addr.map_or_else(|| "<unbound>".to_string(), |a| a.to_string()),
|
||||
recv_buf = actual_recv,
|
||||
send_buf = actual_send,
|
||||
"UDP transport adopted existing socket"
|
||||
);
|
||||
} else {
|
||||
info!(
|
||||
local_addr = %self.local_addr.unwrap(),
|
||||
local_addr = %self.local_addr.map_or_else(|| "<unbound>".to_string(), |a| a.to_string()),
|
||||
recv_buf = actual_recv,
|
||||
send_buf = actual_send,
|
||||
"UDP transport adopted existing socket"
|
||||
|
||||
Reference in New Issue
Block a user