diff options
| author | Jeff Halter <868228+jhalter@users.noreply.github.com> | 2022-06-05 15:27:48 -0700 |
|---|---|---|
| committer | Jeff Halter <868228+jhalter@users.noreply.github.com> | 2022-06-05 15:27:48 -0700 |
| commit | d1cd666473e5d9097b34bad3388c8c0595612089 (patch) | |
| tree | c399983c005acd88a28ca7c3e934ad700e2a3c86 /hotline/transaction_handlers.go | |
| parent | 050407a3b7f719ed6ce9367eb803bf948075e50e (diff) | |
Implement file preview
Diffstat (limited to 'hotline/transaction_handlers.go')
| -rw-r--r-- | hotline/transaction_handlers.go | 17 |
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[:]), )) |