]> Sergey Matveev's repositories - btrtrc.git/commitdiff
piece file storage: Don't write to completed pieces
authorMatt Joiner <anacrolix@gmail.com>
Sun, 3 Apr 2016 06:37:50 +0000 (16:37 +1000)
committerMatt Joiner <anacrolix@gmail.com>
Sun, 3 Apr 2016 06:37:50 +0000 (16:37 +1000)
storage/piece_file.go

index 95b2af0b9ee3e279e2775e0d6d3dc9c7177fe64d..5656eedd78c15d26da028e919ebcc5e043f4e8a6 100644 (file)
@@ -1,6 +1,7 @@
 package storage
 
 import (
+       "errors"
        "io"
        "os"
        "path"
@@ -96,6 +97,10 @@ func (me pieceFileTorrentStoragePiece) ReadAt(b []byte, off int64) (n int, err e
 }
 
 func (me pieceFileTorrentStoragePiece) WriteAt(b []byte, off int64) (n int, err error) {
+       if me.GetIsComplete() {
+               err = errors.New("piece completed")
+               return
+       }
        f, err := me.fs.OpenFile(me.incompletePath(), os.O_WRONLY|os.O_CREATE)
        if err != nil {
                return