mirror of
https://gitlab.uni-freiburg.de/opensourcevdi/virt-viewer
synced 2026-01-01 04:45:30 +00:00
Use socat instead of nc if possible
It turns out that nc does not leave on server disconnect, and there doesn't seem to be any option to do that, leaving client open, and a bunch of idle processes. Replacing nc with socat solves that, client is disconnected when the VM is shut down, when the sever connection is closed. https://bugzilla.redhat.com/show_bug.cgi?id=1030487
This commit is contained in:
parent
9886055a4a
commit
3eaecbb3a4
@ -626,6 +626,7 @@ virt_viewer_app_open_tunnel_ssh(const char *sshhost,
|
||||
const char *cmd[10];
|
||||
char portstr[50];
|
||||
int n = 0;
|
||||
GString *cat;
|
||||
|
||||
cmd[n++] = "ssh";
|
||||
if (sshport) {
|
||||
@ -638,17 +639,30 @@ virt_viewer_app_open_tunnel_ssh(const char *sshhost,
|
||||
cmd[n++] = sshuser;
|
||||
}
|
||||
cmd[n++] = sshhost;
|
||||
cmd[n++] = "nc";
|
||||
if (port) {
|
||||
cmd[n++] = host;
|
||||
cmd[n++] = port;
|
||||
} else {
|
||||
cmd[n++] = "-U";
|
||||
cmd[n++] = unixsock;
|
||||
}
|
||||
|
||||
cat = g_string_new("if (command -v socat) >/dev/null 2>&1");
|
||||
|
||||
g_string_append(cat, "; then socat - ");
|
||||
if (port)
|
||||
g_string_append_printf(cat, "TCP:%s:%s", host, port);
|
||||
else
|
||||
g_string_append_printf(cat, "UNIX-CONNECT:%s", unixsock);
|
||||
|
||||
g_string_append(cat, "; else nc ");
|
||||
if (port)
|
||||
g_string_append_printf(cat, "%s %s", host, port);
|
||||
else
|
||||
g_string_append_printf(cat, "-U %s", unixsock);
|
||||
|
||||
g_string_append(cat, "; fi");
|
||||
|
||||
cmd[n++] = cat->str;
|
||||
cmd[n++] = NULL;
|
||||
|
||||
return virt_viewer_app_open_tunnel(cmd);
|
||||
n = virt_viewer_app_open_tunnel(cmd);
|
||||
g_string_free(cat, TRUE);
|
||||
|
||||
return n;
|
||||
}
|
||||
|
||||
static int
|
||||
|
||||
Loading…
Reference in New Issue
Block a user