Commit 2536b0da authored by Max Kellermann's avatar Max Kellermann

decoder_thread: reopen the stream after file_decode() has failed

When decoding a local file, the decoder thread tries to run all matching decoders, until one succeeds. Both file_decode() and stream_decode() can decode a stream, but MPD closes the stream before calling file_decode(). Problem is: when this decoder fails, and the next's stream_decode() method is invoked, the input_stream is still closed. This patch reopens it.
parent d5ddecb1
......@@ -186,6 +186,17 @@ static void decoder_run_song(const struct song *song, const char *uri)
if (ret)
break;
} else if (plugin->stream_decode != NULL) {
if (!close_instream) {
/* the input_stream object has
been closed before
decoder_file_decode() -
reopen it */
if (input_stream_open(&input_stream, uri))
close_instream = true;
else
continue;
}
ret = decoder_stream_decode(plugin, &decoder,
&input_stream);
if (ret)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment