Skip to content

Commit

Permalink
hmp: remove "change vnc TARGET" command
Browse files Browse the repository at this point in the history
The HMP command \"change vnc TARGET\" is messy:

- it takes an ugly shortcut to determine if the option has an "id",
with incorrect results if "id=" is not preceded by an unescaped
comma.

- it deletes the existing QemuOpts and does not try to rollback
if the parsing fails (which is not causing problems, but only due to
how VNC options are parsed)

- because it uses the same parsing function as "-vnc", it forces
the latter to not support "-vnc help".

On top of this, it uses a deprecated QMP command, thus getting in
the way of removing the QMP command.  Since the usecase for the
command is not clear, just remove it and send "change vnc password"
directly to the QMP "change-vnc-password" command.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Gerd Hoffmann <kraxel@redhat.com>
Message-Id: <20210120144235.345983-2-pbonzini@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
  • Loading branch information
bonzini committed Jan 23, 2021
1 parent 3e3267a commit cfb5387
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 8 deletions.
6 changes: 6 additions & 0 deletions docs/system/removed-features.rst
Expand Up @@ -68,6 +68,12 @@ The ``[hub_id name]`` parameter tuple of the 'hostfwd_add' and
Use ``device_add`` for hotplugging vCPUs instead of ``cpu-add``. See
documentation of ``query-hotpluggable-cpus`` for additional details.

``change vnc TARGET`` (removed in 6.0)
''''''''''''''''''''''''''''''''''''''

No replacement. The ``change vnc password`` and ``change DEVICE MEDIUM``
commands are not affected.

Guest Emulator ISAs
-------------------

Expand Down
6 changes: 0 additions & 6 deletions hmp-commands.hx
Expand Up @@ -231,12 +231,6 @@ SRST
read-write
Makes the device writable.

``change vnc`` *display*,\ *options*
Change the configuration of the VNC server. The valid syntax for *display*
and *options* are described at :ref:`sec_005finvocation`. eg::

(qemu) change vnc localhost:1

``change vnc password`` [*password*]

Change the password associated with the VNC server. If the new password
Expand Down
7 changes: 5 additions & 2 deletions monitor/hmp-cmds.c
Expand Up @@ -1521,13 +1521,16 @@ void hmp_change(Monitor *mon, const QDict *qdict)
}
if (strcmp(target, "passwd") == 0 ||
strcmp(target, "password") == 0) {
if (!arg) {
if (arg) {
MonitorHMP *hmp_mon = container_of(mon, MonitorHMP, common);
monitor_read_password(hmp_mon, hmp_change_read_arg, NULL);
return;
} else {
qmp_change_vnc_password(arg, &err);
}
} else {
monitor_printf(mon, "Expected 'password' after 'vnc'\n");
}
qmp_change("vnc", target, !!arg, arg, &err);
} else
#endif
{
Expand Down

0 comments on commit cfb5387

Please sign in to comment.