aboutsummaryrefslogtreecommitdiff
path: root/launcher/net/NetRequest.cpp
diff options
context:
space:
mode:
authorTrial97 <alexandru.tripon97@gmail.com>2023-07-02 22:43:30 +0300
committerTrial97 <alexandru.tripon97@gmail.com>2023-07-02 22:49:58 +0300
commitf1bd9700f71341ed726e205f04633bb0cb44e6fb (patch)
treecaa8c787b7583deba744054feb582ecc234e1fca /launcher/net/NetRequest.cpp
parent6aa30d334c2c0ccf0890433b9b7fecc3adeb9ed0 (diff)
downloadPrismLauncher-f1bd9700f71341ed726e205f04633bb0cb44e6fb.tar.gz
PrismLauncher-f1bd9700f71341ed726e205f04633bb0cb44e6fb.tar.bz2
PrismLauncher-f1bd9700f71341ed726e205f04633bb0cb44e6fb.zip
Fail NetRequest on connection close from QT
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
Diffstat (limited to 'launcher/net/NetRequest.cpp')
-rw-r--r--launcher/net/NetRequest.cpp17
1 files changed, 14 insertions, 3 deletions
diff --git a/launcher/net/NetRequest.cpp b/launcher/net/NetRequest.cpp
index 30457712..ff59da18 100644
--- a/launcher/net/NetRequest.cpp
+++ b/launcher/net/NetRequest.cpp
@@ -157,7 +157,7 @@ void NetRequest::downloadError(QNetworkReply::NetworkError error)
{
if (error == QNetworkReply::OperationCanceledError) {
qCCritical(logCat) << getUid().toString() << "Aborted " << m_url.toString();
- m_state = State::AbortedByUser;
+ m_state = State::Failed;
} else {
if (m_options & Option::AcceptLocalFiles) {
if (m_sink->hasLocalData()) {
@@ -274,6 +274,13 @@ void NetRequest::downloadFinished()
if (data.size()) {
qCDebug(logCat) << getUid().toString() << "Writing extra" << data.size() << "bytes";
m_state = m_sink->write(data);
+ if (m_state != State::Succeeded) {
+ qCDebug(logCat) << getUid().toString() << "Request failed to write:" << m_url.toString();
+ m_sink->abort();
+ emit failed("");
+ emit finished();
+ return;
+ }
}
// otherwise, finalize the whole graph
@@ -309,10 +316,14 @@ void NetRequest::downloadReadyRead()
auto NetRequest::abort() -> bool
{
+ m_state = State::AbortedByUser;
if (m_reply) {
+#if QT_VERSION >= QT_VERSION_CHECK(5, 15, 0) // QNetworkReply::errorOccurred added in 5.15
+ disconnect(m_reply.get(), &QNetworkReply::errorOccurred, nullptr, nullptr);
+#else
+ disconnect(m_reply.get(), QOverload<QNetworkReply::NetworkError>::of(&QNetworkReply::error), nullptr, nullptr);
+#endif
m_reply->abort();
- } else {
- m_state = State::AbortedByUser;
}
return true;
}