diff --git a/src/app/handlers/xdgurl.cpp b/src/app/handlers/xdgurl.cpp
index 0a7e442ce16fd1f3faae8868d8aa33791b83b116..fa37eebf48a2323c7d5a514ed243d42a88bac5ab 100644
--- a/src/app/handlers/xdgurl.cpp
+++ b/src/app/handlers/xdgurl.cpp
@@ -81,6 +81,7 @@ void XdgUrl::networkResourceFinished(qtlibs::NetworkResource *resource)
         QJsonObject result;
         result["status"] = QString("error_network");
         result["message"] = resource->reply()->errorString();
+        resource->deleteLater();
         emit finishedWithError(result);
         return;
     }
@@ -176,10 +177,13 @@ void XdgUrl::saveDownloadedFile(qtlibs::NetworkResource *resource)
     if (!resource->saveData(path)) {
         result["status"] = QString("error_save");
         result["message"] = QString("Failed to save data as " + path);
+        resource->deleteLater();
         emit finishedWithError(result);
         return;
     }
 
+    resource->deleteLater();
+
     destination_ = destination;
 
     result["status"] = QString("success_download");
@@ -196,10 +200,13 @@ void XdgUrl::installDownloadedFile(qtlibs::NetworkResource *resource)
     if (!resource->saveData(tempPath)) {
         result["status"] = QString("error_save");
         result["message"] = QString("Failed to save data as " + tempPath);
+        resource->deleteLater();
         emit finishedWithError(result);
         return;
     }
 
+    resource->deleteLater();
+
     qtlibs::Package package(tempPath);
     qtlibs::File tempFile(tempPath);