[pve-devel] [PATCH qemu-server 06/10] mtunnel: add and handle OK/ERR replies

Fabian Gr├╝nbichler f.gruenbichler at proxmox.com
Fri Aug 4 10:55:05 CEST 2017


because we want commands to return meaningful errors, and
print them on the client/source side.

Signed-off-by: Fabian Gr├╝nbichler <f.gruenbichler at proxmox.com>
---
 PVE/CLI/qm.pm      |  5 ++++-
 PVE/QemuMigrate.pm | 11 +++++++++++
 2 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/PVE/CLI/qm.pm b/PVE/CLI/qm.pm
index bc4fe33..1bfbc1e 100755
--- a/PVE/CLI/qm.pm
+++ b/PVE/CLI/qm.pm
@@ -277,7 +277,10 @@ __PACKAGE__->register_method ({
 
 	while (my $line = <>) {
 	    chomp $line;
-	    last if $line =~ m/^quit$/;
+	    if ($line =~ /^quit$/) {
+		$tunnel_write->("OK");
+		last;
+	    }
 	}
 
 	return undef;
diff --git a/PVE/QemuMigrate.pm b/PVE/QemuMigrate.pm
index f9ce8ca..1924754 100644
--- a/PVE/QemuMigrate.pm
+++ b/PVE/QemuMigrate.pm
@@ -123,6 +123,17 @@ sub write_tunnel {
 	});
     };
     die "writing to tunnel failed: $@\n" if $@;
+
+    if ($tunnel->{version} && $tunnel->{version} >= 1.0) {
+	my $res = eval { $self->read_tunnel($tunnel, 10); };
+	die "no reply to command '$command': $@\n" if $@;
+
+	if ($res eq 'OK') {
+	    return;
+	} else {
+	    die "tunnel replied '$res' to command '$command'\n";
+	}
+    }
 }
 
 sub fork_tunnel {
-- 
2.11.0




More information about the pve-devel mailing list