diff --git a/server/streamreader/airplay_stream.cpp b/server/streamreader/airplay_stream.cpp index 9a66e18b..6a8b6952 100644 --- a/server/streamreader/airplay_stream.cpp +++ b/server/streamreader/airplay_stream.cpp @@ -240,9 +240,17 @@ void AirplayStream::pipeReadLine() << "\n"; wait(pipe_open_timer_, 2500ms, [this] { pipeReadLine(); }); } + if (ec.value() == boost::asio::error::bad_descriptor) + { + // If shairport-sync has not finished setting up the pipe, bad file descriptor is returned. + // retry in a few seconds + LOG(INFO, LOG_TAG) << "Waiting for metadata, retrying in 2500ms" + << "\n"; + wait(pipe_open_timer_, 2500ms, [this] { pipeReadLine(); }); + } else { - LOG(ERROR, LOG_TAG) << "Error while reading from metadata pipe: " << ec.message() << "\n"; + LOG(ERROR, LOG_TAG) << "Error while reading from metadata pipe: " << ec.category().name() << "\n" << ec.value() << ":\t" << ec.message() << "\n"; } return; }