[Pkg-libvirt-commits] [SCM] Libvirt Debian packaging branch, experimental, updated. debian/0.9.2-4-2-gedaf33a

Guido Günther agx at sigxcpu.org
Thu Jun 30 17:34:30 UTC 2011


The following commit has been merged in the experimental branch:
commit 368375afda74e5512ca268c5643d7e8281817e5c
Author: Guido Günther <agx at sigxcpu.org>
Date:   Wed Jun 8 15:03:33 2011 +0200

    Update netcat detectionto new code

diff --git a/debian/patches/Autodetect-if-the-remote-nc-command-supports-the-q-o.patch b/debian/patches/Autodetect-if-the-remote-nc-command-supports-the-q-o.patch
index 1d7effe..8e856e2 100644
--- a/debian/patches/Autodetect-if-the-remote-nc-command-supports-the-q-o.patch
+++ b/debian/patches/Autodetect-if-the-remote-nc-command-supports-the-q-o.patch
@@ -12,72 +12,52 @@ Ubuntu-Bug: https://bugs.launchpad.net/ubuntu/+source/virt-manager/+bug/605172
 Bug: https://bugzilla.redhat.com/show_bug.cgi?id=562176
 Bug: https://bugzilla.redhat.com/show_bug.cgi?id=614420
 ---
- src/remote/remote_driver.c |   47 +++++++++++++++++++++++++++++++++++++------
- 1 files changed, 40 insertions(+), 7 deletions(-)
+ src/remote/remote_driver.c |   35 +++++++++++++++++++++++++++++------
+ 1 files changed, 29 insertions(+), 6 deletions(-)
 
 diff --git a/src/remote/remote_driver.c b/src/remote/remote_driver.c
-index e30780c..e5a2f15 100644
+index 8335a1a..b85707b 100644
 --- a/src/remote/remote_driver.c
 +++ b/src/remote/remote_driver.c
-@@ -746,7 +746,8 @@ doRemoteOpen (virConnectPtr conn,
-     }
+@@ -774,12 +774,36 @@ doRemoteOpen (virConnectPtr conn,
+             virCommandAddArgList(cmd, "-T", "-o", "BatchMode=yes", "-e",
+                                  "none", NULL);
+         }
+-        virCommandAddArgList(cmd, priv->hostname, netcat ? netcat : "nc",
+-                             "-U", (sockname ? sockname :
+-                                    (flags & VIR_CONNECT_RO
+-                                     ? LIBVIRTD_PRIV_UNIX_SOCKET_RO
+-                                     : LIBVIRTD_PRIV_UNIX_SOCKET)), NULL);
  
-     case trans_ssh: {
--        int j, nr_args = 6;
-+        int j, nr_args = 5;
-+        virBuffer cmd_netcat = VIR_BUFFER_INITIALIZER;
++        virCommandAddArgList(cmd, priv->hostname, "sh -c", NULL);
++        /*
++         * This ugly thing is a shell script to detect availability of
++         * the -q option for 'nc': debian and suse based distros need this
++         * flag to ensure the remote nc will exit on EOF, so it will go away
++         * when we close the VNC tunnel. If it doesn't go away, subsequent
++         * VNC connection attempts will hang.
++         *
++         * Fedora's 'nc' doesn't have this option, and apparently defaults
++         * to the desired behavior.
++         */
++        virCommandAddArgFormat(cmd, "'%s -q 2>&1 | grep -q \"requires an argument\";"
++                               "if [ $? -eq 0 ] ; then"
++                               "   CMD=\"%s -q 0 -U %s\";"
++                               "else"
++                               "   CMD=\"%s -U %s\";"
++                               "fi;"
++                               "eval \"$CMD\";'",
++                               netcat ? netcat : "nc",
++                               netcat ? netcat : "nc",
++                               sockname ? sockname :
++                                (flags & VIR_CONNECT_RO
++                                 ? LIBVIRTD_PRIV_UNIX_SOCKET_RO
++                                 : LIBVIRTD_PRIV_UNIX_SOCKET),
++                               netcat ? netcat : "nc",
++                               sockname ? sockname :
++                                (flags & VIR_CONNECT_RO
++                                 ? LIBVIRTD_PRIV_UNIX_SOCKET_RO
++                                 : LIBVIRTD_PRIV_UNIX_SOCKET));
+         priv->is_secure = 1;
+     }
  
-         if (username) nr_args += 2; /* For -l username */
-         if (no_tty) nr_args += 5;   /* For -T -o BatchMode=yes -e none */
-@@ -779,12 +780,44 @@ doRemoteOpen (virConnectPtr conn,
-             cmd_argv[j++] = strdup ("none");
-         }
-         cmd_argv[j++] = strdup (priv->hostname);
--        cmd_argv[j++] = strdup (netcat ? netcat : "nc");
--        cmd_argv[j++] = strdup ("-U");
--        cmd_argv[j++] = strdup (sockname ? sockname :
--                                (flags & VIR_CONNECT_RO
--                                 ? LIBVIRTD_PRIV_UNIX_SOCKET_RO
--                                 : LIBVIRTD_PRIV_UNIX_SOCKET));
-+        cmd_argv[j++] = strdup ("sh -c");
-+
-+	/*
-+	 * This ugly thing is a shell script to detect availability of
-+	 * the -q option for 'nc': debian and suse based distros need this
-+	 * flag to ensure the remote nc will exit on EOF, so it will go away
-+	 * when we close the VNC tunnel. If it doesn't go away, subsequent
-+	 * VNC connection attempts will hang.
-+	 *
-+	 * Fedora's 'nc' doesn't have this option, and apparently defaults
-+	 * to the desired behavior.
-+	 */
-+
-+        virBufferVSprintf(&cmd_netcat, "'%s -q 2>&1 | grep -q \"requires an argument\";"
-+                                       "if [ $? -eq 0 ] ; then"
-+                                       "   CMD=\"%s -q 0 -U %s\";"
-+                                       "else"
-+                                       "   CMD=\"%s -U %s\";"
-+                                       "fi;"
-+                                       "eval \"$CMD\";'",
-+                                       netcat ? netcat : "nc",
-+                                       netcat ? netcat : "nc",
-+                                       sockname ? sockname :
-+                                        (flags & VIR_CONNECT_RO
-+                                         ? LIBVIRTD_PRIV_UNIX_SOCKET_RO
-+                                         : LIBVIRTD_PRIV_UNIX_SOCKET),
-+                                       netcat ? netcat : "nc",
-+                                       sockname ? sockname :
-+                                        (flags & VIR_CONNECT_RO
-+                                         ? LIBVIRTD_PRIV_UNIX_SOCKET_RO
-+                                         : LIBVIRTD_PRIV_UNIX_SOCKET));
-+
-+        if (virBufferError(&cmd_netcat)) {
-+            virBufferFreeAndReset(&cmd_netcat);
-+            goto out_of_memory;
-+        }
-+
-+        cmd_argv[j++] = virBufferContentAndReset(&cmd_netcat);
-         cmd_argv[j++] = 0;
-         assert (j == nr_args);
-         for (j = 0; j < (nr_args-1); j++)
--- 

-- 
Libvirt Debian packaging



More information about the Pkg-libvirt-commits mailing list