1
mirror of https://github.com/rclone/rclone synced 2025-01-13 17:06:24 +01:00

Protect accounting from being closed twice

This commit is contained in:
Nick Craig-Wood 2015-10-05 22:56:16 +01:00
parent 4ed8836a71
commit ed72c678f8

View File

@ -256,6 +256,7 @@ type Account struct {
lpTime time.Time // Time of last average measurement
lpBytes int // Number of bytes read since last measurement
avg ewma.MovingAverage // Moving average of last few measurements
closed bool // set if the file is closed
exit chan struct{} // channel that will be closed when transfer is finished
}
@ -408,9 +409,13 @@ func (file *Account) String() string {
// Close the object
func (file *Account) Close() error {
close(file.exit)
file.mu.Lock()
defer file.mu.Unlock()
if file.closed {
return nil
}
file.closed = true
close(file.exit)
Stats.inProgress.clear(file.name)
return file.in.Close()
}