From: Stefan Reiter <s.rei...@proxmox.com> VNC only supports 'keep' here, enforce this via a seperate SetPasswordActionVnc enum and mark the option 'deprecated' (as it is useless with only one value possible).
Also add a deprecation note to docs. Suggested-by: Eric Blake <ebl...@redhat.com> Reviewed-by: Markus Armbruster <arm...@redhat.com> Signed-off-by: Stefan Reiter <s.rei...@proxmox.com> Message-Id: <20211021100135.4146766-5-s.rei...@proxmox.com> Acked-by: Gerd Hoffmann <kra...@redhat.com> Signed-off-by: Markus Armbruster <arm...@redhat.com> --- docs/about/deprecated.rst | 6 ++++++ qapi/ui.json | 21 ++++++++++++++++++++- monitor/qmp-cmds.c | 5 ----- 3 files changed, 26 insertions(+), 6 deletions(-) diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst index be19317470..15b016e344 100644 --- a/docs/about/deprecated.rst +++ b/docs/about/deprecated.rst @@ -234,6 +234,12 @@ single ``bitmap``, the new ``block-export-add`` uses a list of ``bitmaps``. Member ``values`` in return value elements with meta-type ``enum`` is deprecated. Use ``members`` instead. +``set_password`` argument ``connected`` for VNC protocol (since 6.2) +'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' + +Only the value ``keep`` is and was ever supported for VNC. The (useless) +argument will be dropped in a future version of QEMU. + System accelerators ------------------- diff --git a/qapi/ui.json b/qapi/ui.json index 99ac29ad9c..5292617b44 100644 --- a/qapi/ui.json +++ b/qapi/ui.json @@ -38,6 +38,20 @@ { 'enum': 'SetPasswordAction', 'data': [ 'fail', 'disconnect', 'keep' ] } +## +# @SetPasswordActionVnc: +# +# See @SetPasswordAction. VNC only supports the keep action. 'connection' +# should just be omitted for VNC, this is kept for backwards compatibility. +# +# @keep: maintain existing clients +# +# Since: 6.2 +# +## +{ 'enum': 'SetPasswordActionVnc', + 'data': [ 'keep' ] } + ## # @SetPasswordOptions: # @@ -83,12 +97,17 @@ # @connected: How to handle existing clients when changing the # password. # +# Features: +# @deprecated: For VNC, @connected will always be 'keep', parameter should be +# omitted. +# # Since: 6.2 # ## { 'struct': 'SetPasswordOptionsVnc', 'data': { '*display': 'str', - '*connected': 'SetPasswordAction' }} + '*connected': { 'type': 'SetPasswordActionVnc', + 'features': ['deprecated'] } } } ## # @set_password: diff --git a/monitor/qmp-cmds.c b/monitor/qmp-cmds.c index 5637bd70b6..4825d0cbea 100644 --- a/monitor/qmp-cmds.c +++ b/monitor/qmp-cmds.c @@ -176,11 +176,6 @@ void qmp_set_password(SetPasswordOptions *opts, Error **errp) opts->u.spice.connected == SET_PASSWORD_ACTION_DISCONNECT); } else { assert(opts->protocol == DISPLAY_PROTOCOL_VNC); - if (opts->u.vnc.connected != SET_PASSWORD_ACTION_KEEP) { - /* vnc supports "connected=keep" only */ - error_setg(errp, QERR_INVALID_PARAMETER, "connected"); - return; - } /* Note that setting an empty password will not disable login through * this interface. */ rc = vnc_display_password(opts->u.vnc.display, opts->password); -- 2.31.1