diff --git a/src/output/output.cpp b/src/output/output.cpp index c9dddfc4..7bbb010b 100644 --- a/src/output/output.cpp +++ b/src/output/output.cpp @@ -326,9 +326,12 @@ namespace Mist{ // If stream is configured, use fallback stream setting, if set. JSON::Value strCnf = Util::getStreamConfig(streamName); if (strCnf && strCnf["fallback_stream"].asStringRef().size()){ - streamName = strCnf["fallback_stream"].asStringRef(); + std::string defStrm = strCnf["fallback_stream"].asStringRef(); + std::string newStrm = defStrm; + Util::streamVariables(newStrm, streamName, ""); + INFO_MSG("Switching to configured fallback stream '%s' -> '%s'", defStrm.c_str(), newStrm.c_str()); + streamName = newStrm; Util::setStreamName(streamName); - INFO_MSG("Switching to configured fallback stream '%s'", streamName.c_str()); reconnect(); return; } diff --git a/src/output/output_http_internal.cpp b/src/output/output_http_internal.cpp index 3d91b819..dde45373 100644 --- a/src/output/output_http_internal.cpp +++ b/src/output/output_http_internal.cpp @@ -433,6 +433,23 @@ namespace Mist{ if (streamStatus != STRMSTAT_READY){ // If we haven't rewritten the stream name yet to a fallback, attempt to do so if (origStreamName == streamName){ + // If stream is configured, use fallback stream setting, if set. + JSON::Value strCnf = Util::getStreamConfig(streamName); + if (strCnf && strCnf["fallback_stream"].asStringRef().size()){ + std::string defStrm = strCnf["fallback_stream"].asStringRef(); + std::string newStrm = defStrm; + Util::streamVariables(newStrm, streamName, ""); + if (streamName != newStrm){ + INFO_MSG("Switching to configured fallback stream '%s' -> '%s'", defStrm.c_str(), newStrm.c_str()); + origStreamName = streamName; + streamName = newStrm; + Util::setStreamName(streamName); + reconnect(); + return getStatusJSON(reqHost, useragent); + } + } + + //global fallback stream JSON::Value defStrmJson = Util::getGlobalConfig("defaultStream"); std::string defStrm = defStrmJson.asString(); if (Triggers::shouldTrigger("DEFAULT_STREAM", streamName)){