Skip to content

Commit

Permalink
downloader: Reset timer when readReady is emitted for general downloads
Browse files Browse the repository at this point in the history
Fixes #386
  • Loading branch information
Chris Townsend committed Mar 1, 2019
1 parent 09c6a2e commit 3a122e3
Showing 1 changed file with 8 additions and 4 deletions.
12 changes: 8 additions & 4 deletions src/network/url_downloader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ QByteArray download(QNetworkAccessManager& manager, const Time& timeout, QUrl co
{
QEventLoop event_loop;
QTimer download_timeout;
download_timeout.setInterval(timeout);

QNetworkRequest request{url};
request.setRawHeader("Connection", "Keep-Alive");
Expand All @@ -62,7 +63,7 @@ QByteArray download(QNetworkAccessManager& manager, const Time& timeout, QUrl co
reply->abort();
});

download_timeout.start(timeout);
download_timeout.start();
event_loop.exec();
if (reply->error() != QNetworkReply::NoError)
{
Expand Down Expand Up @@ -118,7 +119,7 @@ void mp::URLDownloader::download_to(const QUrl& url, const QString& file_name, i
fmt::format("error writing image: {}", file.errorString().toStdString()));
reply->abort();
}
download_timeout.start(10000);
download_timeout.start();
};

auto on_error = [&file]() { file.remove(); };
Expand All @@ -128,8 +129,11 @@ void mp::URLDownloader::download_to(const QUrl& url, const QString& file_name, i

QByteArray mp::URLDownloader::download(const QUrl& url)
{
return ::download(manager, timeout, url, [](QNetworkReply*, qint64, qint64) {}, [](QNetworkReply*, QTimer&) {},
[] {});
// This will connect to the QNetworkReply::readReady signal and when emitted,
// reset the timer.
auto on_download = [](QNetworkReply* reply, QTimer& download_timeout) { download_timeout.start(); };

return ::download(manager, timeout, url, [](QNetworkReply*, qint64, qint64) {}, on_download, [] {});
}

QDateTime mp::URLDownloader::last_modified(const QUrl& url)
Expand Down

0 comments on commit 3a122e3

Please sign in to comment.