Bug 15757 - escaped chars passed in playlist from mip->sb->server improperly unescaped
: escaped chars passed in playlist from mip->sb->server improperly unescaped
Status: UNCONFIRMED
Product: Logitech Media Server
Classification: Unclassified
Component: MusicIP
: 7.5.0
: Macintosh MacOS X 10.6
: -- normal (vote)
: ---
Assigned To: Unassigned bug - please assign me!
:
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2010-02-22 19:14 UTC by dan cohn
Modified: 2010-02-22 19:14 UTC (History)
0 users

See Also:
Category: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description dan cohn 2010-02-22 19:14:52 UTC
looks like URI handling of escaped ';' chars doesn't work. The target URL was passed in from a MusicIP generated playlist.

[10-02-22 00:43:19.6807] Slim::Player::Squeezebox::stream_s (582) stream_s called: format: mp3 url: file:///Volumes/localmedia/muse/music-from-steve-dsktop/Grant%20Geissman%20And%20Guy%20Maeda/Guitar%20On%20Broadway%3B%20Pianolight%20And%20....%20Vol%201%3B%20Best%20Of%20Broadway/01%20With%20One%20Look%20From%20_Sunset%20Blvd_.mp3

target is '/Volumes/localmedia/muse/music-from-steve-dsktop/Grant Geissman And Guy Maeda/Guitar On Broadway; Pianolight And .... Vol 1; Best Of Broadway/01 With One Look From _Sunset Blvd_.mp3', probably created at some point automatically by an importer.

The SB3 ends up stuck in a state of "Problem: Can't open file for: file:///Volumes/localmedia/muse/music-from-steve-dsktop/Grant%20Geissman%20And%20Guy%20Maeda/Guitar%20On%20Broadway%3B%20Pianolight%20And%20....%20Vol%201%3B%20Best%20Of%20Broadway/01%20With%20One%20Look%20From%20_Sunset%20Blvd_.mp3" from which it does not recover.

seems like this should call Slim::Utils::Misc::unescape() somewhere in the received path.

I've managed to make this case work by hacking the following into Slim::Player::Squeezebox::stream_s:

- my $url       = $controller-streamUrl();
+ my $url       = Slim::Utils::Misc::unescape($controller->streamURL());
+ $params->{'url'} = $url;

but it should probably go somewhere more appropriate.

It seems that the squeezebox not recovering from that state is a separate issue.