From aa9a8983485361a0f50afad7e90641eab253fafe Mon Sep 17 00:00:00 2001
From: dvermd <888-dvermd@users.noreply.git.duniter.org>
Date: Fri, 20 Dec 2019 22:38:25 +0100
Subject: [PATCH] [fix] ws2p-protocol: #134 remove unwrap and deny its use

---
 lib/modules/ws2p/ws2p-protocol/src/controller.rs       |  9 ++++-----
 .../ws2p/ws2p-protocol/src/controller/meta_datas.rs    | 10 +++++-----
 .../ws2p/ws2p-protocol/src/controller/on_message.rs    | 10 ++++------
 .../src/controller/on_message/secret_flags.rs          |  1 -
 lib/modules/ws2p/ws2p-protocol/src/lib.rs              |  2 ++
 5 files changed, 15 insertions(+), 17 deletions(-)

diff --git a/lib/modules/ws2p/ws2p-protocol/src/controller.rs b/lib/modules/ws2p/ws2p-protocol/src/controller.rs
index 23d13235..04756a94 100644
--- a/lib/modules/ws2p/ws2p-protocol/src/controller.rs
+++ b/lib/modules/ws2p/ws2p-protocol/src/controller.rs
@@ -31,8 +31,7 @@ use durs_ws2p_messages::v2::connect::WS2Pv2ConnectType;
 use durs_ws2p_messages::WS2PMessage;
 use failure::Fail;
 use std::sync::mpsc::{Receiver, SendError, Sender};
-use std::time::SystemTime;
-use unwrap::unwrap;
+use std::time::Instant;
 
 #[derive(Copy, Clone, Debug, Hash)]
 /// WS2P Controller unique identitier
@@ -141,10 +140,10 @@ impl WebsocketActionOrder {
 impl<M: ModuleMessage> WS2PController<M> {
     /// Check timeouts
     pub fn check_timeouts(&mut self) -> Option<WebsocketActionOrder> {
-        let now = SystemTime::now();
+        let now = Instant::now();
 
         if self.meta_datas.state == WS2PConnectionState::Established {
-            if unwrap!(now.duration_since(self.meta_datas.last_mess_time)).as_secs()
+            if now.duration_since(self.meta_datas.last_mess_time).as_secs()
                 > *constants::WS2P_EXPIRE_TIMEOUT_IN_SECS
             {
                 Some(WebsocketActionOrder {
@@ -157,7 +156,7 @@ impl<M: ModuleMessage> WS2PController<M> {
             } else {
                 None
             }
-        } else if unwrap!(now.duration_since(self.meta_datas.creation_time)).as_secs()
+        } else if now.duration_since(self.meta_datas.creation_time).as_secs()
             > *constants::WS2P_NEGOTIATION_TIMEOUT_IN_SECS
         {
             Some(WebsocketActionOrder {
diff --git a/lib/modules/ws2p/ws2p-protocol/src/controller/meta_datas.rs b/lib/modules/ws2p/ws2p-protocol/src/controller/meta_datas.rs
index 34f9b267..8bac4b6a 100644
--- a/lib/modules/ws2p/ws2p-protocol/src/controller/meta_datas.rs
+++ b/lib/modules/ws2p/ws2p-protocol/src/controller/meta_datas.rs
@@ -27,7 +27,7 @@ use durs_network_documents::NodeFullId;
 use durs_ws2p_messages::v2::api_features::WS2PFeatures;
 use durs_ws2p_messages::v2::connect::WS2Pv2ConnectType;
 use log::error;
-use std::time::SystemTime;
+use std::time::Instant;
 
 #[derive(Debug)]
 /// WS2p Connection meta datas
@@ -41,13 +41,13 @@ pub struct WS2PControllerMetaDatas {
     /// Currency name
     pub currency: CurrencyName,
     /// Controller creation time
-    pub creation_time: SystemTime,
+    pub creation_time: Instant,
     /// Connection features
     pub features: Option<WS2PFeatures>,
     /// Signator
     pub signator: SignatorEnum,
     /// Timestamp of last received message
-    pub last_mess_time: SystemTime,
+    pub last_mess_time: Instant,
     /// Local node properties
     pub local_node: MySelfWs2pNode,
     /// Remote connect type
@@ -81,9 +81,9 @@ impl WS2PControllerMetaDatas {
             connect_type,
             count_invalid_msgs: 0,
             currency,
-            creation_time: SystemTime::now(),
+            creation_time: Instant::now(),
             features: None,
-            last_mess_time: SystemTime::now(),
+            last_mess_time: Instant::now(),
             local_node,
             remote_connect_type: None,
             remote_node: None,
diff --git a/lib/modules/ws2p/ws2p-protocol/src/controller/on_message.rs b/lib/modules/ws2p/ws2p-protocol/src/controller/on_message.rs
index e89760f7..41c7561a 100644
--- a/lib/modules/ws2p/ws2p-protocol/src/controller/on_message.rs
+++ b/lib/modules/ws2p/ws2p-protocol/src/controller/on_message.rs
@@ -33,19 +33,17 @@ use durs_ws2p_messages::WS2PMessage;
 use log::error;
 use std::ops::Deref;
 use std::thread;
-use std::time::{Duration, SystemTime};
+use std::time::{Duration, Instant};
 
 pub fn process<M: ModuleMessage>(
     controller: &mut WS2PController<M>,
     msg: WebsocketMessage,
 ) -> Result<Option<WebsocketActionOrder>, WS2PControllerProcessError> {
     // Update last_mess_time
-    controller.meta_datas.last_mess_time = SystemTime::now();
+    controller.meta_datas.last_mess_time = Instant::now();
 
     // Spam ?
-    if SystemTime::now()
-        .duration_since(controller.meta_datas.last_mess_time)
-        .unwrap()
+    if controller.meta_datas.last_mess_time.elapsed()
         > Duration::new(*constants::WS2P_SPAM_INTERVAL_IN_MILLI_SECS, 0)
     {
         if controller.meta_datas.spam_interval {
@@ -63,7 +61,7 @@ pub fn process<M: ModuleMessage>(
         thread::sleep(Duration::from_millis(
             *constants::WS2P_SPAM_SLEEP_TIME_IN_SEC,
         ));
-        controller.meta_datas.last_mess_time = SystemTime::now();
+        controller.meta_datas.last_mess_time = Instant::now();
         return Ok(None);
     }
 
diff --git a/lib/modules/ws2p/ws2p-protocol/src/controller/on_message/secret_flags.rs b/lib/modules/ws2p/ws2p-protocol/src/controller/on_message/secret_flags.rs
index a85b5dc8..a7d3d61b 100644
--- a/lib/modules/ws2p/ws2p-protocol/src/controller/on_message/secret_flags.rs
+++ b/lib/modules/ws2p/ws2p-protocol/src/controller/on_message/secret_flags.rs
@@ -22,7 +22,6 @@ use durs_module::ModuleMessage;
 //use durs_ws2p_messages::v2::connect::WS2Pv2ConnectType;
 use durs_ws2p_messages::v2::secret_flags::WS2Pv2SecretFlagsMsg;
 //use log::error;
-//use unwrap::unwrap;
 
 pub fn process_ws2p_v2p_secret_flags_msg<M: ModuleMessage>(
     controller: &mut WS2PController<M>,
diff --git a/lib/modules/ws2p/ws2p-protocol/src/lib.rs b/lib/modules/ws2p/ws2p-protocol/src/lib.rs
index 2f0a9399..69ac1ed5 100644
--- a/lib/modules/ws2p/ws2p-protocol/src/lib.rs
+++ b/lib/modules/ws2p/ws2p-protocol/src/lib.rs
@@ -17,6 +17,8 @@
 
 #![allow(clippy::large_enum_variant)]
 #![deny(
+    clippy::option_unwrap_used,
+    clippy::result_unwrap_used,
     missing_docs,
     missing_debug_implementations,
     missing_copy_implementations,
-- 
GitLab