diff --git a/lib/dtsc.cpp b/lib/dtsc.cpp index 250f7b46..c956c7d4 100644 --- a/lib/dtsc.cpp +++ b/lib/dtsc.cpp @@ -1683,13 +1683,13 @@ namespace DTSC{ trackLock.open(pageName, O_CREAT | O_RDWR, ACCESSPERMS, 1); if (!trackLock){ FAIL_MSG("Could not open semaphore to add track!"); - return -1; + return INVALID_TRACK_ID; } trackLock.wait(); if (stream.isExit()){ trackLock.post(); FAIL_MSG("Not adding track: stream is shutting down"); - return -1; + return INVALID_TRACK_ID; } } diff --git a/lib/sdp.cpp b/lib/sdp.cpp index 987c9bda..a9a467df 100644 --- a/lib/sdp.cpp +++ b/lib/sdp.cpp @@ -511,6 +511,11 @@ namespace SDP{ nope = true; tid = myMeta->addTrack(); + if (tid == INVALID_TRACK_ID){ + WARN_MSG("Could not add new track, skipping"); + continue; + } + // Strip m= std::stringstream words(to.substr(2)); std::string item; diff --git a/src/input/input.cpp b/src/input/input.cpp index 4bb77092..14c8a2d6 100644 --- a/src/input/input.cpp +++ b/src/input/input.cpp @@ -761,7 +761,7 @@ namespace Mist{ uint64_t currLastUpdate = M.getLastUpdated(); if (currLastUpdate > activityCounter){activityCounter = currLastUpdate;} }else{ - if (connectedUsers && M.getValidTracks().size()){activityCounter = Util::bootSecs();} + if ((connectedUsers || isAlwaysOn()) && M.getValidTracks().size()){activityCounter = Util::bootSecs();} } inputServeStats(); @@ -813,10 +813,6 @@ namespace Mist{ // - INPUT_TIMEOUT seconds haven't passed yet, // - this is a live stream and at least two of the biggest fragment haven't passed yet, bool ret = config->is_active && ((Util::bootSecs() - activityCounter) < INPUT_TIMEOUT); - if (!ret && config->is_active && isAlwaysOn()){ - ret = true; - activityCounter = Util::bootSecs(); - } /*LTS-START*/ if (!ret){ if (Triggers::shouldTrigger("STREAM_UNLOAD", config->getString("streamname"))){ @@ -1489,7 +1485,7 @@ namespace Mist{ for (size_t i = 0; i < keyNum; ++i){partNo += keys.getParts(i);} DTSC::Parts parts(M.parts(idx)); while (thisPacket && thisTime < stopTime){ - if (connectedUsers){activityCounter = Util::bootSecs();} + if (connectedUsers || isAlwaysOn()){activityCounter = Util::bootSecs();} if (thisTime >= lastBuffered){ if (sourceIdx != idx){ if (encryption.find(":") != std::string::npos || M.getEncryption(idx).find(":") != std::string::npos){