Index: Slim/Player/StreamingController.pm =================================================================== --- Slim/Player/StreamingController.pm (revision 24365) +++ Slim/Player/StreamingController.pm (working copy) @@ -1668,6 +1668,12 @@ $log->info($client->id); streamingSong($self)->{'status'} = Slim::Player::Song::STATUS_FAILED; + + # bug 10407: remove failed Song from song-queue unless only Song in queue. + my $queue = $self->{'songqueue'}; + if (scalar(@$queue) > 1) { + shift @$queue; + } _errorOpening($self, streamingSong($self)->currentTrack()->url, @error); Index: Slim/Player/Squeezebox2.pm =================================================================== --- Slim/Player/Squeezebox2.pm (revision 24365) +++ Slim/Player/Squeezebox2.pm (working copy) @@ -386,7 +386,7 @@ return undef; } - + sub directHeaders { my $client = shift; my $headers = shift; @@ -435,6 +435,7 @@ my $status_line = $response; $response = $1; + if (($response < 200) || $response > 399) { @@ -441,7 +442,10 @@ $directlog->warn("Invalid response code ($response) from remote stream $url"); if ($songHandler && $songHandler->can("handleDirectError")) { - + + # bug 10407 - make sure ready to stream again + $client->readyToStream(1); + $songHandler->handleDirectError($client, $url, $response, $status_line); } else { @@ -724,6 +728,9 @@ sub failedDirectStream { my $client = shift; my $error = shift; + + # bug 10407 - make sure ready to stream again + $client->readyToStream(1); my $controller = $client->controller()->songStreamController();; Index: Slim/Networking/Slimproto.pm =================================================================== --- Slim/Networking/Slimproto.pm (revision 24365) +++ Slim/Networking/Slimproto.pm (working copy) @@ -592,6 +592,10 @@ if ($controller && $controller->isDirect() ) { my $handler = $controller->protocolHandler(); if ($handler->can("handleDirectError") ) { + + # bug 10407 - make sure ready to stream again + $client->readyToStream(1); + $handler->handleDirectError( $client, $controller->streamUrl(), $reason, $reasons{$reason} ); return; }