]> Sergey Matveev's repositories - btrtrc.git/blobdiff - cmd/torrent/download.go
cmd/torrent download: Handle interrupt when linear discarding
[btrtrc.git] / cmd / torrent / download.go
index 1fc4759f99f357cf9f5df69de14624bc9aa92bac..604820181dad5413084ec713272be892cb334119 100644 (file)
@@ -171,10 +171,18 @@ func addTorrents(
                                        defer wg.Done()
                                        waitForPieces(ctx, t, 0, t.NumPieces())
                                }()
-                               if flags.LinearDiscard {
-                                       r := t.NewReader()
-                                       io.Copy(io.Discard, r)
-                                       r.Close()
+                               done := make(chan struct{})
+                               go func() {
+                                       defer close(done)
+                                       if flags.LinearDiscard {
+                                               r := t.NewReader()
+                                               io.Copy(io.Discard, r)
+                                               r.Close()
+                                       }
+                               }()
+                               select {
+                               case <-done:
+                               case <-ctx.Done():
                                }
                        } else {
                                for _, f := range t.Files() {