From d1b7ae5352b1ae6e91ecf042cebd9246feb5bd5e Mon Sep 17 00:00:00 2001 From: Yeastplume Date: Mon, 29 Jan 2024 09:23:38 +0000 Subject: [PATCH] warning cleanup (#3759) --- core/src/core/block.rs | 31 ++++++++++++++++++++++++++----- core/src/genesis.rs | 6 +++--- core/src/pow.rs | 3 ++- p2p/src/peers.rs | 2 +- servers/src/grin/seed.rs | 5 +++-- servers/src/mining/mine_block.rs | 6 +++++- src/bin/tui/mining.rs | 8 +++++--- 7 files changed, 45 insertions(+), 16 deletions(-) diff --git a/core/src/core/block.rs b/core/src/core/block.rs index 44a5c41241..bf903f8a5a 100644 --- a/core/src/core/block.rs +++ b/core/src/core/block.rs @@ -231,7 +231,10 @@ impl Default for BlockHeader { BlockHeader { version: HeaderVersion(1), height: 0, - timestamp: DateTime::::from_utc(NaiveDateTime::from_timestamp(0, 0), Utc), + timestamp: DateTime::::from_utc( + NaiveDateTime::from_timestamp_opt(0, 0).unwrap(), + Utc, + ), prev_hash: ZERO_HASH, prev_root: ZERO_HASH, output_root: ZERO_HASH, @@ -288,16 +291,29 @@ fn read_block_header(reader: &mut R) -> Result chrono::NaiveDate::MAX.and_hms(0, 0, 0).timestamp() - || timestamp < chrono::NaiveDate::MIN.and_hms(0, 0, 0).timestamp() + if timestamp + > chrono::NaiveDate::MAX + .and_hms_opt(0, 0, 0) + .unwrap() + .timestamp() + || timestamp + < chrono::NaiveDate::MIN + .and_hms_opt(0, 0, 0) + .unwrap() + .timestamp() { return Err(ser::Error::CorruptedData); } + let ts = NaiveDateTime::from_timestamp_opt(timestamp, 0); + if ts.is_none() { + return Err(ser::Error::CorruptedData); + } + Ok(BlockHeader { version, height, - timestamp: DateTime::::from_utc(NaiveDateTime::from_timestamp(timestamp, 0), Utc), + timestamp: DateTime::::from_utc(ts.unwrap(), Utc), prev_hash, prev_root, output_root, @@ -645,8 +661,13 @@ impl Block { let version = consensus::header_version(height); let now = Utc::now().timestamp(); - let timestamp = DateTime::::from_utc(NaiveDateTime::from_timestamp(now, 0), Utc); + let ts = NaiveDateTime::from_timestamp_opt(now, 0); + if ts.is_none() { + return Err(Error::Other("Converting Utc::now() into timestamp".into())); + } + + let timestamp = DateTime::::from_utc(ts.unwrap(), Utc); // Now build the block with all the above information. // Note: We have not validated the block here. // Caller must validate the block as necessary. diff --git a/core/src/genesis.rs b/core/src/genesis.rs index f3b97e08d8..30a1934bc4 100644 --- a/core/src/genesis.rs +++ b/core/src/genesis.rs @@ -34,7 +34,7 @@ use util::secp::Signature; pub fn genesis_dev() -> core::Block { core::Block::with_header(core::BlockHeader { height: 0, - timestamp: Utc.ymd(1997, 8, 4).and_hms(0, 0, 0), + timestamp: Utc.with_ymd_and_hms(1997, 8, 4, 0, 0, 0).unwrap(), pow: ProofOfWork { nonce: 0, ..Default::default() @@ -48,7 +48,7 @@ pub fn genesis_dev() -> core::Block { pub fn genesis_test() -> core::Block { let gen = core::Block::with_header(core::BlockHeader { height: 0, - timestamp: Utc.ymd(2018, 12, 28).and_hms(20, 48, 4), + timestamp: Utc.with_ymd_and_hms(2018, 12, 28, 20, 48, 4).unwrap(), prev_root: Hash::from_hex( "00000000000000000017ff4903ef366c8f62e3151ba74e41b8332a126542f538", ) @@ -161,7 +161,7 @@ pub fn genesis_test() -> core::Block { pub fn genesis_main() -> core::Block { let gen = core::Block::with_header(core::BlockHeader { height: 0, - timestamp: Utc.ymd(2019, 1, 15).and_hms(16, 1, 26), + timestamp: Utc.with_ymd_and_hms(2019, 1, 15, 16, 1, 26).unwrap(), prev_root: Hash::from_hex( "0000000000000000002a8bc32f43277fe9c063b9c99ea252b483941dcd06e217", ) diff --git a/core/src/pow.rs b/core/src/pow.rs index 75f35aee2e..438f31a5b6 100644 --- a/core/src/pow.rs +++ b/core/src/pow.rs @@ -115,7 +115,8 @@ pub fn pow_size( // and if we're back where we started, update the time (changes the hash as // well) if bh.pow.nonce == start_nonce { - bh.timestamp = DateTime::::from_utc(NaiveDateTime::from_timestamp(0, 0), Utc); + bh.timestamp = + DateTime::::from_utc(NaiveDateTime::from_timestamp_opt(0, 0).unwrap(), Utc); } } } diff --git a/p2p/src/peers.rs b/p2p/src/peers.rs index 04174085b6..2ee8b548d1 100644 --- a/p2p/src/peers.rs +++ b/p2p/src/peers.rs @@ -437,7 +437,7 @@ impl Peers { // Delete defunct peers from storage let _ = self.store.delete_peers(|peer| { - let diff = now - Utc.timestamp(peer.last_connected, 0); + let diff = now - Utc.timestamp_opt(peer.last_connected, 0).unwrap(); let should_remove = peer.flags == State::Defunct && diff > Duration::seconds(global::PEER_EXPIRATION_REMOVE_TIME); diff --git a/servers/src/grin/seed.rs b/servers/src/grin/seed.rs index 358c53c10a..b04f0afe20 100644 --- a/servers/src/grin/seed.rs +++ b/servers/src/grin/seed.rs @@ -69,8 +69,9 @@ pub fn connect_and_monitor( // check seeds first connect_to_seeds_and_peers(peers.clone(), tx.clone(), seed_list, config); - let mut prev = chrono::Date::::MIN_UTC.and_hms(0, 0, 0); - let mut prev_expire_check = chrono::Date::::MIN_UTC.and_hms(0, 0, 0); + let mut prev = DateTime::::MIN_UTC; + let mut prev_expire_check = DateTime::::MIN_UTC; + let mut prev_ping = Utc::now(); let mut start_attempt = 0; let mut connecting_history: HashMap> = HashMap::new(); diff --git a/servers/src/mining/mine_block.rs b/servers/src/mining/mine_block.rs index 1988467080..1ce11658de 100644 --- a/servers/src/mining/mine_block.rs +++ b/servers/src/mining/mine_block.rs @@ -168,7 +168,11 @@ fn build_block( b.header.pow.nonce = thread_rng().gen(); b.header.pow.secondary_scaling = difficulty.secondary_scaling; - b.header.timestamp = DateTime::::from_utc(NaiveDateTime::from_timestamp(now_sec, 0), Utc); + let ts = NaiveDateTime::from_timestamp_opt(now_sec, 0); + if ts.is_none() { + return Err(Error::General("Utc::now into timestamp".into())); + } + b.header.timestamp = DateTime::::from_utc(ts.unwrap(), Utc); debug!( "Built new block with {} inputs and {} outputs, block difficulty: {}, cumulative difficulty {}", diff --git a/src/bin/tui/mining.rs b/src/bin/tui/mining.rs index 442124d972..091c78af82 100644 --- a/src/bin/tui/mining.rs +++ b/src/bin/tui/mining.rs @@ -64,13 +64,14 @@ impl StratumWorkerColumn { impl TableViewItem for WorkerStats { fn to_column(&self, column: StratumWorkerColumn) -> String { - let naive_datetime = NaiveDateTime::from_timestamp( + let naive_datetime = NaiveDateTime::from_timestamp_opt( self.last_seen .duration_since(time::UNIX_EPOCH) .unwrap() .as_secs() as i64, 0, - ); + ) + .unwrap_or_default(); let datetime: DateTime = DateTime::from_utc(naive_datetime, Utc); match column { @@ -126,7 +127,8 @@ impl DiffColumn { impl TableViewItem for DiffBlock { fn to_column(&self, column: DiffColumn) -> String { - let naive_datetime = NaiveDateTime::from_timestamp(self.time as i64, 0); + let naive_datetime = + NaiveDateTime::from_timestamp_opt(self.time as i64, 0).unwrap_or_default(); let datetime: DateTime = DateTime::from_utc(naive_datetime, Utc); match column {