Page MenuHomeFreeBSD

Fix issues with various VNC clients.
ClosedPublic

Authored by grehan on Dec 14 2020, 8:59 AM.

Details

Reviewers
jhb
Group Reviewers
bhyve
Commits
rS368747: Fix issues with various VNC clients.
Summary
  • Support VNC version 3.3 (macos "Screen Sharing" builtin client)
  • wait until client has requested an update prior to sending framebuffer data
  • don't send an update if no framebuffer updates detected
  • increase framebuffer poll frequency to 30Hz, and double that when keyboard/mouse input detected
  • zero uninitialized array elements in rfb_send_server_init_msg()
  • fix overly large allocation in rfb_init()
  • use atomics for flags shared between input and output threads
  • use #defines for constants

This work and testing was done by marko@apache.org, and reused work done by
Henrik Gulbrandsen.

Test Plan

Clients tested with:
FreeBSD-current

  • tightvnc
  • tigervnc
  • krdc
  • vinagre

Linux (Ubuntu)

  • krdc
  • vinagre
  • tigervnc
  • xtightvncviewer
  • remmina

MacOS

  • VNC Viewer
  • TigerVNC
  • Screen Sharing (builtin client)

Windows 10

  • Tiger VNC
  • VNC Viewer (cursor lag)
  • UltraVNC (cursor lag)

o/s independent

  • noVNC (browser) using websockify relay

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Lint OK
Unit
No Unit Test Coverage
Build Status
Buildable 35395
Build 32312: arc lint + arc unit

Event Timeline

jhb added inline comments.
usr.sbin/bhyve/rfb.c
42

For new code it might be nice to use C11 atomics instead?

This revision is now accepted and ready to land.Dec 14 2020, 7:54 PM

Convert to use c11 atomics.

This revision now requires review to proceed.Dec 15 2020, 10:28 AM
This revision is now accepted and ready to land.Dec 16 2020, 11:57 PM
This revision was automatically updated to reflect the committed changes.