From 046c06beebfbcf7f08383ba9dddcd8ea5be5de5a Mon Sep 17 00:00:00 2001 From: Revertron Date: Tue, 23 Mar 2021 11:41:50 +0100 Subject: [PATCH] First signed block number changed to 35 to be able to get more signers. Refactored cloning of Arcs. --- src/commons/constants.rs | 2 +- src/dns/resolve.rs | 14 +++++++------- src/dns/server.rs | 22 +++++++++++----------- src/dns_utils.rs | 6 +++--- src/keys.rs | 2 +- src/main.rs | 6 +++--- src/miner.rs | 6 +++--- src/p2p/network.rs | 10 +++++----- 8 files changed, 34 insertions(+), 34 deletions(-) diff --git a/src/commons/constants.rs b/src/commons/constants.rs index 8d50d8e..ac1283f 100644 --- a/src/commons/constants.rs +++ b/src/commons/constants.rs @@ -5,7 +5,7 @@ pub const BLOCK_DIFFICULTY: u32 = 20; pub const LOCKER_DIFFICULTY: u32 = 14; pub const KEYSTORE_DIFFICULTY: usize = 23; -pub const LOCKER_BLOCK_START: u64 = 16; +pub const LOCKER_BLOCK_START: u64 = 35; pub const LOCKER_BLOCK_LOCKERS: u64 = 7; pub const LOCKER_BLOCK_SIGNS: u64 = 4; pub const LOCKER_BLOCK_TIME: i64 = 300; diff --git a/src/dns/resolve.rs b/src/dns/resolve.rs index 6e53c06..ee0ee29 100644 --- a/src/dns/resolve.rs +++ b/src/dns/resolve.rs @@ -80,7 +80,7 @@ impl ForwardingDnsResolver { impl DnsResolver for ForwardingDnsResolver { fn get_context(&self) -> Arc { - self.context.clone() + Arc::clone(&self.context) } fn perform(&mut self, qname: &str, qtype: QueryType) -> Result { @@ -114,7 +114,7 @@ impl RecursiveDnsResolver { impl DnsResolver for RecursiveDnsResolver { fn get_context(&self) -> Arc { - self.context.clone() + Arc::clone(&self.context) } fn perform(&mut self, qname: &str, qtype: QueryType) -> Result { @@ -242,7 +242,7 @@ mod tests { None => panic!(), } - let mut resolver = context.create_resolver(context.clone()); + let mut resolver = context.create_resolver(Arc::clone(&context)); // First verify that we get a match back { @@ -303,7 +303,7 @@ mod tests { Ok(packet) })); - let mut resolver = context.create_resolver(context.clone()); + let mut resolver = context.create_resolver(Arc::clone(&context)); // Expect failure when no name servers are available if let Ok(_) = resolver.resolve("google.com", QueryType::A, true) { @@ -319,7 +319,7 @@ mod tests { Ok(packet) })); - let mut resolver = context.create_resolver(context.clone()); + let mut resolver = context.create_resolver(Arc::clone(&context)); // Expect failure when no name servers are available if let Ok(_) = resolver.resolve("google.com", QueryType::A, true) { @@ -383,7 +383,7 @@ mod tests { Ok(packet) })); - let mut resolver = context.create_resolver(context.clone()); + let mut resolver = context.create_resolver(Arc::clone(&context)); // Expect failure when no name servers are available if let Ok(_) = resolver.resolve("google.com", QueryType::A, true) { @@ -493,7 +493,7 @@ mod tests { Ok(packet) })); - let mut resolver = context.create_resolver(context.clone()); + let mut resolver = context.create_resolver(Arc::clone(&context)); // Insert name servers let mut nameservers = Vec::new(); diff --git a/src/dns/server.rs b/src/dns/server.rs index 4261395..c076c74 100644 --- a/src/dns/server.rs +++ b/src/dns/server.rs @@ -111,7 +111,7 @@ pub fn execute_query(context: Arc, request: &DnsPacket) -> DnsPac let question = &request.questions[0]; packet.questions.push(question.clone()); - let mut resolver = context.create_resolver(context.clone()); + let mut resolver = context.create_resolver(Arc::clone(&context)); let rescode = match resolver.resolve(&question.name, question.qtype, request.header.recursion_desired) { Ok(result) => { let rescode = result.header.rescode; @@ -188,7 +188,7 @@ impl DnsServer for DnsUdpServer { } }; - let context = self.context.clone(); + let context = Arc::clone(&self.context); let request_cond = self.request_cond.clone(); let request_queue = self.request_queue.clone(); @@ -222,7 +222,7 @@ impl DnsServer for DnsUdpServer { // Create a response buffer, and ask the context for an appropriate resolver let mut res_buffer = VectorPacketBuffer::new(); - let mut packet = execute_query(context.clone(), &request); + let mut packet = execute_query(Arc::clone(&context), &request); let _ = packet.write(&mut res_buffer, size_limit); // Fire off the response @@ -298,7 +298,7 @@ impl DnsServer for DnsTcpServer { let (tx, rx) = channel(); self.senders.push(tx); - let context = self.context.clone(); + let context = Arc::clone(&self.context); let name = "DnsTcpServer-request-".to_string() + &thread_id.to_string(); let _ = Builder::new().name(name).spawn(move || { @@ -322,7 +322,7 @@ impl DnsServer for DnsTcpServer { let mut res_buffer = VectorPacketBuffer::new(); - let mut packet = execute_query(context.clone(), &request); + let mut packet = execute_query(Arc::clone(&context), &request); ignore_or_report!(packet.write(&mut res_buffer, 0xFFFF), "Failed to write packet to buffer"); // As is the case for incoming queries, we need to send a 2 byte length @@ -446,7 +446,7 @@ mod tests { // A successful resolve { - let res = execute_query(context.clone(), &build_query("google.com", QueryType::A)); + let res = execute_query(Arc::clone(&context), &build_query("google.com", QueryType::A)); assert_eq!(1, res.answers.len()); match res.answers[0] { @@ -460,7 +460,7 @@ mod tests { // A successful resolve, that also resolves a CNAME without recursive lookup { let res = execute_query( - context.clone(), + Arc::clone(&context), &build_query("www.facebook.com", QueryType::CNAME), ); assert_eq!(2, res.answers.len()); @@ -483,7 +483,7 @@ mod tests { // A successful resolve, that also resolves a CNAME through recursive lookup { let res = execute_query( - context.clone(), + Arc::clone(&context), &build_query("www.microsoft.com", QueryType::CNAME), ); assert_eq!(2, res.answers.len()); @@ -505,7 +505,7 @@ mod tests { // An unsuccessful resolve, but without any error { - let res = execute_query(context.clone(), &build_query("yahoo.com", QueryType::A)); + let res = execute_query(Arc::clone(&context), &build_query("yahoo.com", QueryType::A)); assert_eq!(ResultCode::NXDOMAIN, res.header.rescode); assert_eq!(0, res.answers.len()); }; @@ -521,7 +521,7 @@ mod tests { // This should generate an error code, since recursive resolves are // no longer allowed { - let res = execute_query(context.clone(), &build_query("yahoo.com", QueryType::A)); + let res = execute_query(Arc::clone(&context), &build_query("yahoo.com", QueryType::A)); assert_eq!(ResultCode::REFUSED, res.header.rescode); assert_eq!(0, res.answers.len()); }; @@ -529,7 +529,7 @@ mod tests { // Send a query without a question, which should fail with an error code { let query_packet = DnsPacket::new(); - let res = execute_query(context.clone(), &query_packet); + let res = execute_query(Arc::clone(&context), &query_packet); assert_eq!(ResultCode::FORMERR, res.header.rescode); assert_eq!(0, res.answers.len()); }; diff --git a/src/dns_utils.rs b/src/dns_utils.rs index 51fcc82..843c3b6 100644 --- a/src/dns_utils.rs +++ b/src/dns_utils.rs @@ -9,17 +9,17 @@ use log::{debug, error, info, LevelFilter, trace, warn}; /// Starts UDP and TCP DNS-servers pub fn start_dns_server(context: &Arc>, settings: &Settings) { - let server_context = create_server_context(context.clone(), &settings); + let server_context = create_server_context(Arc::clone(&context), &settings); if server_context.enable_udp { - let udp_server = DnsUdpServer::new(server_context.clone(), settings.dns.threads); + let udp_server = DnsUdpServer::new(Arc::clone(&server_context), settings.dns.threads); if let Err(e) = udp_server.run_server() { error!("Failed to bind UDP listener: {:?}", e); } } if server_context.enable_tcp { - let tcp_server = DnsTcpServer::new(server_context.clone(), settings.dns.threads); + let tcp_server = DnsTcpServer::new(Arc::clone(&server_context), settings.dns.threads); if let Err(e) = tcp_server.run_server() { error!("Failed to bind TCP listener: {:?}", e); } diff --git a/src/keys.rs b/src/keys.rs index 8f8de2d..e9876b6 100644 --- a/src/keys.rs +++ b/src/keys.rs @@ -140,7 +140,7 @@ pub fn create_key(context: Arc>) { let miners_count = Arc::new(AtomicUsize::new(0)); { context.lock().unwrap().bus.post(Event::KeyGeneratorStarted); } for _cpu in 0..num_cpus::get() { - let context = context.clone(); + let context = Arc::clone(&context); let mining = mining.clone(); let miners_count = miners_count.clone(); thread::spawn(move || { diff --git a/src/main.rs b/src/main.rs index 261db84..cd64977 100644 --- a/src/main.rs +++ b/src/main.rs @@ -105,11 +105,11 @@ fn main() { let context: Arc> = Arc::new(Mutex::new(Context::new(env!("CARGO_PKG_VERSION").to_owned(), settings, keystore, chain))); dns_utils::start_dns_server(&context, &settings_copy); - let mut miner_obj = Miner::new(context.clone()); + let mut miner_obj = Miner::new(Arc::clone(&context)); miner_obj.start_mining_thread(); let miner: Arc> = Arc::new(Mutex::new(miner_obj)); - let mut network = Network::new(context.clone()); + let mut network = Network::new(Arc::clone(&context)); network.start().expect("Error starting network component"); create_genesis_if_needed(&context, &miner); @@ -120,7 +120,7 @@ fn main() { } } else { #[cfg(feature = "webgui")] - web_ui::run_interface(context.clone(), miner.clone()); + web_ui::run_interface(Arc::clone(&context), miner.clone()); } // Without explicitly detaching the console cmd won't redraw it's prompt. diff --git a/src/miner.rs b/src/miner.rs index 02a3e84..2dc71b5 100644 --- a/src/miner.rs +++ b/src/miner.rs @@ -27,7 +27,7 @@ pub struct Miner { impl Miner { pub fn new(context: Arc>) -> Self { Miner { - context: context.clone(), + context, blocks: Arc::new(Mutex::new(Vec::new())), running: Arc::new(AtomicBool::new(false)), mining: Arc::new(AtomicBool::new(false)), @@ -47,7 +47,7 @@ impl Miner { } pub fn start_mining_thread(&mut self) { - let context = self.context.clone(); + let context = Arc::clone(&self.context); let blocks = self.blocks.clone(); let running = self.running.clone(); let mining = self.mining.clone(); @@ -66,7 +66,7 @@ impl Miner { info!("Got new block to mine"); let block = lock.remove(0); mining.store(true, Ordering::SeqCst); - Miner::mine_internal(context.clone(), block, mining.clone()); + Miner::mine_internal(Arc::clone(&context), block, mining.clone()); } else { let _ = cond_var.wait(lock).expect("Error in wait lock!"); } diff --git a/src/p2p/network.rs b/src/p2p/network.rs index 18cab9f..8312977 100644 --- a/src/p2p/network.rs +++ b/src/p2p/network.rs @@ -48,7 +48,7 @@ impl Network { 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"); - let context = self.context.clone(); + let context = Arc::clone(&self.context); thread::spawn(move || { // Give UI some time to appear :) thread::sleep(Duration::from_millis(2000)); @@ -100,7 +100,7 @@ impl Network { poll.registry().reregister(&mut server, SERVER, Interest::READABLE).expect("Error reregistering server"); } token => { - if !handle_connection_event(context.clone(), &mut peers, &poll.registry(), &event) { + if !handle_connection_event(Arc::clone(&context), &mut peers, &poll.registry(), &event) { let _ = peers.close_peer(poll.registry(), &token); let mut context = context.lock().unwrap(); let blocks_count = context.chain.height(); @@ -121,7 +121,7 @@ impl Network { } (height, context.chain.last_hash()) }; - mine_locker_block(context.clone()); + mine_locker_block(Arc::clone(&context)); peers.send_pings(poll.registry(), height, hash); peers.connect_new_peers(poll.registry(), &mut unique_token); } @@ -147,7 +147,7 @@ fn handle_connection_event(context: Arc>, peers: &mut Peers, regi match Message::from_bytes(data) { Ok(message) => { let m = format!("{:?}", &message); - let new_state = handle_message(context.clone(), message, peers, &event.token()); + let new_state = handle_message(Arc::clone(&context), message, peers, &event.token()); let peer = peers.get_mut_peer(&event.token()).unwrap(); debug!("Got message from {}: {:?}", &peer.get_addr(), &m); let stream = peer.get_stream(); @@ -377,7 +377,7 @@ fn handle_message(context: Arc>, message: Message, peers: &mut Pe return State::Banned; } } - let context = context.clone(); + let context = Arc::clone(&context); let peers_count = peers.get_peers_active_count(); thread::spawn(move || { let mut context = context.lock().unwrap();