From d02d2ada381286434b42b7d2dbba7b6c3c18bc85 Mon Sep 17 00:00:00 2001
From: Stephen D <webmaster@scd31.com>
Date: Thu, 11 Jan 2024 17:51:41 -0400
Subject: [PATCH] Fix bug where we exit instantly if felinet is disabled

---
 src/gate.rs |  4 ++--
 src/main.rs | 19 +++++++++----------
 2 files changed, 11 insertions(+), 12 deletions(-)

diff --git a/src/gate.rs b/src/gate.rs
index b6e8b6d..7c00072 100644
--- a/src/gate.rs
+++ b/src/gate.rs
@@ -273,13 +273,13 @@ pub async fn felinet_send_forever(
 pub async fn felinet_receive_forever(
     mut client: HandlerClient<Channel>,
     mut modem_send: mpsc::Sender<Vec<u8>>,
-    callsign: &str,
+    callsign: String,
     ssid: u8,
     uuid: Uuid,
 ) {
     loop {
         if let Err(e) =
-            felinet_receive_once(&mut client, &mut modem_send, callsign, ssid, uuid).await
+            felinet_receive_once(&mut client, &mut modem_send, &callsign, ssid, uuid).await
         {
             eprintln!("FELINET RX error: {e}. Reconnecting...");
         };
diff --git a/src/main.rs b/src/main.rs
index 3a67e9a..5e0173e 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -111,14 +111,6 @@ async fn gate_forever(
 
     let temperature_mutex = radio.temperature_mutex();
 
-    tokio::task::spawn(async move {
-        loop {
-            if let Err(e) = radio.process_forever().await {
-                eprintln!("Radio error: {e}")
-            }
-        }
-    });
-
     let tx = broadcast::Sender::new(16);
 
     beacon_forever(
@@ -190,8 +182,15 @@ async fn gate_forever(
             });
         }
 
-        felinet_receive_forever(client, packet_send, &callsign, config.ssid, uuid).await;
+        let ssid = config.ssid;
+        tokio::task::spawn(async move {
+            felinet_receive_forever(client, packet_send, callsign, ssid, uuid).await;
+        });
     }
 
-    Ok(())
+    loop {
+        if let Err(e) = radio.process_forever().await {
+            eprintln!("Radio error: {e}")
+        }
+    }
 }
-- 
GitLab