diff options
Diffstat (limited to 'src/routes/start.rs')
-rw-r--r-- | src/routes/start.rs | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/routes/start.rs b/src/routes/start.rs index bbc6ab8..192a54a 100644 --- a/src/routes/start.rs +++ b/src/routes/start.rs | |||
@@ -69,6 +69,9 @@ fn send_wol( | |||
69 | let dev_id = device.id.clone(); | 69 | let dev_id = device.id.clone(); |
70 | let uuid = if let Some(pl) = payload { | 70 | let uuid = if let Some(pl) = payload { |
71 | if pl.ping.is_some_and(|ping| ping) { | 71 | if pl.ping.is_some_and(|ping| ping) { |
72 | if device.ip.is_none() { | ||
73 | return Err(Error::NoIpOnPing); | ||
74 | } | ||
72 | Some(setup_ping(state, device)) | 75 | Some(setup_ping(state, device)) |
73 | } else { | 76 | } else { |
74 | None | 77 | None |
@@ -86,8 +89,10 @@ fn send_wol( | |||
86 | 89 | ||
87 | fn setup_ping(state: Arc<crate::AppState>, device: Device) -> String { | 90 | fn setup_ping(state: Arc<crate::AppState>, device: Device) -> String { |
88 | let mut uuid: Option<String> = None; | 91 | let mut uuid: Option<String> = None; |
92 | // Safe: Only called when ip is set | ||
93 | let ip = device.ip.unwrap(); | ||
89 | for (key, value) in state.ping_map.clone() { | 94 | for (key, value) in state.ping_map.clone() { |
90 | if value.ip == device.ip { | 95 | if value.ip == ip { |
91 | debug!("service already exists"); | 96 | debug!("service already exists"); |
92 | uuid = Some(key); | 97 | uuid = Some(key); |
93 | break; | 98 | break; |
@@ -103,7 +108,7 @@ fn setup_ping(state: Arc<crate::AppState>, device: Device) -> String { | |||
103 | state.ping_map.insert( | 108 | state.ping_map.insert( |
104 | uuid_gen.clone(), | 109 | uuid_gen.clone(), |
105 | PingValue { | 110 | PingValue { |
106 | ip: device.ip, | 111 | ip, |
107 | eta: get_eta(device.clone().times), | 112 | eta: get_eta(device.clone().times), |
108 | online: false, | 113 | online: false, |
109 | }, | 114 | }, |