[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH] libxl: only query VNC when enabled
On Thu, Oct 01, 2020 at 07:53:37PM -0400, Jason Andryuk wrote: > QEMU without VNC support (configure --disable-vnc) will return an error > when VNC is queried over QMP since it does not recognize the QMP > command. This will cause libxl to fail starting the domain even if VNC > is not enabled. Therefore only query QEMU for VNC support when using > VNC, so a VNC-less QEMU will function in this configuration. > > 'goto out' jumps to the call to device_model_postconfig_done(), the > final callback after the chain of vnc queries. This bypasses all the > QMP VNC queries. > > Signed-off-by: Jason Andryuk <jandryuk@xxxxxxxxx> > --- > tools/libs/light/libxl_dm.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/tools/libs/light/libxl_dm.c b/tools/libs/light/libxl_dm.c > index a944181781..d1ff35dda3 100644 > --- a/tools/libs/light/libxl_dm.c > +++ b/tools/libs/light/libxl_dm.c > @@ -3140,6 +3140,7 @@ static void device_model_postconfig_chardev(libxl__egc > *egc, > { > EGC_GC; > libxl__dm_spawn_state *dmss = CONTAINER_OF(qmp, *dmss, qmp); > + const libxl_vnc_info *vnc = libxl__dm_vnc(dmss->guest_config); > const libxl__json_object *item = NULL; > const libxl__json_object *o = NULL; > int i = 0; > @@ -3197,6 +3198,9 @@ static void device_model_postconfig_chardev(libxl__egc > *egc, > if (rc) goto out; > } > > + if (!vnc) > + goto out; > + I would rather this check be done in device_model_postconfig_vnc. Does the following work for you? diff --git a/tools/libs/light/libxl_dm.c b/tools/libs/light/libxl_dm.c index a944181781bb..c5db755a65d7 100644 --- a/tools/libs/light/libxl_dm.c +++ b/tools/libs/light/libxl_dm.c @@ -3222,6 +3222,8 @@ static void device_model_postconfig_vnc(libxl__egc *egc, if (rc) goto out; + if (!vnc) goto out; + /* * query-vnc response: * { 'enabled': 'bool', '*host': 'str', '*service': 'str' } @@ -3255,7 +3257,8 @@ static void device_model_postconfig_vnc(libxl__egc *egc, if (rc) goto out; } - if (vnc && vnc->passwd && vnc->passwd[0]) { + assert(vnc); + if (vnc->passwd && vnc->passwd[0]) { qmp->callback = device_model_postconfig_vnc_passwd; libxl__qmp_param_add_string(gc, &args, "password", vnc->passwd); rc = libxl__ev_qmp_send(egc, qmp, "change-vnc-password", args);
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |