]> git.seodisparate.com - mpd_info_screen/commitdiff
More robust handling of authentication failure 0.2.15
authorStephen Seo <seo.disparate@gmail.com>
Thu, 13 Jan 2022 02:17:32 +0000 (11:17 +0900)
committerStephen Seo <seo.disparate@gmail.com>
Thu, 13 Jan 2022 02:17:32 +0000 (11:17 +0900)
Bump version to 0.2.15

Cargo.lock
Cargo.toml
README.md
src/mpd_handler.rs

index c16fd9451bcfb3671cccaa9c8c3365f085df2eac..597673cdd7106748f7b6fa172a5d5b6d6e3876b3 100644 (file)
@@ -1427,7 +1427,7 @@ dependencies = [
 
 [[package]]
 name = "mpd_info_screen"
-version = "0.2.14"
+version = "0.2.15"
 dependencies = [
  "ggez",
  "image",
index 7e7b8d9c3f1a78c55162243199f7d8106fdfd77b..5bf36bac23be15f1de7b0554c035425d53cb643d 100644 (file)
@@ -1,6 +1,6 @@
 [package]
 name = "mpd_info_screen"
-version = "0.2.14"
+version = "0.2.15"
 edition = "2018"
 
 # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
index 51945c7995058733bdd5eacf612a386119b48450..60e145c8c9263f91eed70a1495dd718d3c4e7d3a 100644 (file)
--- a/README.md
+++ b/README.md
@@ -9,7 +9,7 @@ counter, and the filename currently being played
 
 # Usage
 
-    mpd_info_screen 0.2.14
+    mpd_info_screen 0.2.15
     
     USAGE:
         mpd_info_screen [FLAGS] [OPTIONS] <host> [port]
index 771d05b81e68b66e9bd5af45a9bdc2ea17d3554b..8770c9b5d02b28081d00d7bf3f3183fe2ec90676 100644 (file)
@@ -385,7 +385,10 @@ impl MPDHandler {
         }
 
         'main: loop {
-            if !self.is_reading_picture() {
+            if !self.is_reading_picture()
+                || (!self.is_authenticated().ok().unwrap_or(false)
+                    && !self.failed_to_authenticate().ok().unwrap_or(false))
+            {
                 thread::sleep(SLEEP_DURATION);
                 if let Ok(write_handle) = self.state.try_write() {
                     if write_handle.self_thread.is_none() {
@@ -415,7 +418,7 @@ impl MPDHandler {
             }
 
             if let Ok(read_handle) = self.state.try_read() {
-                if read_handle.stop_flag.load(Ordering::Relaxed) {
+                if read_handle.stop_flag.load(Ordering::Relaxed) || !read_handle.can_authenticate {
                     break 'main;
                 }
             }
@@ -557,7 +560,7 @@ impl MPDHandler {
                     write_handle.poll_state = PollState::None;
                     break 'handle_buf;
                 } else if line.starts_with("ACK") {
-                    log(line, LogState::Warning, write_handle.log_level);
+                    log(&line, LogState::Warning, write_handle.log_level);
                     match write_handle.poll_state {
                         PollState::Password => {
                             write_handle.can_authenticate = false;
@@ -569,6 +572,9 @@ impl MPDHandler {
                             write_handle.can_get_status = false;
                             write_handle.dirty_flag.store(true, Ordering::Relaxed);
                             write_handle.error_text = "Failed to get MPD status".into();
+                            if line.contains("don't have permission") {
+                                write_handle.can_authenticate = false;
+                            }
                         }
                         PollState::ReadPicture => {
                             write_handle.can_get_album_art = false;