diff --git a/lib/sessions/downloader/ddl.pm b/lib/sessions/downloader/ddl.pm
index 9ae3b76c56a709d10be4c91e3fd390924241557a..e8f9daeab59d73e562b36ad159538dbc3a966d6b 100644
--- a/lib/sessions/downloader/ddl.pm
+++ b/lib/sessions/downloader/ddl.pm
@@ -121,9 +121,10 @@ sub signal_ddl {
     if ($status ne "0") {
         $log->error("error downloading $id : $status");
         $kernel->yield("end_task");
+        return;
     }
 
-    # we actually download the content
+    # we save the content
     $child = POE::Wheel::Run->new(
         Program => [
             "mv",
@@ -156,12 +157,14 @@ sub signal_move {
         $log->error("error moving $id from tmp : $status");
     }
     else {
+        # we update db
         eval {
             utils::db::set_filename($id, $heap->{ddl}->{pb}->{$id}->{filename});
         };
         $log->error($@) if ($@);
     }
 
+    delete $heap->{ddl}->{pb}->{$id};
     $kernel->yield("end_task");
 }