Skip to content

fix: resolve Guest Server API going offline and default to slirp networking on Podman#783

Open
Vikyek wants to merge 1 commit into
TibixDev:mainfrom
Vikyek:improved-networking
Open

fix: resolve Guest Server API going offline and default to slirp networking on Podman#783
Vikyek wants to merge 1 commit into
TibixDev:mainfrom
Vikyek:improved-networking

Conversation

@Vikyek
Copy link
Copy Markdown

@Vikyek Vikyek commented May 23, 2026

This PR addresses issues causing the WinBoat Guest Server API to periodically go offline and fail silently, as
well as fixing a Vue Ref unwrapping bug that incorrectly logged and handled offline states in the frontend.

Changes

  1. Default to slirp networking for Podman containers ( src/renderer/data/podman.ts )
    • Issue: The default networking mode on Podman was configured to user mode. This utilizes the passt
    daemon inside the container for port forwarding. In rootless Podman environments, the passt daemon was
    crashing under CPU load/connections, disconnecting /tmp/passt_1.socket and leaving the Windows VM
    completely without network access (taking the Guest Server API offline). It also caused QEMU to loop/spin,
    consuming ~315% CPU on the host.
    • Fix: Switched the default networking configuration for Podman to slirp . This uses QEMU's internal user-
    mode networking and hostfwd rules directly, eliminating the dependency on passt and preventing crashes.
    Host CPU utilization drops from 315% to a normal 63% .
  2. Fix Vue Ref unwrapping bugs ( src/renderer/lib/winboat.ts )
    • Issue 1: The logger checked this.isOnline (which is a Vue Ref wrapper object) in a ternary
    expression: this.isOnline ? "online" : "offline" . Because the Ref wrapper object is always truthy, this
    always evaluated to "online" , which flooded log files with "went online" messages even during offline
    transitions.
    • Issue 2: The app launch guard checked !this.isOnline , which also incorrectly evaluated to false ,
    causing app launches to proceed when the VM was offline and fail silently downstream rather than displaying
    a clear error.
    • Fix: Appended .value to both unwrapped Ref boolean checks ( this.isOnline.value ).

…orking on Podman

This PR addresses issues causing the WinBoat Guest Server API to periodically go offline and fail silently, as
  well as fixing a Vue Ref unwrapping bug that incorrectly logged and handled offline states in the frontend.
  #### Changes
  1. Default to  slirp  networking for Podman containers ( src/renderer/data/podman.ts )
      • Issue: The default networking mode on Podman was configured to  user  mode. This utilizes the  passt
      daemon inside the container for port forwarding. In rootless Podman environments, the  passt  daemon was
      crashing under CPU load/connections, disconnecting  /tmp/passt_1.socket  and leaving the Windows VM
      completely without network access (taking the Guest Server API offline). It also caused QEMU to loop/spin,
      consuming ~315% CPU on the host.
      • Fix: Switched the default networking configuration for Podman to  slirp . This uses QEMU's internal user-
      mode networking and  hostfwd  rules directly, eliminating the dependency on  passt  and preventing crashes.
      Host CPU utilization drops from  315%  to a normal  63% .
  2. Fix Vue Ref unwrapping bugs ( src/renderer/lib/winboat.ts )
      • Issue 1: The logger checked  this.isOnline  (which is a Vue  Ref<boolean>  wrapper object) in a ternary
      expression:  this.isOnline ? "online" : "offline" . Because the  Ref  wrapper object is always truthy, this
      always evaluated to  "online" , which flooded log files with  "went online"  messages even during offline
      transitions.
      • Issue 2: The app launch guard checked  !this.isOnline , which also incorrectly evaluated to  false ,
      causing app launches to proceed when the VM was offline and fail silently downstream rather than displaying
      a clear error.
      • Fix: Appended  .value  to both unwrapped  Ref  boolean checks ( this.isOnline.value ).
@kroese
Copy link
Copy Markdown
Contributor

kroese commented May 25, 2026

@Vikyek The first issue should already be fixed since the dockur/windows image has been updated to v5.15. If your Podman+Passt issue still exists in v5.15, please make an issue in that repo.

@waffles-dev
Copy link
Copy Markdown
Collaborator

My view is that of kroese's. Happy to merge the 2nd fix. If the podman change is removed I can merge as-is.

Not saying we won't make the change, if you feel strongly that it's still needed post the 5.1.5 uprev, then raise another PR and we can discuss that one there. Tibix or Levev would likely need to look into that one.

@waffles-dev waffles-dev self-requested a review May 29, 2026 10:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants