Markus Armbruster <arm...@redhat.com> writes: [...] > Check for completeness by reviewing the case insensitive occurrences of > SPICE in the schema not covered by your patch: > > * add_client > > Same rationale as for VNC (see my review of PATCH 16). Good.
Hmm, there's a difference to VNC, in qmp_add_client(): if (strcmp(protocol, "spice") == 0) { if (!qemu_using_spice(errp)) { close(fd); return; } skipauth = has_skipauth ? skipauth : false; tls = has_tls ? tls : false; if (qemu_spice_display_add_client(fd, skipauth, tls) < 0) { error_setg(errp, "spice failed to add client"); close(fd); } return; #ifdef CONFIG_VNC } else if (strcmp(protocol, "vnc") == 0) { skipauth = has_skipauth ? skipauth : false; vnc_display_add_client(NULL, fd, skipauth); return; #endif } else if ((s = qemu_chr_find(protocol)) != NULL) { if (qemu_chr_add_client(s, fd) < 0) { error_setg(errp, "failed to add client"); close(fd); return; } return; } error_setg(errp, "protocol '%s' is invalid", protocol); close(fd); Observe: * Protocol "spice" is always recognized. Without CONFIG_SPICE, using_spice is always false, and the command fails with qemu_using_spice()'s error "SPICE is not in use". * Protocol "vnc" is only recognized with CONFIG_VNC. Without, it's rejected with "protocol 'vnc' is invalid". * If you name your character device "spice" or "vnc", you can't use it with add_client. This is a design flaw. Except you can use one named "vnc" when !CONFIG_VNC. I'm afraid the command needs to be replaced. Not in this series, of course. [...]