Activity log for bug #1849644

Date Who What changed Old value New value Message
2019-10-24 10:23:06 Samuel bug added bug
2019-10-24 19:24:23 Daniel M. Basso bug added subscriber Daniel M. Basso
2020-02-10 09:52:31 Daniel Berrange qemu: status New Fix Committed
2020-04-30 13:36:44 Laurent Vivier qemu: status Fix Committed Fix Released
2020-09-24 09:23:12 Christian Ehrhardt  bug task added qemu (Ubuntu)
2020-09-24 09:23:20 Christian Ehrhardt  nominated for series Ubuntu Focal
2020-09-24 09:23:20 Christian Ehrhardt  bug task added qemu (Ubuntu Focal)
2020-09-24 09:23:30 Christian Ehrhardt  qemu (Ubuntu): status New Fix Released
2020-09-24 09:25:57 Christian Ehrhardt  qemu (Ubuntu Focal): status New Confirmed
2020-09-24 10:22:24 Christian Ehrhardt  qemu (Ubuntu Focal): importance Undecided Low
2020-09-25 05:47:54 Christian Ehrhardt  description When running a machine using "-vnc" and the "websocket" option QEMU seems to require the subprotocol called 'binary'. This subprotocol does not exist in the WebSocket specification. In fact it has never existed in the spec, in one of the very early drafts of WebSockets it was briefly mentioned but it never made it to a final version. When the WebSocket server requires a non-standard subprotocol any WebSocket client that works correctly won't be able to connect. One example of such a client is noVNC, it tells the server that it doesn't want to use any subprotocol. QEMU's WebSocket proxy doesn't let noVNC connect. If noVNC is modified to ask for 'binary' it will work, this is, however, incorrect behavior. Looking at the code in "io/channel-websock.c" it seems it's quite hard-coded to binary: Look at line 58 and 433 here: https://git.qemu.org/?p=qemu.git;a=blob;f=io/channel-websock.c This code has to be made more dynamic, and shouldn't require binary. [Impact] * The exact details of the protocol/subprotocal was slightly unclear between the projects. So qemu ended up insisting on "binary" being used but newer noVNC clients no more used it. * Qemu got fixed in 5.0 to be more tolerant and accept an empty sub- protocol as well. This SRU backports that fix to Focal. [Test Case] * Without the fix the following will "Failed to connect", but with the fix it will work. $ sudo apt install qemu-system-x86 # will only boot into a failing bootloader, but that is enough $ qemu-system-x86_64 -vnc :0,websocket # We need version 1.2 or later, so use the snap $ snap install novnc $ novnc --vnc localhost:5700 Connect browser to http://<IP>:6080/vnc.html Click "Connect" * Cross check with an older noVNC (e.g. the one in Focal) if the connectivity still works on those as well - Reminders when switching between the noVNC implementations - always refresh the browser with all clear ctrl+alt+f5 - start/stop the snapped one via snap.novnc.novncsvc.service [Regression Potential] * This is exclusive to the functionality of noVNC, so regressions would have to be expected in there. The tests try to exercise the basics, but e.g. Openstack would be a major product using [Other Info] * The noVNC in Focal itself does not yet have the offending change, but we want the qemu in focal to be connecteable from ~any type of client --- When running a machine using "-vnc" and the "websocket" option QEMU seems to require the subprotocol called 'binary'. This subprotocol does not exist in the WebSocket specification. In fact it has never existed in the spec, in one of the very early drafts of WebSockets it was briefly mentioned but it never made it to a final version. When the WebSocket server requires a non-standard subprotocol any WebSocket client that works correctly won't be able to connect. One example of such a client is noVNC, it tells the server that it doesn't want to use any subprotocol. QEMU's WebSocket proxy doesn't let noVNC connect. If noVNC is modified to ask for 'binary' it will work, this is, however, incorrect behavior. Looking at the code in "io/channel-websock.c" it seems it's quite hard-coded to binary: Look at line 58 and 433 here: https://git.qemu.org/?p=qemu.git;a=blob;f=io/channel-websock.c This code has to be made more dynamic, and shouldn't require binary.
2020-09-25 05:47:59 Christian Ehrhardt  qemu (Ubuntu Focal): status Confirmed Triaged
2020-09-25 05:48:18 Christian Ehrhardt  qemu (Ubuntu Focal): status Triaged In Progress
2020-09-25 06:07:46 Launchpad Janitor merge proposal linked https://code.launchpad.net/~paelzer/ubuntu/+source/qemu/+git/qemu/+merge/391348
2020-09-29 12:59:21 Robie Basak qemu (Ubuntu Focal): status In Progress Fix Committed
2020-09-29 12:59:22 Robie Basak bug added subscriber Ubuntu Stable Release Updates Team
2020-09-29 12:59:24 Robie Basak bug added subscriber SRU Verification
2020-09-29 12:59:26 Robie Basak tags verification-needed verification-needed-focal
2020-09-30 08:15:10 Christian Ehrhardt  tags verification-needed verification-needed-focal verification-done verification-done-focal
2020-10-12 09:44:42 Launchpad Janitor qemu (Ubuntu Focal): status Fix Committed Fix Released
2020-10-12 09:44:51 Łukasz Zemczak removed subscriber Ubuntu Stable Release Updates Team