#endif /*QEMU_XEN_H*/
diff --git a/switcher.c b/switcher.c
new file mode 100644
-index 0000000..bca96f0
+index 0000000..3cb96cf
--- /dev/null
+++ b/switcher.c
-@@ -0,0 +1,267 @@
+@@ -0,0 +1,268 @@
+/*
+ * QEMU dom0_driver
+ *
+ if ((read_sz = recv(switcher_socket, buff + left_over, 128, 0)) <= 0)
+ {
+ switcher_connected = 0;
++ qemu_set_fd_handler(switcher_socket, NULL, NULL, NULL);
+ return;
+ }
+ read_sz += left_over;
+ switcher_connect(NULL);
+}
diff --git a/vl.c b/vl.c
-index a4b8bd8..6350384 100644
+index 93e401c..e5c0447 100644
--- a/vl.c
+++ b/vl.c
@@ -234,6 +234,7 @@ CharDriverState *virtcon_hds[MAX_VIRTIO_CONSOLES];
#if defined(CONFIG_XEN) && !defined(CONFIG_DM)
{ "xen-domid", HAS_ARG, QEMU_OPTION_xen_domid },
{ "xen-create", 0, QEMU_OPTION_xen_create },
-@@ -5298,6 +5315,9 @@ int main(int argc, char **argv, char **envp)
+@@ -5299,6 +5316,9 @@ int main(int argc, char **argv, char **envp)
cirrus_vga_enabled = 0;
vmsvga_enabled = 0;
break;
case QEMU_OPTION_direct_pci:
direct_pci = optarg;
break;
-@@ -6066,6 +6086,9 @@ int main(int argc, char **argv, char **envp)
+@@ -6067,6 +6087,9 @@ int main(int argc, char **argv, char **envp)
close(fd);
}