diff --git a/services/version.go b/services/version.go index 4f8fd46..5c12813 100644 --- a/services/version.go +++ b/services/version.go @@ -7,7 +7,7 @@ import ( // Version numbers var majorVersion = 0 var minorVersion = 10 -var patchVersion = 2 +var patchVersion = 3 // Version string var version = fmt.Sprintf("%d.%d.%d", majorVersion, minorVersion, patchVersion) diff --git a/transfers/mover.go b/transfers/mover.go index 4856f08..f979953 100644 --- a/transfers/mover.go +++ b/transfers/mover.go @@ -138,11 +138,15 @@ func (m *moverState) process(decoder *gob.Decoder) { for running { select { case transferId := <-m.Channels.RequestMove: - moves, err := m.moveFiles(transferId) - if err == nil { - moveOperations[transferId] = moves + if _, found := moveOperations[transferId]; !found { + moves, err := m.moveFiles(transferId) + if err == nil { + moveOperations[transferId] = moves + } + m.Channels.Error <- err + } else { + m.Channels.Error <- fmt.Errorf("file move for transfer %s previously requested", transferId.String()) } - m.Channels.Error <- err case transferId := <-m.Channels.RequestCancellation: if moves, found := moveOperations[transferId]; found { err := m.cancel(moves) diff --git a/transfers/stager.go b/transfers/stager.go index bab6f59..05f800a 100644 --- a/transfers/stager.go +++ b/transfers/stager.go @@ -274,13 +274,11 @@ func (s *stagerState) updateStatus(transferId uuid.UUID, staging stagingEntry) ( if err != nil { slog.Error(err.Error()) } - } - } - - if newStatus.Code == TransferStatusActive { - if err := mover.MoveFiles(transferId); err != nil { - return completed, err + if newStatus.Code == TransferStatusActive { + if err := mover.MoveFiles(transferId); err != nil { + return completed, err + } } } return completed, nil