From f667373f27b1cdacb682d05f32117eb516b46058 Mon Sep 17 00:00:00 2001 From: Alexandre Derumier Date: Mon, 25 Jun 2012 10:02:45 +0200 Subject: [PATCH] qmp_read_avail : reworks qmp response could me more than 1 json. we can have 1 json with event info, and 1 json with return infos. We die if we receive an error message in response. Signed-off-by: Alexandre Derumier --- PVE/QemuServer.pm | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm index 47c122e5..def9da04 100644 --- a/PVE/QemuServer.pm +++ b/PVE/QemuServer.pm @@ -2702,8 +2702,20 @@ my $qmp_read_avail = sub { } die "qmp read timeout\n" if !scalar(@ready); - my $obj = from_json($res); - return $obj; + + my @jsons = split("\n", $res); + my $obj = {}; + my $event = {}; + my $return = {}; + foreach my $json (@jsons) { + $obj = from_json($json); + $event = $obj->{event} if exists $obj->{event}; + $return = $obj->{QMP} if exists $obj->{QMP}; + $return = $obj->{"return"} if exists $obj->{"return"}; + die $obj->{error}->{desc} if exists $obj->{error}->{desc} && $obj->{error}->{desc} !~ m/Connection can not be completed immediately/; + } + + return ($return,$event); }; sub __read_avail {