]> git.r.bdr.sh - rbdr/mobius/blobdiff - hotline/server.go
Account for 16 vs 32 bit integers in folder upload
[rbdr/mobius] / hotline / server.go
index ed3c04114d4dd28f590b243ae945f89957287dcf..a521a6bfecd22adc2a28c68ca1a4b6062ca3bbed 100644 (file)
@@ -603,10 +603,20 @@ func (s *Server) handleFileTransfer(ctx context.Context, rwc io.ReadWriter) erro
                        s.Stats.Decrement(StatUploadsInProgress)
                }()
 
+               var transferSizeValue uint32
+               switch len(fileTransfer.TransferSize) {
+                       case 2: // 16-bit
+                               transferSizeValue = uint32(binary.BigEndian.Uint16(fileTransfer.TransferSize))
+                       case 4: // 32-bit
+                               transferSizeValue = binary.BigEndian.Uint32(fileTransfer.TransferSize)
+                       default:
+                               rLogger.Warn("Unexpected TransferSize length: %d bytes", len(fileTransfer.TransferSize))
+               }
+
                rLogger.Info(
                        "Folder upload started",
                        "dstPath", fullPath,
-                       "TransferSize", binary.BigEndian.Uint32(fileTransfer.TransferSize),
+                       "TransferSize", transferSizeValue,
                        "FolderItemCount", fileTransfer.FolderItemCount,
                )