Index: src/squeezeplay/share/jive/slim/LocalPlayer.lua =================================================================== --- src/squeezeplay/share/jive/slim/LocalPlayer.lua (revision 8443) +++ src/squeezeplay/share/jive/slim/LocalPlayer.lua (working copy) @@ -184,8 +184,11 @@ function connectToServer(self, server) - -- close any previous connection - self.slimproto:disconnect() + + if not server then + log:error("No server passed to connectToServer() method") + return false + end -- make sure the server we are connecting to is awake server:wakeOnLan() @@ -190,14 +193,24 @@ -- make sure the server we are connecting to is awake server:wakeOnLan() - log:debug("connectToServer: ", server) - if server then + if self:needsMusicSource() then + log:info('connectToServer(): connecting localPlayer to server', server, ' via slimproto') + + -- close any previous connection + self.slimproto:disconnect() + server:addLocallyRequestedServer(server) - self.slimproto:connect(server) + else + log:info('connectToServer(): switching localPlayer to server', server) + local ip, port = server:getIpPort() + + server:addLocallyRequestedServer(server) + self:send({'connect', ip}, true) end -end + return true +end function connectIp(self, serverip, slimserverip) self.slimproto:disconnect() Index: src/squeezeplay/share/jive/slim/Player.lua =================================================================== --- src/squeezeplay/share/jive/slim/Player.lua (revision 8443) +++ src/squeezeplay/share/jive/slim/Player.lua (working copy) @@ -379,6 +379,8 @@ --]] function updatePlayerInfo(self, slimServer, playerInfo, useSequenceNumber, isSequenceNumberInSync) + log:debug(self, "@", slimServer, ":updatePlayerInfo connected=", playerInfo.connected); + -- ignore updates from a different server if the player -- is not connected to it if self.slimServer ~= slimServer @@ -427,6 +429,9 @@ -- delete from old server if self.slimServer then self:free(self.slimServer) + + -- refresh understanding of connected state because free() may have changed it + self.info.connected = tonumber(playerInfo.connected) == 1 end -- modify the old state, as the player was not connected