summaryrefslogtreecommitdiffstats
path: root/fish/fish.c
diff options
context:
space:
mode:
authorRichard Jones <rjones@redhat.com>2010-07-07 15:01:38 +0100
committerRichard Jones <rjones@redhat.com>2010-07-07 15:03:51 +0100
commit8161ea9bb046c8450384b5b15e1f4b2f3dca582b (patch)
tree9a0e00f6d87443be7d76e2297bbbc0985b37850f /fish/fish.c
parentcf9e01508d48b752a29df4fceb95ed5306651fe2 (diff)
downloadlibguestfs-8161ea9bb046c8450384b5b15e1f4b2f3dca582b.tar.gz
libguestfs-8161ea9bb046c8450384b5b15e1f4b2f3dca582b.tar.xz
libguestfs-8161ea9bb046c8450384b5b15e1f4b2f3dca582b.zip
fish: Don't fail if -m and --listen flags are both given (RHBZ#612178).
Testing this against a Fedora disk image: $ ./fish/guestfish --ro -a F13.img -m /dev/sda1 --listen export GUESTFISH_PID=6033 $ ./fish/guestfish --remote=6033 -- ping-daemon $ ./fish/guestfish --remote=6033 -- ping-daemon $ ./fish/guestfish --remote=6033 -- exit Without this fix the first remote command would fail because qemu would have already been killed.
Diffstat (limited to 'fish/fish.c')
-rw-r--r--fish/fish.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/fish/fish.c b/fish/fish.c
index 470c6251..4276ae19 100644
--- a/fish/fish.c
+++ b/fish/fish.c
@@ -476,6 +476,17 @@ main (int argc, char *argv[])
* guest and mount them.
*/
if (next_prepared_drive > 1 || mps != NULL) {
+ /* RHBZ#612178: If --listen flag is given, then we will fork into
+ * the background in rc_listen(). However you can't do this while
+ * holding a libguestfs handle open because the recovery process
+ * will think the main program has died and kill qemu. Therefore
+ * don't use the recovery process for this case. (A better
+ * solution would be to call launch () etc after the fork, but
+ * that greatly complicates the code here).
+ */
+ if (remote_control_listen)
+ guestfs_set_recovery_proc (g, 0);
+
if (launch () == -1) exit (EXIT_FAILURE);
prepare_drives (drvs);
mount_mps (mps);