summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/downloadmanager.cpp5
-rw-r--r--src/downloadmanager.h3
2 files changed, 5 insertions, 3 deletions
diff --git a/src/downloadmanager.cpp b/src/downloadmanager.cpp
index ecbcc03b..6d8658c9 100644
--- a/src/downloadmanager.cpp
+++ b/src/downloadmanager.cpp
@@ -1251,6 +1251,7 @@ void DownloadManager::downloadProgress(qint64 bytesReceived, qint64 bytesTotal)
try {
DownloadInfo *info = findDownload(this->sender(), &index);
if (info != nullptr) {
+ info->m_HasData = true;
if (info->m_State == STATE_CANCELING) {
setState(info, STATE_CANCELED);
} else if (info->m_State == STATE_PAUSING) {
@@ -1637,7 +1638,7 @@ void DownloadManager::downloadFinished(int index)
if (info != nullptr) {
QNetworkReply *reply = info->m_Reply;
QByteArray data;
- if (reply->isOpen()) {
+ if (reply->isOpen() && info->m_HasData) {
data = reply->readAll();
info->m_Output.write(data);
}
@@ -1666,7 +1667,7 @@ void DownloadManager::downloadFinished(int index)
if (info->m_State == STATE_CANCELING) {
setState(info, STATE_CANCELED);
} else if (info->m_State == STATE_PAUSING) {
- if (info->m_Output.isOpen()) {
+ if (info->m_Output.isOpen() && info->m_HasData) {
info->m_Output.write(info->m_Reply->readAll());
}
setState(info, STATE_PAUSED);
diff --git a/src/downloadmanager.h b/src/downloadmanager.h
index 24bc6d7f..fa3764b7 100644
--- a/src/downloadmanager.h
+++ b/src/downloadmanager.h
@@ -78,6 +78,7 @@ private:
qint64 m_PreResumeSize;
std::pair<int, QString> m_Progress;
std::tuple<int, int, int, int, int> m_SpeedDiff;
+ bool m_HasData;
DownloadState m_State;
int m_CurrentUrl;
QStringList m_Urls;
@@ -115,7 +116,7 @@ private:
private:
static unsigned int s_NextDownloadID;
private:
- DownloadInfo() : m_TotalSize(0), m_ReQueried(false), m_Hidden(false), m_SpeedDiff(std::tuple<int,int,int,int,int>(0,0,0,0,0)) {}
+ DownloadInfo() : m_TotalSize(0), m_ReQueried(false), m_Hidden(false), m_SpeedDiff(std::tuple<int,int,int,int,int>(0,0,0,0,0)), m_HasData(false) {}
};
public: