From f2dabd962f7c9ac48bcdcb5617f3e7fbef0ea372 Mon Sep 17 00:00:00 2001 From: Erik Zandvliet Date: Wed, 8 Jan 2014 11:29:47 +0100 Subject: [PATCH] Check for corrupt files. --- src/controller/controller_streams.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/controller/controller_streams.cpp b/src/controller/controller_streams.cpp index fbc816d6..1dd73f07 100644 --- a/src/controller/controller_streams.cpp +++ b/src/controller/controller_streams.cpp @@ -97,6 +97,12 @@ namespace Controller { } } } + if ( !data["meta"] || !data["meta"]["tracks"]){ + Log("WARN", "Source file " + URL + " seems to be corrupt."); + data["error"] = "Stream offline: Corrupt file?"; + data["online"] = 0; + return; + } }else{ getMeta = true; } @@ -106,8 +112,14 @@ namespace Controller { tmp_cmd[0] = (char*)mistinfo.c_str(); tmp_cmd[1] = (char*)URL.c_str(); data["meta"] = JSON::fromString(Util::Procs::getOutputOf(tmp_cmd)); + if ( !data["meta"] || !data["meta"].isMember("tracks") || !data["meta"]["tracks"]){ + Log("WARN", "Source file " + URL + " seems to be corrupt."); + data["error"] = "Stream offline: Corrupt file?"; + data["online"] = 0; + return; + } } - if ( !DTSC::isFixed(data["meta"])){ + if ( data["meta"] && data["meta"].isMember("tracks") && data["meta"]["tracks"] && !DTSC::isFixed(data["meta"])){ char * tmp_cmd[3] = {0, 0, 0}; std::string mistfix = Util::getMyPath() + "MistDTSCFix"; tmp_cmd[0] = (char*)mistfix.c_str();