Commit 48645123 authored by Fam Zheng's avatar Fam Zheng Committed by Luiz Capitulino
Browse files

qmp: Check for returned data from __json_read in get_events



When QEMU process aborts and socket is closed, qmp client will not
detect it. When this happens, some qemu-iotests scripts will enter an
endless loop waiting for qmp events.

It's better we raise an exception in qmp.py to catch this and make the
test script stop.

Signed-off-by: default avatarFam Zheng <famz@redhat.com>
Reviewed-by: default avatarStefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: default avatarLuiz Capitulino <lcapitulino@redhat.com>
parent 7d6dc7f3
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -171,7 +171,12 @@ class QEMUMonitorProtocol:
                pass
        self.__sock.setblocking(1)
        if not self.__events and wait:
            self.__json_read(only_event=True)
            ret = self.__json_read(only_event=True)
            if ret == None:
                # We are in blocking mode, if don't get anything, something
                # went wrong
                raise QMPConnectError("Error while reading from socket")

        return self.__events

    def clear_events(self):