aboutsummaryrefslogtreecommitdiff
path: root/hotline/transaction_handlers.go
diff options
context:
space:
mode:
authorJeff Halter <868228+jhalter@users.noreply.github.com>2022-06-05 15:27:48 -0700
committerJeff Halter <868228+jhalter@users.noreply.github.com>2022-06-05 15:27:48 -0700
commitd1cd666473e5d9097b34bad3388c8c0595612089 (patch)
treec399983c005acd88a28ca7c3e934ad700e2a3c86 /hotline/transaction_handlers.go
parent050407a3b7f719ed6ce9367eb803bf948075e50e (diff)
Implement file preview
Diffstat (limited to 'hotline/transaction_handlers.go')
-rw-r--r--hotline/transaction_handlers.go17
1 files changed, 14 insertions, 3 deletions
diff --git a/hotline/transaction_handlers.go b/hotline/transaction_handlers.go
index 90ca6de..4a86831 100644
--- a/hotline/transaction_handlers.go
+++ b/hotline/transaction_handlers.go
@@ -1313,8 +1313,6 @@ func HandleDownloadFile(cc *ClientConn, t *Transaction) (res []Transaction, err
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
@@ -1353,13 +1351,26 @@ func HandleDownloadFile(cc *ClientConn, t *Transaction) (res []Transaction, err
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[:]),
))