• E
    qmp: Give saner messages related to qmp_capabilities misuse · 2d5a8346
    Eric Blake 提交于
    Pretending that QMP doesn't understand a command merely because
    we are not in the right mode doesn't help first-time users figure
    out what to do to correct things.  Although the documentation for
    QMP calls out capabilities negotiation, we should also make it
    clear in our error messages what we were expecting.  With this
    patch, I now get the following transcript:
    
    $ ./x86_64-softmmu/qemu-system-x86_64 -qmp stdio -nodefaults
    {"QMP": {"version": {"qemu": {"micro": 93, "minor": 2, "major": 2}, "package": ""}, "capabilities": []}}
    {"execute":"huh"}
    {"error": {"class": "CommandNotFound", "desc": "The command huh has not been found"}}
    {"execute":"quit"}
    {"error": {"class": "CommandNotFound", "desc": "Expecting capabilities negotiation with 'qmp_capabilities' before command 'quit'"}}
    {"execute":"qmp_capabilities"}
    {"return": {}}
    {"execute":"qmp_capabilities"}
    {"error": {"class": "CommandNotFound", "desc": "Capabilities negotiation is already complete, command 'qmp_capabilities' ignored"}}
    {"execute":"quit"}
    {"return": {}}
    {"timestamp": {"seconds": 1429110729, "microseconds": 181935}, "event": "SHUTDOWN"}
    Signed-off-by: NEric Blake <eblake@redhat.com>
    Tested-By: NKashyap Chamarthy <kchamart@redhat.com>
    Reviewed-by: NPaulo Vital <paulo.vital@profitbricks.com>
    Reviewed-by: NJohn Snow <jsnow@redhat.com>
    Signed-off-by: NLuiz Capitulino <lcapitulino@redhat.com>
    2d5a8346
monitor.c 154.8 KB