Index: server/Slim/Networking/Slimproto.pm =================================================================== --- server/Slim/Networking/Slimproto.pm (revision 6735) +++ server/Slim/Networking/Slimproto.pm (working copy) @@ -183,6 +183,7 @@ sub _forgetDisconnectedClient { my $client = shift; + $::d_slimproto && msg("Slimproto - forgetting disconnected client\n"); Slim::Control::Request::executeRequest($client, ['client', 'forget']); } @@ -701,6 +702,16 @@ $::d_slimproto && msg("hello from existing client: $id on ipport: $ipport{$s}\n"); + my $oldsock = $client->tcpsock(); + + if (defined($oldsock) && exists($sock2client{$oldsock})) { + + $::d_slimproto && msg("closing previous socket to client: $id on ipport: ". + inet_ntoa($oldsock->peeraddr).":".$oldsock->peerport."\n" ); + + slimproto_close($client->tcpsock()); + } + Slim::Utils::Timers::killTimers($client, \&_forgetDisconnectedClient); $client->reconnect($paddr, $revision, $s, $reconnect, $bytes_received);