Index: src/squeezeplay/share/applets/ChooseMusicSource/ChooseMusicSourceApplet.lua =================================================================== --- src/squeezeplay/share/applets/ChooseMusicSource/ChooseMusicSourceApplet.lua (revision 8547) +++ src/squeezeplay/share/applets/ChooseMusicSource/ChooseMusicSourceApplet.lua (working copy) @@ -626,8 +626,8 @@ -- with notify_playerNew timeout = timeout + 1 - if timeout > CONNECT_TIMEOUT then - log:warn("Timeout passed, current count: ", timeout) + if timeout > CONNECT_TIMEOUT or player:hasConnectionFailed() then + log:warn("Connection failure or Timeout, current count: ", timeout) cancelAction() end end) Index: src/squeezeplay/share/jive/slim/LocalPlayer.lua =================================================================== --- src/squeezeplay/share/jive/slim/LocalPlayer.lua (revision 8556) +++ src/squeezeplay/share/jive/slim/LocalPlayer.lua (working copy) @@ -247,7 +247,13 @@ return self.slimproto:isConnected() and Player.isConnected(self) end +-- Has the connection attempt actually failed +function hasConnectionFailed(self) + return self.slimproto:hasConnectionFailed() +end + + function setSignalStrength(self, signalStrength) self.playback:setSignalStrength(signalStrength) end Index: src/squeezeplay/share/jive/slim/Player.lua =================================================================== --- src/squeezeplay/share/jive/slim/Player.lua (revision 8550) +++ src/squeezeplay/share/jive/slim/Player.lua (working copy) @@ -1863,6 +1863,11 @@ return self.slimServer and self.slimServer:isConnected() and self.info.connected end +-- Has the connection attempt actually failed +-- stub that can be overridden in subclass +function hasConnectionFailed(self) + return false +end -- return true if the player is available, that is when it is connected -- to SqueezeCenter, or in configuration mode (udap or wlan adhoc) Index: src/squeezeplay/share/jive/net/SlimProto.lua =================================================================== --- src/squeezeplay/share/jive/net/SlimProto.lua (revision 8556) +++ src/squeezeplay/share/jive/net/SlimProto.lua (working copy) @@ -363,9 +363,10 @@ local obj = oo.rawnew(self, {}) -- connection state UNCONNECTED / CONNECTED - obj.state = UNCONNECTED - obj.capabilities = {} - obj.txqueue = {} + obj.state = UNCONNECTED + obj.connectionFailed = false + obj.capabilities = {} + obj.txqueue = {} -- helo packet sent on connection obj.heloPacket = heloPacket @@ -458,6 +459,7 @@ log:info("server told us to connect to ", serverip) + self.connectionFailed = false _connectToAddr(self, serverip) end @@ -475,6 +477,7 @@ end end + self.connectionFailed = false _connectToAddr(self, serverip) end @@ -512,6 +515,7 @@ -- We got a packet so we must be connected self.state = CONNECTED + self.connectionFailed = false log:debug("read opcode=", opcode, " #", #data) @@ -663,6 +667,10 @@ return self.state == CONNECTED end +-- Has the connection attempt actually failed +function hasConnectionFailed(self) + return self.connectionFailed +end -- Set the callback to get a status packet function statusPacketCallback(self, callback) @@ -767,6 +775,7 @@ self:disconnect() self.state = CONNECTING + self.connectionFailed = true self.reconnectTimer:restart(interval) end @@ -777,7 +786,7 @@ return end - self:connect() + self:_connectToAddr(self.serverip) end