From 4e998fd507e9db6672c69b52b2c6f0ac45a02e01 Mon Sep 17 00:00:00 2001 From: emeric Date: Wed, 20 May 2020 23:17:30 +0200 Subject: [PATCH 1/3] Fixed bad permission access that caused an application loop --- src/libs/av/impl/AvTranscoder.cpp | 20 +++++++++++++++++--- src/libs/utils/impl/FileResourceHandler.cpp | 8 ++++++-- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/src/libs/av/impl/AvTranscoder.cpp b/src/libs/av/impl/AvTranscoder.cpp index 50e7991d..47454837 100644 --- a/src/libs/av/impl/AvTranscoder.cpp +++ b/src/libs/av/impl/AvTranscoder.cpp @@ -54,10 +54,24 @@ Transcoder::Transcoder(const std::filesystem::path& filePath, const TranscodePar bool Transcoder::start() { - if (!std::filesystem::exists(_filePath)) - return false; - else if (!std::filesystem::is_regular_file( _filePath) ) + try + { + if (!std::filesystem::exists(_filePath)) + { + LOG(ERROR) << "File '" << _filePath << "' does not exist!"; + return false; + } + else if (!std::filesystem::is_regular_file( _filePath) ) + { + LOG(ERROR) << "File '" << _filePath << "' is not regular!"; + return false; + } + } + catch (const std::filesystem::filesystem_error& e) + { + LOG(ERROR) << "File error on '" << _filePath.string() << "': " << e.what(); return false; + } LOG(INFO) << "Transcoding file '" << _filePath.string() << "'"; diff --git a/src/libs/utils/impl/FileResourceHandler.cpp b/src/libs/utils/impl/FileResourceHandler.cpp index ad7ec8eb..f031adfc 100644 --- a/src/libs/utils/impl/FileResourceHandler.cpp +++ b/src/libs/utils/impl/FileResourceHandler.cpp @@ -42,8 +42,6 @@ FileResourceHandler::processRequest(const Wt::Http::Request& request, Wt::Http:: ::uint64_t startByte {_offset}; std::ifstream ifs {_path.string().c_str(), std::ios::in | std::ios::binary}; - LMS_LOG(UTILS, DEBUG) << "startByte = " << startByte; - if (startByte == 0) { if (!ifs) @@ -100,6 +98,12 @@ FileResourceHandler::processRequest(const Wt::Http::Request& request, Wt::Http:: response.setContentLength(_beyondLastByte); } } + else if (!ifs) + { + LMS_LOG(UTILS, ERROR) << "Cannot reopen file stream for '" << _path.string() << "'"; + _isFinished = true; + return; + } ifs.seekg(static_cast(startByte)); From 69ecb169df16dadc19468ae86f6a0a95d4e62d15 Mon Sep 17 00:00:00 2001 From: emeric Date: Wed, 20 May 2020 23:18:18 +0200 Subject: [PATCH 2/3] fixed player not starting on mobile. fixes #60 --- docroot/js/mediaplayer.js | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/docroot/js/mediaplayer.js b/docroot/js/mediaplayer.js index 85ddae5c..9022e786 100644 --- a/docroot/js/mediaplayer.js +++ b/docroot/js/mediaplayer.js @@ -146,11 +146,9 @@ LMS.mediaplayer = function () { _gainNode.connect(_audioCtx.destination); _elems.playpause.addEventListener("click", function() { - if (_elems.audio.paused) { - if (_elems.audio.firstChild) { - _audioCtx.resume(); - _playTrack(); - } + _audioCtx.resume(); + if (_elems.audio.paused && _elems.audio.children.length > 0) { + _playTrack(); } else _elems.audio.pause(); @@ -285,7 +283,7 @@ LMS.mediaplayer = function () { _elems.curtime.innerHTML = _durationToString(_offset); _elems.duration.innerHTML = _durationToString(_duration); - if (autoplay) + if (autoplay && _audioCtx.state == "running") _playTrack(); if ('mediaSession' in navigator) { From fe827d2f592ee2ec84f821b50a34ef42b0089c3b Mon Sep 17 00:00:00 2001 From: emeric Date: Thu, 21 May 2020 09:21:40 +0200 Subject: [PATCH 3/3] Added minor utility func --- src/libs/database/impl/TrackList.cpp | 6 ++++++ src/libs/database/include/database/TrackList.hpp | 1 + 2 files changed, 7 insertions(+) diff --git a/src/libs/database/impl/TrackList.cpp b/src/libs/database/impl/TrackList.cpp index 5ac4da9d..47fb5a22 100644 --- a/src/libs/database/impl/TrackList.cpp +++ b/src/libs/database/impl/TrackList.cpp @@ -107,6 +107,12 @@ TrackList::getById(Session& session, IdType id) return session.getDboSession().find().where("id = ?").bind(id); } +bool +TrackList::isEmpty() const +{ + return _entries.empty(); +} + std::size_t TrackList::getCount() const { diff --git a/src/libs/database/include/database/TrackList.hpp b/src/libs/database/include/database/TrackList.hpp index a7e2ec02..f05f830b 100644 --- a/src/libs/database/include/database/TrackList.hpp +++ b/src/libs/database/include/database/TrackList.hpp @@ -79,6 +79,7 @@ class TrackList : public Wt::Dbo::Dbo void clear() { _entries.clear(); } // Get tracks, ordered by position + bool isEmpty() const; std::size_t getCount() const; Wt::Dbo::ptr getEntry(std::size_t pos) const; std::vector> getEntries(std::optional offset = {}, std::optional size = {}) const;