diff --git a/app/nativehelper/Cargo.toml b/app/nativehelper/Cargo.toml index bdf01b24a2..4df05921bc 100644 --- a/app/nativehelper/Cargo.toml +++ b/app/nativehelper/Cargo.toml @@ -18,6 +18,7 @@ panic = 'abort' strip = true [dependencies] +lazy_static = "1.5.0" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" steamworks = "0.10.0" diff --git a/app/nativehelper/src/main.rs b/app/nativehelper/src/main.rs index badafc8d81..75186ee688 100644 --- a/app/nativehelper/src/main.rs +++ b/app/nativehelper/src/main.rs @@ -1,3 +1,4 @@ +use lazy_static::lazy_static; use serde_json::Value; use std::io; use std::io::Read; @@ -5,6 +6,7 @@ use std::process; use std::sync::Arc; use std::sync::atomic::AtomicBool; use std::sync::atomic::Ordering; +use std::sync::Mutex; use std::sync::mpsc::Sender; use std::sync::mpsc::channel; use std::thread; @@ -17,6 +19,10 @@ use websocket::client::ClientBuilder; use websocket::{Message, OwnedMessage}; +lazy_static! { + static ref AUTHENTICATED: Mutex = Mutex::new(false); +} + fn connect() -> (Sender, JoinHandle<()>) { println!("Read connection parameters"); let mut json = String::new(); @@ -121,7 +127,12 @@ fn handle_message(nl_token: &String, tx: Sender, message: String) if message.contains("event\":\"request_authentication\"") { authenticate(tx, nl_token.clone()); } else if message.contains("event\":\"clientDisconnect\"") { - println!("Authentication complete, exiting extension ..."); + let authenticated = AUTHENTICATED.lock().unwrap(); + if *authenticated { + println!("Authenticated, exiting extension ..."); + } else { + println!("Unauthenticated, exiting extension ..."); + } process::exit(0); } } @@ -136,6 +147,10 @@ fn authenticate(tx: Sender, nl_token: String) { let _callback = client.register_callback(move |session_ticket_response: AuthSessionTicketResponse| { //if session_ticket_response.ticket == ticket_handle { + if session_ticket_response.result.is_ok() { + let mut authenticated = AUTHENTICATED.lock().unwrap(); + *authenticated = true; + } println!("Ticket Response Result: {:?}", session_ticket_response.result); callback_called.store(true, Ordering::Relaxed); // println!("Ticket : {:?}", session_ticket_response.ticket);