res = append(res, cc.NewReply(t,
NewField(fieldFileName, fileName),
- NewField(fieldFileTypeString, ffo.FlatFileInformationFork.TypeSignature),
+ NewField(fieldFileTypeString, ffo.FlatFileInformationFork.friendlyType()),
NewField(fieldFileCreatorString, ffo.FlatFileInformationFork.CreatorSignature),
NewField(fieldFileComment, ffo.FlatFileInformationFork.Comment),
NewField(fieldFileType, ffo.FlatFileInformationFork.TypeSignature),
fileName := t.GetField(fieldFileName).Data
filePath := t.GetField(fieldFilePath).Data
- // 2 bytes
- // transferOptions := t.GetField(fieldFileTransferOptions).Data
resumeData := t.GetField(fieldFileResumeData).Data
var dataOffset int64
ft.fileResumeData = &frd
}
+ xferSize := ffo.TransferSize()
+
+ // Optional field for when a HL v1.5+ client requests file preview
+ // Used only for TEXT, JPEG, GIFF, BMP or PICT files
+ // The value will always be 2
+ if t.GetField(fieldFileTransferOptions).Data != nil {
+ ft.options = t.GetField(fieldFileTransferOptions).Data
+ xferSize = ffo.FlatFileDataForkHeader.DataSize[:]
+ }
+
+ cc.Server.mux.Lock()
+ defer cc.Server.mux.Unlock()
cc.Server.FileTransfers[data] = ft
+
cc.Transfers[FileDownload] = append(cc.Transfers[FileDownload], ft)
res = append(res, cc.NewReply(t,
NewField(fieldRefNum, transactionRef),
NewField(fieldWaitingCount, []byte{0x00, 0x00}), // TODO: Implement waiting count
- NewField(fieldTransferSize, ffo.TransferSize()),
+ NewField(fieldTransferSize, xferSize),
NewField(fieldFileSize, ffo.FlatFileDataForkHeader.DataSize[:]),
))
transactionRef := cc.Server.NewTransactionRef()
data := binary.BigEndian.Uint32(transactionRef)
+ cc.Server.mux.Lock()
cc.Server.FileTransfers[data] = &FileTransfer{
FileName: fileName,
FilePath: filePath,
ReferenceNumber: transactionRef,
Type: FileUpload,
}
+ cc.Server.mux.Unlock()
replyT := cc.NewReply(t, NewField(fieldRefNum, transactionRef))