diff --git a/src/buffer/buffer.cpp b/src/buffer/buffer.cpp index c77137eb..8d94a4bf 100644 --- a/src/buffer/buffer.cpp +++ b/src/buffer/buffer.cpp @@ -250,7 +250,7 @@ namespace Buffer { } } if (usr->myRing->waiting || !usr->myRing->playCount){ - Util::sleep(300); //sleep 5ms + Util::sleep(300); //sleep 300ms } } usr->Disconnect("Socket closed."); diff --git a/src/buffer/buffer_stream.cpp b/src/buffer/buffer_stream.cpp index b17c54a7..bc18b358 100644 --- a/src/buffer/buffer_stream.cpp +++ b/src/buffer/buffer_stream.cpp @@ -145,7 +145,7 @@ namespace Buffer { void Stream::deletionCallback(DTSC::livePos deleting){ tthread::lock_guard guard(stats_mutex); for (usersIt = users.begin(); usersIt != users.end(); usersIt++){ - if ((*usersIt)->myRing->b == deleting){ + if ((*usersIt)->myRing->playCount && (*usersIt)->myRing->b == deleting){ (*usersIt)->Disconnect("Buffer underrun"); } } @@ -197,8 +197,9 @@ namespace Buffer { void Stream::sendMeta(Socket::Connection & s){ if (metadata){ rw_mutex.lock(); - metadata.send(s); + DTSC::Meta tmpMeta = metadata; rw_mutex.unlock(); + tmpMeta.send(s); } } diff --git a/src/connectors/conn_http_live.cpp b/src/connectors/conn_http_live.cpp index 9c826b9f..87581223 100644 --- a/src/connectors/conn_http_live.cpp +++ b/src/connectors/conn_http_live.cpp @@ -77,12 +77,8 @@ namespace Connector_HTTP { long long int starttime = metadata.getKey(it->getNumber()).getTime(); if (it != (metadata.fragments.end() - 1)){ - result << "#EXTINF:" << ((it->getDuration() + 500) / 1000) << ", no desc\r\n" - << starttime << "_" << it->getDuration() + starttime << ".ts\r\n"; - }else{ - result << "#EXTINF:" << ((metadata.lastms - starttime + 500) / 1000) << ", no desc\r\n" - << starttime << "_" << metadata.lastms << ".ts\r\n"; - } + result << "#EXTINF:" << ((it->getDuration() + 500) / 1000) << ", no desc\r\n" << starttime << "_" << it->getDuration() + starttime << ".ts\r\n"; + } } if ( !isLive){ result << "#EXT-X-ENDLIST\r\n";