The comment in the code says most of it, but when the destination
hostname resolution is screwed up, print a proper error instead
of the very unhelpful "unknown error".

Note that I'm not overly fond of the wording in the error message,
so I'm open to suggestions.

Signed-off-by: Chris Lalancette <clala...@redhat.com>
---
 src/qemu/qemu_driver.c |   16 ++++++++++++++++
 1 files changed, 16 insertions(+), 0 deletions(-)

diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index d37b184..02bb5cb 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -6288,6 +6288,22 @@ qemudDomainMigratePrepare2 (virConnectPtr dconn,
             goto cleanup;
         }
 
+        /* Remember that we are running on the destination.  The hostname that
+         * we resolve here will be used on the source machine in the "migrate"
+         * monitor command.  Because of that, localhost is almost always the
+         * wrong thing.  Adding this check explicitly breaks localhost
+         * migration, but only for those machines that have improperly
+         * configured hostname resolution.
+         */
+        if (STREQ(hostname, "localhost")) {
+            VIR_FREE(hostname);
+            qemudReportError(dconn, NULL, NULL, VIR_ERR_INVALID_ARG, "%s",
+                             _("Could not resolve destination hostname; "
+                               "either fix destination to resolve hostname, "
+                               "or use the optional URI migration parameter"));
+            goto cleanup;
+        }
+
         /* XXX this really should have been a properly well-formed
          * URI, but we can't add in tcp:// now without breaking
          * compatability with old targets. We at least make the
-- 
1.6.0.6

--
Libvir-list mailing list
Libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list

Reply via email to