Updated dependencies.

This commit is contained in:
Revertron
2022-11-03 13:56:17 +01:00
parent c230875eb0
commit 287e88c7e2
6 changed files with 38 additions and 36 deletions
+1 -1
View File
@@ -51,4 +51,4 @@ pub const MIN_CONNECTED_NODES_START_SYNC: usize = 4;
pub const MAX_READ_BLOCK_TIME: u128 = 100;
pub const MAX_RECONNECTS: u32 = 5;
pub const MAX_IDLE_SECONDS: u64 = 180;
pub const MAX_NODES: usize = 15;
pub const MAX_NODES: usize = 200;
+2 -1
View File
@@ -7,6 +7,7 @@ use std::marker::{Send, Sync};
use std::net::{SocketAddr, TcpStream, ToSocketAddrs, UdpSocket};
#[cfg(feature = "doh")]
use std::net::IpAddr;
use std::num::NonZeroUsize;
use std::sync::atomic::{AtomicUsize, Ordering, AtomicBool};
use std::sync::mpsc::{channel, Sender};
use std::sync::{Arc, Mutex};
@@ -400,7 +401,7 @@ impl HttpsDnsClient {
.collect::<Vec<SocketAddr>>();
trace!("Using bootstraps: {:?}", &servers);
let cache: LruCache<String, Vec<SocketAddr>> = LruCache::new(10);
let cache: LruCache<String, Vec<SocketAddr>> = LruCache::new(NonZeroUsize::new(10).unwrap());
let cache = RwLock::new(cache);
let agent = ureq::AgentBuilder::new()
+2 -1
View File
@@ -3,6 +3,7 @@
use std::collections::VecDeque;
use std::io::Write;
use std::net::{Shutdown, SocketAddr, TcpListener, TcpStream, UdpSocket};
use std::num::NonZeroUsize;
use std::sync::atomic::Ordering;
use std::sync::mpsc::{channel, Sender};
use std::sync::{Arc, Condvar, Mutex};
@@ -239,7 +240,7 @@ impl DnsServer for DnsUdpServer {
let _ = Builder::new()
.name("DnsUdpServer-incoming".into())
.spawn(move || {
let mut working_ids: LruCache<(SocketAddr, u16), i64> = LruCache::new(256);
let mut working_ids: LruCache<(SocketAddr, u16), i64> = LruCache::new(NonZeroUsize::new(256).unwrap());
loop {
let _ = self.context.statistics.udp_query_count.fetch_add(1, Ordering::Release);
+17 -17
View File
@@ -64,6 +64,7 @@ impl Network {
let mut server = TcpListener::bind(addr).expect("Can't bind to address");
debug!("Started node listener on {}", server.local_addr().unwrap());
let mut buffer = vec![0u8; 65535];
let mut events = Events::with_capacity(64);
let mut poll = Poll::new().expect("Unable to create poll");
poll.registry().register(&mut server, SERVER, Interest::READABLE).expect("Error registering poll");
@@ -146,7 +147,7 @@ impl Network {
}
}
token => {
if !self.handle_connection_event(poll.registry(), event, &mut seen_blocks) {
if !self.handle_connection_event(poll.registry(), event, &mut seen_blocks, &mut buffer) {
let _ = self.peers.close_peer(poll.registry(), &token);
let blocks = self.context.lock().unwrap().chain.get_height();
let keys = self.context.lock().unwrap().chain.get_users_count();
@@ -202,7 +203,7 @@ impl Network {
log_timer = Instant::now();
seen_blocks.clear();
}
if nodes < MAX_NODES && connect_timer.elapsed().as_secs() >= 5 {
if nodes < MAX_NODES && connect_timer.elapsed().as_secs() >= 2 {
self.peers.connect_new_peers(poll.registry(), &mut self.token, yggdrasil_only);
connect_timer = Instant::now();
}
@@ -221,13 +222,13 @@ impl Network {
}
}
fn handle_connection_event(&mut self, registry: &Registry, event: &Event, seen_blocks: &mut HashSet<Bytes>) -> bool {
fn handle_connection_event(&mut self, registry: &Registry, event: &Event, seen_blocks: &mut HashSet<Bytes>, buf: &mut [u8]) -> bool {
if event.is_error() || (event.is_read_closed() && event.is_write_closed()) {
return false;
}
if event.is_readable() {
if !self.process_readable(registry, event, seen_blocks) {
if !self.process_readable(registry, event, seen_blocks, buf) {
return false;
}
}
@@ -241,8 +242,8 @@ impl Network {
true
}
fn process_readable(&mut self, registry: &Registry, event: &Event, seen_blocks: &mut HashSet<Bytes>) -> bool {
let data = {
fn process_readable(&mut self, registry: &Registry, event: &Event, seen_blocks: &mut HashSet<Bytes>, buf: &mut [u8]) -> bool {
let data_size = {
let token = event.token();
match self.peers.get_mut_peer(&token) {
None => {
@@ -308,18 +309,18 @@ impl Network {
}
_ => {
let stream = peer.get_stream();
read_message(stream)
read_message(stream, buf)
}
}
}
}
};
if let Ok(data) = data {
if let Ok(data_size) = data_size {
let data = {
match self.peers.get_peer(&event.token()) {
Some(peer) => {
match decode_message(&data, peer.get_cipher()) {
match decode_message(&buf[0..data_size], peer.get_cipher()) {
Ok(data) => data,
Err(_) => {
vec![]
@@ -380,7 +381,7 @@ impl Network {
}
}
} else {
let error = data.err().unwrap();
let error = data_size.err().unwrap();
let addr = match self.peers.get_peer(&event.token()) {
None => String::from("unknown"),
Some(peer) => peer.get_addr().to_string()
@@ -751,18 +752,17 @@ fn decode_message(data: &[u8], cipher: &Option<Chacha>) -> Result<Vec<u8>, chach
}
}
fn read_message(stream: &mut TcpStream) -> Result<Vec<u8>, Error> {
fn read_message(stream: &mut TcpStream, buf: &mut [u8]) -> Result<usize, Error> {
let instant = Instant::now();
let data_size = (stream.read_u16::<BigEndian>()? ^ 0xAAAA) as usize;
if data_size == 0 {
return Err(io::Error::from(ErrorKind::InvalidInput));
}
let mut buf = vec![0u8; data_size];
let mut bytes_read = 0;
let delay = Duration::from_millis(2);
loop {
match stream.read(&mut buf[bytes_read..]) {
match stream.read(&mut buf[bytes_read..data_size]) {
Ok(bytes) => {
bytes_read += bytes;
if bytes_read == data_size {
@@ -777,7 +777,7 @@ fn read_message(stream: &mut TcpStream) -> Result<Vec<u8>, Error> {
thread::sleep(delay);
continue;
} else {
break;
return Err(io::Error::from(ErrorKind::WouldBlock));
}
},
Err(ref err) if interrupted(err) => continue,
@@ -788,10 +788,10 @@ fn read_message(stream: &mut TcpStream) -> Result<Vec<u8>, Error> {
},
}
}
if buf.len() == data_size {
Ok(buf)
if bytes_read == data_size {
Ok(data_size)
} else {
Err(io::Error::from(ErrorKind::WouldBlock))
Err(io::Error::from(ErrorKind::BrokenPipe))
}
}