+
+func HandleDownloadBanner(cc *ClientConn, t *Transaction) (res []Transaction, err error) {
+ transactionRef := cc.Server.NewTransactionRef()
+ data := binary.BigEndian.Uint32(transactionRef)
+
+ ft := &FileTransfer{
+ ReferenceNumber: transactionRef,
+ Type: bannerDownload,
+ }
+
+ fi, err := cc.Server.FS.Stat(filepath.Join(cc.Server.ConfigDir, cc.Server.Config.BannerFile))
+ if err != nil {
+ return res, err
+ }
+
+ size := make([]byte, 4)
+ binary.BigEndian.PutUint32(size, uint32(fi.Size()))
+
+ cc.Server.mux.Lock()
+ defer cc.Server.mux.Unlock()
+ cc.Server.FileTransfers[data] = ft
+
+ res = append(res, cc.NewReply(t,
+ NewField(fieldRefNum, transactionRef),
+ NewField(fieldTransferSize, size),
+ ))
+
+ res = append(res, cc.NewReply(t))
+ return res, err
+}