From 2d0a54f31af56d9bdd258f5c37bab3f4df3c5c42 Mon Sep 17 00:00:00 2001 From: Viktor Liu Date: Sun, 17 May 2026 17:16:10 +0200 Subject: [PATCH] Fix golangci-lint and Sonar: drop newZlibState, extract applyEncoding, inline stub comment --- client/internal/engine_vnc_stub.go | 5 +- client/vnc/server/rfb.go | 4 -- client/vnc/server/session.go | 82 +++++++++++++++++------------- 3 files changed, 49 insertions(+), 42 deletions(-) diff --git a/client/internal/engine_vnc_stub.go b/client/internal/engine_vnc_stub.go index 688a588f7..505c308db 100644 --- a/client/internal/engine_vnc_stub.go +++ b/client/internal/engine_vnc_stub.go @@ -10,7 +10,8 @@ type vncServer interface{} func (e *Engine) updateVNC(_ *mgmProto.SSHConfig) error { return nil } -// updateVNCServerAuth is a no-op on platforms without a VNC server. -func (e *Engine) updateVNCServerAuth(_ *mgmProto.VNCAuth) {} +func (e *Engine) updateVNCServerAuth(_ *mgmProto.VNCAuth) { + // no-op on platforms without a VNC server +} func (e *Engine) stopVNCServer() error { return nil } diff --git a/client/vnc/server/rfb.go b/client/vnc/server/rfb.go index e7e2e3b18..12678e5fe 100644 --- a/client/vnc/server/rfb.go +++ b/client/vnc/server/rfb.go @@ -671,10 +671,6 @@ type zlibState struct { w *zlib.Writer } -func newZlibState() *zlibState { - return newZlibStateLevel(zlib.BestSpeed) -} - func newZlibStateLevel(level int) *zlibState { buf := &bytes.Buffer{} w, _ := zlib.NewWriterLevel(buf, level) diff --git a/client/vnc/server/session.go b/client/vnc/server/session.go index be26f2d31..9f9d6e023 100644 --- a/client/vnc/server/session.go +++ b/client/vnc/server/session.go @@ -316,42 +316,8 @@ func (s *session) handleSetEncodings() error { s.encMu.Lock() for i := range int(numEnc) { enc := int32(binary.BigEndian.Uint32(buf[i*4 : i*4+4])) - switch enc { - case encCopyRect: - s.useCopyRect = true - if s.copyRectDet == nil { - s.copyRectDet = newCopyRectDetector(tileSize) - } - encs = append(encs, "copyrect") - case pseudoEncDesktopSize: - s.clientSupportsDesktopSize = true - encs = append(encs, "desktop-size") - case pseudoEncExtendedDesktopSize: - s.clientSupportsExtendedDesktopSize = true - encs = append(encs, "ext-desktop-size") - case pseudoEncDesktopName: - s.clientSupportsDesktopName = true - encs = append(encs, "desktop-name") - case pseudoEncLastRect: - s.clientSupportsLastRect = true - encs = append(encs, "last-rect") - case pseudoEncQEMUExtendedKeyEvent: - s.clientSupportsQEMUKey = true - encs = append(encs, "qemu-key") - case pseudoEncExtendedClipboard: - s.clientSupportsExtClipboard = true - encs = append(encs, "ext-clipboard") - case encTight: - s.useTight = true - encs = append(encs, "tight") - } - switch { - case enc >= pseudoEncQualityLevelMin && enc <= pseudoEncQualityLevelMax: - s.clientJPEGQuality = int(enc - pseudoEncQualityLevelMin) - encs = append(encs, fmt.Sprintf("quality=%d", s.clientJPEGQuality)) - case enc >= pseudoEncCompressLevelMin && enc <= pseudoEncCompressLevelMax: - s.clientZlibLevel = int(enc - pseudoEncCompressLevelMin) - encs = append(encs, fmt.Sprintf("compress=%d", s.clientZlibLevel)) + if name := s.applyEncoding(enc); name != "" { + encs = append(encs, name) } } if s.useTight && (s.tight == nil || @@ -375,6 +341,50 @@ func (s *session) handleSetEncodings() error { return nil } +// applyEncoding records a single encoding/pseudo-encoding from a SetEncodings +// message. Returns the short name used in the debug log, or "" if the value +// is one we don't recognise. Caller holds s.encMu. +func (s *session) applyEncoding(enc int32) string { + switch enc { + case encCopyRect: + s.useCopyRect = true + if s.copyRectDet == nil { + s.copyRectDet = newCopyRectDetector(tileSize) + } + return "copyrect" + case pseudoEncDesktopSize: + s.clientSupportsDesktopSize = true + return "desktop-size" + case pseudoEncExtendedDesktopSize: + s.clientSupportsExtendedDesktopSize = true + return "ext-desktop-size" + case pseudoEncDesktopName: + s.clientSupportsDesktopName = true + return "desktop-name" + case pseudoEncLastRect: + s.clientSupportsLastRect = true + return "last-rect" + case pseudoEncQEMUExtendedKeyEvent: + s.clientSupportsQEMUKey = true + return "qemu-key" + case pseudoEncExtendedClipboard: + s.clientSupportsExtClipboard = true + return "ext-clipboard" + case encTight: + s.useTight = true + return "tight" + } + if enc >= pseudoEncQualityLevelMin && enc <= pseudoEncQualityLevelMax { + s.clientJPEGQuality = int(enc - pseudoEncQualityLevelMin) + return fmt.Sprintf("quality=%d", s.clientJPEGQuality) + } + if enc >= pseudoEncCompressLevelMin && enc <= pseudoEncCompressLevelMax { + s.clientZlibLevel = int(enc - pseudoEncCompressLevelMin) + return fmt.Sprintf("compress=%d", s.clientZlibLevel) + } + return "" +} + // handleFBUpdateRequest parses the request and hands it to the encoder // goroutine. It never blocks on capture/encode, so the input dispatch loop // stays responsive even when a previous frame is still being encoded.