From c8ab86ee3ef4bc062b2aa09798592481e31d96ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20Geisendo=CC=88rfer?= Date: Sat, 23 Mar 2013 12:42:49 +0100 Subject: [PATCH] Log partial file writes --- src/cmd/tusd/data_store.go | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/cmd/tusd/data_store.go b/src/cmd/tusd/data_store.go index 6163dd4..2ce22d8 100644 --- a/src/cmd/tusd/data_store.go +++ b/src/cmd/tusd/data_store.go @@ -43,14 +43,20 @@ func (s *DataStore) WriteFileChunk(id string, start int64, end int64, src io.Rea } size := end - start + 1 - if n, err := io.CopyN(file, src, size); err != nil { + n, err := io.CopyN(file, src, size) + if n > 0 { + entry := logEntry{Chunk: &chunkEntry{Start: start, End: n - 1}} + if err := s.appendFileLog(id, entry); err != nil { + return err + } + } + + if err != nil { return err } else if n != size { return errors.New("WriteFileChunk: partial copy") } - - entry := logEntry{Chunk: &chunkEntry{Start: start, End: end}} - return s.appendFileLog(id, entry) + return nil } func (s *DataStore) GetFileMeta(id string) (*fileMeta, error) {