]> git.rmz.io Git - dotfiles.git/commitdiff
awesome/mpc: return early on error
authorSamir Benmendil <me@rmz.io>
Mon, 18 Jan 2021 23:35:28 +0000 (23:35 +0000)
committerSamir Benmendil <me@rmz.io>
Sun, 24 Jan 2021 21:35:32 +0000 (21:35 +0000)
awesome/widgets/mpc.lua

index 932a4a5f7b28180471d04d917509e80a8ba63561..bd64fa85b4f6adfd2b5df9bf085b00d6411806ea 100644 (file)
@@ -103,51 +103,52 @@ function mpc:_connect()
             if type(err) ~= "number" then
                 self._output, self._input = nil, nil
                 self:_error(err)
-            else
-                line = tostring(line)
-                if line == "OK" or line:match("^ACK ") then
-                    local success = line == "OK"
-                    local arg
-                    if success then
-                        arg = self._pending_reply
-                    else
-                        arg = { line }
-                    end
-                    local handler = self._reply_handlers[1]
-                    table.remove(self._reply_handlers, 1)
-                    self._pending_reply = {}
-                    handler(success, arg)
+                return
+            end
 
-                    if next(self._reply_handlers) == nil then
-                        self:_start_idle()
-                    end
+            line = tostring(line)
+            if line == "OK" or line:match("^ACK ") then
+                local success = line == "OK"
+                local arg
+                if success then
+                    arg = self._pending_reply
                 else
-                    local _, _, key, value = string.find(line, "([^:]+):%s(.+)")
-                    if key then
-                        local k = string.lower(key)
-                        if k == "binary" then
-                            value = tonumber(value)
-                            local data = {}
-                            while value > 0 do
-                                local b = assert(obj:read_bytes(value))
-                                table.insert(data, b.data)
-                                value = value - #b
-                            end
-                            local w = obj:read_bytes(1)  -- read newline at end of binary
-                            self._pending_reply[k] = table.concat(data)
-                        elseif k == "changed" then
-                            if not self._pending_reply[k] then
-                                self._pending_reply[k] = {}
-                            end
-
-                            self._pending_reply[k][value] = true
-                        else
-                            self._pending_reply[k] = value
+                    arg = { line }
+                end
+                local handler = self._reply_handlers[1]
+                table.remove(self._reply_handlers, 1)
+                self._pending_reply = {}
+                handler(success, arg)
+
+                if next(self._reply_handlers) == nil then
+                    self:_start_idle()
+                end
+            else
+                local _, _, key, value = string.find(line, "([^:]+):%s(.+)")
+                if key then
+                    local k = string.lower(key)
+                    if k == "binary" then
+                        value = tonumber(value)
+                        local data = {}
+                        while value > 0 do
+                            local b = assert(obj:read_bytes(value))
+                            table.insert(data, b.data)
+                            value = value - #b
                         end
+                        local w = obj:read_bytes(1)  -- read newline at end of binary
+                        self._pending_reply[k] = table.concat(data)
+                    elseif k == "changed" then
+                        if not self._pending_reply[k] then
+                            self._pending_reply[k] = {}
+                        end
+
+                        self._pending_reply[k][value] = true
+                    else
+                        self._pending_reply[k] = value
                     end
                 end
-                do_read()
             end
+            do_read()
         end)
     end
     do_read()