diff --git a/.cargo/config.toml b/.cargo/config.toml
new file mode 100644
index 000000000..f19d0f027
--- /dev/null
+++ b/.cargo/config.toml
@@ -0,0 +1,4 @@
+[target.'cfg(target_os="macos")']
+rustflags = [
+    "-C", "link-args=-sectcreate __CGPreLoginApp __cgpreloginapp /dev/null",
+]
\ No newline at end of file
diff --git a/src/server/connection.rs b/src/server/connection.rs
index 75a9071f8..ac971aafd 100644
--- a/src/server/connection.rs
+++ b/src/server/connection.rs
@@ -904,12 +904,10 @@ async fn start_ipc(
     mut rx_to_cm: mpsc::UnboundedReceiver<ipc::Data>,
     tx_from_cm: mpsc::UnboundedSender<ipc::Data>,
 ) -> ResultType<()> {
-    loop {
-        if !crate::platform::is_prelogin() {
-            break;
-        }
-        sleep(1.).await;
+    if crate::platform::is_prelogin() {
+        return Ok(());
     }
+
     let mut stream = None;
     if let Ok(s) = crate::ipc::connect(1000, "_cm").await {
         stream = Some(s);