X-Git-Url: https://git.r.bdr.sh/rbdr/mobius/blobdiff_plain/fd740bc499ebc6d3a381479316f74cdc736d02de..ad26e789e9e608b50b4e2d7304fd8e4df35fb126:/hotline/file_transfer.go diff --git a/hotline/file_transfer.go b/hotline/file_transfer.go index e37295a..b11aeae 100644 --- a/hotline/file_transfer.go +++ b/hotline/file_transfer.go @@ -87,6 +87,7 @@ func (ftm *MemFileTransferMgr) Delete(id FileTransferID) { } type FileTransfer struct { + FileRoot string FileName []byte FilePath []byte RefNum [4]byte @@ -116,9 +117,10 @@ func (wc *WriteCounter) Write(p []byte) (int, error) { return n, nil } -func (cc *ClientConn) NewFileTransfer(transferType FileTransferType, fileName, filePath, size []byte) *FileTransfer { +func (cc *ClientConn) NewFileTransfer(transferType FileTransferType, fileroot string, fileName, filePath, size []byte) *FileTransfer { ft := &FileTransfer{ FileName: fileName, + FileRoot: fileroot, FilePath: filePath, Type: transferType, TransferSize: size, @@ -289,14 +291,15 @@ func DownloadHandler(w io.Writer, fullPath string, fileTransfer *FileTransfer, f } } - rFile, err := fw.rsrcForkFile() - if err != nil { - // return fmt.Errorf("open resource fork file: %v", err) - } + rFile, _ := fw.rsrcForkFile() + //if err != nil { + // // return fmt.Errorf("open resource fork file: %v", err) + //} - if _, err = io.Copy(w, io.TeeReader(rFile, fileTransfer.bytesSentCounter)); err != nil { - // return fmt.Errorf("send resource fork data: %v", err) - } + _, _ = io.Copy(w, io.TeeReader(rFile, fileTransfer.bytesSentCounter)) + //if err != nil { + // // return fmt.Errorf("send resource fork data: %v", err) + //} return nil } @@ -323,12 +326,14 @@ func UploadHandler(rwc io.ReadWriter, fullPath string, fileTransfer *FileTransfe } } + defer file.Close() + f, err := NewFileWrapper(fileStore, fullPath, 0) if err != nil { return err } - rLogger.Info("File upload started", "dstFile", fullPath) + rLogger.Debug("File upload started", "dstFile", fullPath) rForkWriter := io.Discard iForkWriter := io.Discard @@ -345,15 +350,11 @@ func UploadHandler(rwc io.ReadWriter, fullPath string, fileTransfer *FileTransfe } if err := receiveFile(rwc, file, rForkWriter, iForkWriter, fileTransfer.bytesSentCounter); err != nil { - rLogger.Error(err.Error()) - } - - if err := file.Close(); err != nil { - return err + return fmt.Errorf("receive file: %v", err) } if err := fileStore.Rename(fullPath+".incomplete", fullPath); err != nil { - return err + return fmt.Errorf("rename incomplete file: %v", err) } rLogger.Info("File upload complete", "dstFile", fullPath) @@ -418,7 +419,6 @@ func DownloadFolderHandler(rwc io.ReadWriter, fullPath string, fileTransfer *Fil } subPath := path[basePathLen+1:] - rLogger.Debug("Sending fileheader", "i", i, "path", path, "fullFilePath", fullPath, "subPath", subPath, "IsDir", info.IsDir()) if i == 1 { return nil @@ -434,8 +434,6 @@ func DownloadFolderHandler(rwc io.ReadWriter, fullPath string, fileTransfer *Fil return err } - rLogger.Debug("Client folder download action", "action", fmt.Sprintf("%X", nextAction[0:2])) - var dataOffset int64 switch nextAction[1] {