diff --git a/pkg/client/tunnel.go b/pkg/client/tunnel.go index 0a15832..b8db98e 100644 --- a/pkg/client/tunnel.go +++ b/pkg/client/tunnel.go @@ -142,9 +142,7 @@ func (t *Tunnel) Bridge(tapRead func(buf []byte) (int, error), tapWrite func(buf errCh <- fmt.Errorf("read from tap: %w", err) return } - frame := make([]byte, n) - copy(frame, buf[:n]) - if err := t.WriteFrames([][]byte{frame}); err != nil { + if err := t.WriteFrames([][]byte{buf[:n]}); err != nil { errCh <- fmt.Errorf("write to server: %w", err) return } @@ -162,6 +160,7 @@ func (t *Tunnel) StartKeepalive() { ticker := time.NewTicker(keepAliveInterval) defer ticker.Stop() rng := rand.New(rand.NewSource(time.Now().UnixNano())) + randBuf := make([]byte, maxKeepaliveSize) for { select { case <-t.stopCh: @@ -174,9 +173,8 @@ func (t *Tunnel) StartKeepalive() { if err := binary.Write(t.sess.Conn, binary.BigEndian, size); err != nil { return } - randData := make([]byte, size) - rng.Read(randData) - if _, err := t.sess.Conn.Write(randData); err != nil { + rng.Read(randBuf[:size]) + if _, err := t.sess.Conn.Write(randBuf[:size]); err != nil { return } }