Bugzilla – Bug 2535
<playerid> playlist genre/path ? commands do not work and can kill the telnet connect
Last modified: 2008-09-15 14:37:04 UTC
If I telnet to 9090 and issue the command <playerid> playlist path 1 ? the slimserver does not return the path of the first playlist item. If I try <playerid> playlist genre 1 ? I get page and page of binary garbage. The other playlist index query commands result in similarly bad behavior, sometimes killing the telnet connection and causing the squeezebox to lose connectivity to the slimserver. Some debugging turns up that these queries result in execute in Command.pm doing a database query. $p3 gets filled in with some database hash reference thing. Later on during the CLI processing cycle Encode::encode is called upon this hash. I not a perl guru but I don't think this is expecting anything but a string. It appears that the Encode::encode is doing bad things. I changed my local copy of slimserver to look like the following around lines 966-968 of Slim/Control/Command.pm: } elseif ($p1 eq "path") { $p3 = Slim::Player::Playlist::Song($client,$p2) || 0; if ($p3) { $p3 = $p3->url() } And now it works as expected. A quick check shows that the same problem exists in the current SVN trunk.
Fred, do you want to handle this one?
I wonder if it's enough to force stringification on all the results in the array or if we'll need to check for references in each command... Dan?
Justus - can you try the 6.2.1 nightly builds, and post a crash log if this is still an issue? Thanks.
I downloaded the SlimServer_6_2_x_v2005-11-11 tarball; it appears to be working as expected. Thanks.