Updated dependencies.
This commit is contained in:
Generated
+11
-11
@@ -93,7 +93,7 @@ dependencies = [
|
|||||||
"chacha20poly1305",
|
"chacha20poly1305",
|
||||||
"chrono",
|
"chrono",
|
||||||
"derive_more",
|
"derive_more",
|
||||||
"digest 0.10.3",
|
"digest 0.10.5",
|
||||||
"ecies-ed25519",
|
"ecies-ed25519",
|
||||||
"ed25519-dalek",
|
"ed25519-dalek",
|
||||||
"getopts",
|
"getopts",
|
||||||
@@ -112,7 +112,7 @@ dependencies = [
|
|||||||
"serde_cbor",
|
"serde_cbor",
|
||||||
"serde_derive",
|
"serde_derive",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
"sha2 0.10.5",
|
"sha2 0.10.6",
|
||||||
"signature",
|
"signature",
|
||||||
"simplelog",
|
"simplelog",
|
||||||
"sqlite",
|
"sqlite",
|
||||||
@@ -432,9 +432,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "digest"
|
name = "digest"
|
||||||
version = "0.10.3"
|
version = "0.10.5"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "f2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506"
|
checksum = "adfbc57365a37acbd2ebf2b64d7e69bb766e2fea813521ed536f5d0520dcf86c"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"block-buffer 0.10.0",
|
"block-buffer 0.10.0",
|
||||||
"crypto-common",
|
"crypto-common",
|
||||||
@@ -766,9 +766,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "lru"
|
name = "lru"
|
||||||
version = "0.7.8"
|
version = "0.8.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "e999beba7b6e8345721bd280141ed958096a2e4abdf74f67ff4ce49b4b54e47a"
|
checksum = "b6e8aaa3f231bb4bd57b84b2d5dc3ae7f350265df8aa96492e0bc394a1571909"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"hashbrown",
|
"hashbrown",
|
||||||
]
|
]
|
||||||
@@ -864,9 +864,9 @@ checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "open"
|
name = "open"
|
||||||
version = "3.0.2"
|
version = "3.0.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "f23a407004a1033f53e93f9b45580d14de23928faad187384f891507c9b0c045"
|
checksum = "b4a3100141f1733ea40b53381b0ae3117330735ef22309a190ac57b9576ea716"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"pathdiff",
|
"pathdiff",
|
||||||
"windows-sys",
|
"windows-sys",
|
||||||
@@ -1142,13 +1142,13 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "sha2"
|
name = "sha2"
|
||||||
version = "0.10.5"
|
version = "0.10.6"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "cf9db03534dff993187064c4e0c05a5708d2a9728ace9a8959b77bedf415dac5"
|
checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cfg-if",
|
"cfg-if",
|
||||||
"cpufeatures",
|
"cpufeatures",
|
||||||
"digest 0.10.3",
|
"digest 0.10.5",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
|||||||
+5
-5
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "alfis"
|
name = "alfis"
|
||||||
version = "0.8.2"
|
version = "0.8.3"
|
||||||
authors = ["Revertron <alfis@revertron.com>"]
|
authors = ["Revertron <alfis@revertron.com>"]
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
build = "build.rs"
|
build = "build.rs"
|
||||||
@@ -15,8 +15,8 @@ getopts = "0.2.21"
|
|||||||
log = "0.4.17"
|
log = "0.4.17"
|
||||||
simplelog = "0.12.0"
|
simplelog = "0.12.0"
|
||||||
toml = "0.5.9"
|
toml = "0.5.9"
|
||||||
digest = "0.10.2"
|
digest = "0.10.5"
|
||||||
sha2 = "0.10.5"
|
sha2 = "0.10.6"
|
||||||
ed25519-dalek = "1.0"
|
ed25519-dalek = "1.0"
|
||||||
x25519-dalek = "1.2"
|
x25519-dalek = "1.2"
|
||||||
ecies-ed25519 = "0.5"
|
ecies-ed25519 = "0.5"
|
||||||
@@ -40,14 +40,14 @@ sqlite = "0.26.0"
|
|||||||
uuid = { version = "1.1.2", features = ["serde", "v4"] }
|
uuid = { version = "1.1.2", features = ["serde", "v4"] }
|
||||||
mio = { version = "0.8.4", features = ["os-poll", "net"] }
|
mio = { version = "0.8.4", features = ["os-poll", "net"] }
|
||||||
ureq = { version = "2.5", optional = true }
|
ureq = { version = "2.5", optional = true }
|
||||||
lru = "0.7.8"
|
lru = "0.8.1"
|
||||||
derive_more = "0.99.17"
|
derive_more = "0.99.17"
|
||||||
lazy_static = "1.4.0"
|
lazy_static = "1.4.0"
|
||||||
|
|
||||||
# Optional dependencies regulated by features
|
# Optional dependencies regulated by features
|
||||||
web-view = { version = "0.7.3", features = [], optional = true }
|
web-view = { version = "0.7.3", features = [], optional = true }
|
||||||
tinyfiledialogs = { version = "3.9.1", optional = true }
|
tinyfiledialogs = { version = "3.9.1", optional = true }
|
||||||
open = { version = "3.0.2", optional = true }
|
open = { version = "3.0.3", optional = true }
|
||||||
|
|
||||||
[target.'cfg(windows)'.dependencies]
|
[target.'cfg(windows)'.dependencies]
|
||||||
winapi = { version = "0.3.9", features = ["impl-default", "wincon", "shellscalingapi"] }
|
winapi = { version = "0.3.9", features = ["impl-default", "wincon", "shellscalingapi"] }
|
||||||
|
|||||||
@@ -51,4 +51,4 @@ pub const MIN_CONNECTED_NODES_START_SYNC: usize = 4;
|
|||||||
pub const MAX_READ_BLOCK_TIME: u128 = 100;
|
pub const MAX_READ_BLOCK_TIME: u128 = 100;
|
||||||
pub const MAX_RECONNECTS: u32 = 5;
|
pub const MAX_RECONNECTS: u32 = 5;
|
||||||
pub const MAX_IDLE_SECONDS: u64 = 180;
|
pub const MAX_IDLE_SECONDS: u64 = 180;
|
||||||
pub const MAX_NODES: usize = 15;
|
pub const MAX_NODES: usize = 200;
|
||||||
|
|||||||
+2
-1
@@ -7,6 +7,7 @@ use std::marker::{Send, Sync};
|
|||||||
use std::net::{SocketAddr, TcpStream, ToSocketAddrs, UdpSocket};
|
use std::net::{SocketAddr, TcpStream, ToSocketAddrs, UdpSocket};
|
||||||
#[cfg(feature = "doh")]
|
#[cfg(feature = "doh")]
|
||||||
use std::net::IpAddr;
|
use std::net::IpAddr;
|
||||||
|
use std::num::NonZeroUsize;
|
||||||
use std::sync::atomic::{AtomicUsize, Ordering, AtomicBool};
|
use std::sync::atomic::{AtomicUsize, Ordering, AtomicBool};
|
||||||
use std::sync::mpsc::{channel, Sender};
|
use std::sync::mpsc::{channel, Sender};
|
||||||
use std::sync::{Arc, Mutex};
|
use std::sync::{Arc, Mutex};
|
||||||
@@ -400,7 +401,7 @@ impl HttpsDnsClient {
|
|||||||
.collect::<Vec<SocketAddr>>();
|
.collect::<Vec<SocketAddr>>();
|
||||||
trace!("Using bootstraps: {:?}", &servers);
|
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 cache = RwLock::new(cache);
|
||||||
|
|
||||||
let agent = ureq::AgentBuilder::new()
|
let agent = ureq::AgentBuilder::new()
|
||||||
|
|||||||
+2
-1
@@ -3,6 +3,7 @@
|
|||||||
use std::collections::VecDeque;
|
use std::collections::VecDeque;
|
||||||
use std::io::Write;
|
use std::io::Write;
|
||||||
use std::net::{Shutdown, SocketAddr, TcpListener, TcpStream, UdpSocket};
|
use std::net::{Shutdown, SocketAddr, TcpListener, TcpStream, UdpSocket};
|
||||||
|
use std::num::NonZeroUsize;
|
||||||
use std::sync::atomic::Ordering;
|
use std::sync::atomic::Ordering;
|
||||||
use std::sync::mpsc::{channel, Sender};
|
use std::sync::mpsc::{channel, Sender};
|
||||||
use std::sync::{Arc, Condvar, Mutex};
|
use std::sync::{Arc, Condvar, Mutex};
|
||||||
@@ -239,7 +240,7 @@ impl DnsServer for DnsUdpServer {
|
|||||||
let _ = Builder::new()
|
let _ = Builder::new()
|
||||||
.name("DnsUdpServer-incoming".into())
|
.name("DnsUdpServer-incoming".into())
|
||||||
.spawn(move || {
|
.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 {
|
loop {
|
||||||
let _ = self.context.statistics.udp_query_count.fetch_add(1, Ordering::Release);
|
let _ = self.context.statistics.udp_query_count.fetch_add(1, Ordering::Release);
|
||||||
|
|
||||||
|
|||||||
+17
-17
@@ -64,6 +64,7 @@ impl Network {
|
|||||||
let mut server = TcpListener::bind(addr).expect("Can't bind to address");
|
let mut server = TcpListener::bind(addr).expect("Can't bind to address");
|
||||||
debug!("Started node listener on {}", server.local_addr().unwrap());
|
debug!("Started node listener on {}", server.local_addr().unwrap());
|
||||||
|
|
||||||
|
let mut buffer = vec![0u8; 65535];
|
||||||
let mut events = Events::with_capacity(64);
|
let mut events = Events::with_capacity(64);
|
||||||
let mut poll = Poll::new().expect("Unable to create poll");
|
let mut poll = Poll::new().expect("Unable to create poll");
|
||||||
poll.registry().register(&mut server, SERVER, Interest::READABLE).expect("Error registering poll");
|
poll.registry().register(&mut server, SERVER, Interest::READABLE).expect("Error registering poll");
|
||||||
@@ -146,7 +147,7 @@ impl Network {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
token => {
|
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 _ = self.peers.close_peer(poll.registry(), &token);
|
||||||
let blocks = self.context.lock().unwrap().chain.get_height();
|
let blocks = self.context.lock().unwrap().chain.get_height();
|
||||||
let keys = self.context.lock().unwrap().chain.get_users_count();
|
let keys = self.context.lock().unwrap().chain.get_users_count();
|
||||||
@@ -202,7 +203,7 @@ impl Network {
|
|||||||
log_timer = Instant::now();
|
log_timer = Instant::now();
|
||||||
seen_blocks.clear();
|
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);
|
self.peers.connect_new_peers(poll.registry(), &mut self.token, yggdrasil_only);
|
||||||
connect_timer = Instant::now();
|
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()) {
|
if event.is_error() || (event.is_read_closed() && event.is_write_closed()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if event.is_readable() {
|
if event.is_readable() {
|
||||||
if !self.process_readable(registry, event, seen_blocks) {
|
if !self.process_readable(registry, event, seen_blocks, buf) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -241,8 +242,8 @@ impl Network {
|
|||||||
true
|
true
|
||||||
}
|
}
|
||||||
|
|
||||||
fn process_readable(&mut self, registry: &Registry, event: &Event, seen_blocks: &mut HashSet<Bytes>) -> bool {
|
fn process_readable(&mut self, registry: &Registry, event: &Event, seen_blocks: &mut HashSet<Bytes>, buf: &mut [u8]) -> bool {
|
||||||
let data = {
|
let data_size = {
|
||||||
let token = event.token();
|
let token = event.token();
|
||||||
match self.peers.get_mut_peer(&token) {
|
match self.peers.get_mut_peer(&token) {
|
||||||
None => {
|
None => {
|
||||||
@@ -308,18 +309,18 @@ impl Network {
|
|||||||
}
|
}
|
||||||
_ => {
|
_ => {
|
||||||
let stream = peer.get_stream();
|
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 = {
|
let data = {
|
||||||
match self.peers.get_peer(&event.token()) {
|
match self.peers.get_peer(&event.token()) {
|
||||||
Some(peer) => {
|
Some(peer) => {
|
||||||
match decode_message(&data, peer.get_cipher()) {
|
match decode_message(&buf[0..data_size], peer.get_cipher()) {
|
||||||
Ok(data) => data,
|
Ok(data) => data,
|
||||||
Err(_) => {
|
Err(_) => {
|
||||||
vec![]
|
vec![]
|
||||||
@@ -380,7 +381,7 @@ impl Network {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
let error = data.err().unwrap();
|
let error = data_size.err().unwrap();
|
||||||
let addr = match self.peers.get_peer(&event.token()) {
|
let addr = match self.peers.get_peer(&event.token()) {
|
||||||
None => String::from("unknown"),
|
None => String::from("unknown"),
|
||||||
Some(peer) => peer.get_addr().to_string()
|
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 instant = Instant::now();
|
||||||
let data_size = (stream.read_u16::<BigEndian>()? ^ 0xAAAA) as usize;
|
let data_size = (stream.read_u16::<BigEndian>()? ^ 0xAAAA) as usize;
|
||||||
if data_size == 0 {
|
if data_size == 0 {
|
||||||
return Err(io::Error::from(ErrorKind::InvalidInput));
|
return Err(io::Error::from(ErrorKind::InvalidInput));
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut buf = vec![0u8; data_size];
|
|
||||||
let mut bytes_read = 0;
|
let mut bytes_read = 0;
|
||||||
let delay = Duration::from_millis(2);
|
let delay = Duration::from_millis(2);
|
||||||
loop {
|
loop {
|
||||||
match stream.read(&mut buf[bytes_read..]) {
|
match stream.read(&mut buf[bytes_read..data_size]) {
|
||||||
Ok(bytes) => {
|
Ok(bytes) => {
|
||||||
bytes_read += bytes;
|
bytes_read += bytes;
|
||||||
if bytes_read == data_size {
|
if bytes_read == data_size {
|
||||||
@@ -777,7 +777,7 @@ fn read_message(stream: &mut TcpStream) -> Result<Vec<u8>, Error> {
|
|||||||
thread::sleep(delay);
|
thread::sleep(delay);
|
||||||
continue;
|
continue;
|
||||||
} else {
|
} else {
|
||||||
break;
|
return Err(io::Error::from(ErrorKind::WouldBlock));
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
Err(ref err) if interrupted(err) => continue,
|
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 {
|
if bytes_read == data_size {
|
||||||
Ok(buf)
|
Ok(data_size)
|
||||||
} else {
|
} else {
|
||||||
Err(io::Error::from(ErrorKind::WouldBlock))
|
Err(io::Error::from(ErrorKind::BrokenPipe))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user