From 9d84485b97664dba48e180e170fab6077324bff0 Mon Sep 17 00:00:00 2001 From: Zack Scholl Date: Sat, 13 Apr 2019 02:49:57 -0700 Subject: [PATCH] try to maximize packet size --- src/webrtc/pkg/session/sender/sender.go | 34 ++++++++++++++++++------- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/src/webrtc/pkg/session/sender/sender.go b/src/webrtc/pkg/session/sender/sender.go index 40f4433a..02b1ab75 100644 --- a/src/webrtc/pkg/session/sender/sender.go +++ b/src/webrtc/pkg/session/sender/sender.go @@ -24,7 +24,8 @@ const ( // Must be <= 16384 // 8 bytes for position // 3000 bytes for encryption / compression overhead - senderBuffSize = 8192 + maxPacketSize = 16384 + senderBuffSize = 15000 bufferThreshold = 512 * 1024 // 512kB ) @@ -204,6 +205,7 @@ func (s *Session) readFile(pathToFile string) error { close(s.output) }() pos := uint64(0) + var lastBytes []byte for { // Read file s.dataBuff = s.dataBuff[:cap(s.dataBuff)] @@ -223,14 +225,28 @@ func (s *Session) readFile(pathToFile string) error { posByte := make([]byte, 8) binary.LittleEndian.PutUint64(posByte, pos) - buff := append([]byte(nil), posByte...) - buff = append(buff, s.dataBuff...) - buff = compress.Compress(buff) - buff = crypt.EncryptToBytes(buff, []byte{1, 2, 3, 4}) - s.output <- outputMsg{ - n: n, - // Make a copy of the buffer - buff: buff, + for i := 0; i < 10000; i += 1000 { + buff := append([]byte(nil), posByte...) + if len(lastBytes) > 0 { + buff = append(buff, lastBytes...) + } + buff = append(buff, s.dataBuff[:n-i]...) + buff = compress.Compress(buff) + buff = crypt.EncryptToBytes(buff, []byte{1, 2, 3, 4}) + if len(buff) < maxPacketSize { + if n-i > 0 { + lastBytes = append([]byte(nil), s.dataBuff[n-i:]...) + } else { + lastBytes = []byte{} + } + n = n - i + log.Debugf("sending packet size %d", len(buff)) + s.output <- outputMsg{ + n: n, + buff: buff, + } + break + } } pos += uint64(n) }