Capability negotiation allows clients to enable new QMP capabilities they support and thus allows QMP to evolve in a compatible way.
This series implements Markus's design and is a revamp of the previous one. It's very simple now, as mode-oriented support has been dropped. I've maintained the same terminology, though. Basically, QMP starts in capability negotiation mode where only the 'qmp_capabilities' command is allowed to run. This command should be used by clients to enable capabilities they support. When this command is issued QMP enters in command mode, where the party begins. Details in the patches. changelog --------- v1 -> v2 - Typos and minor changes v0 -> v1 - Drop mode-oriented support