Markus Armbruster <arm...@redhat.com> writes: > Markus Armbruster <arm...@redhat.com> writes: > >> I fooled around a bit, and I think there are a few lose ends. > [...] >> Talking to a QMP monitor that supports OOB: >> >> $ socat UNIX:test-qmp READLINE,history=$HOME/.qmp_history,prompt='QMP> ' >> {"QMP": {"version": {"qemu": {"micro": 50, "minor": 12, "major": 2}, >> "package": "v2.12.0-1703-gb909799463"}, "capabilities": ["oob"]}} >> QMP> { "execute": "qmp_capabilities", "arguments": { "oob": true } } >> {"error": {"class": "GenericError", "desc": "Parameter 'oob' is >> unexpected"}} >> QMP> { "execute": "qmp_capabilities", "arguments": { "enable": ["oob"] } >> } >> {"return": {}} >> QMP> { "execute": "query-qmp-schema" } >> {"error": {"class": "GenericError", "desc": "Out-Of-Band capability >> requires that every command contains an 'id' field"}} >> >> Why does every command require 'id'? > > I found one reason: event COMMAND_DROPPED wants it. Any other reason? > > [...]
Apropos COMMAND_DROPPED: we send an event rather than an error response because we may send it out-of-order. Makes sense. However, broadcasting it to all monitors doesn't make sense. We could use a way to send an event to just one monitor. Another use for that might be QMP "deprecated" notifications, because those also can't be error responses, and also only make sense for the client that caused them.