Remove PTY-level keepalive (#449)
* Add termix.rb Cask file * Update Termix to version 1.9.0 with new checksum * Update README to remove 'coming soon' notes * Remove PTY-level keepalive to prevent unwanted terminal output; use SSH-level keepalive instead --------- Co-authored-by: Luke Gustafson <88517757+LukeGus@users.noreply.github.com>
This commit was merged in pull request #449.
This commit is contained in:
@@ -316,7 +316,6 @@ wss.on("connection", async (ws: WebSocket, req) => {
|
|||||||
|
|
||||||
let sshConn: Client | null = null;
|
let sshConn: Client | null = null;
|
||||||
let sshStream: ClientChannel | null = null;
|
let sshStream: ClientChannel | null = null;
|
||||||
let pingInterval: NodeJS.Timeout | null = null;
|
|
||||||
let keyboardInteractiveFinish: ((responses: string[]) => void) | null = null;
|
let keyboardInteractiveFinish: ((responses: string[]) => void) | null = null;
|
||||||
let totpPromptSent = false;
|
let totpPromptSent = false;
|
||||||
let isKeyboardInteractive = false;
|
let isKeyboardInteractive = false;
|
||||||
@@ -802,8 +801,6 @@ wss.on("connection", async (ws: WebSocket, req) => {
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
setupPingInterval();
|
|
||||||
|
|
||||||
if (initialPath && initialPath.trim() !== "") {
|
if (initialPath && initialPath.trim() !== "") {
|
||||||
const cdCommand = `cd "${initialPath.replace(/"/g, '\\"')}" && pwd\n`;
|
const cdCommand = `cd "${initialPath.replace(/"/g, '\\"')}" && pwd\n`;
|
||||||
stream.write(cdCommand);
|
stream.write(cdCommand);
|
||||||
@@ -1279,11 +1276,6 @@ wss.on("connection", async (ws: WebSocket, req) => {
|
|||||||
clearTimeout(timeoutId);
|
clearTimeout(timeoutId);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pingInterval) {
|
|
||||||
clearInterval(pingInterval);
|
|
||||||
pingInterval = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (sshStream) {
|
if (sshStream) {
|
||||||
try {
|
try {
|
||||||
sshStream.end();
|
sshStream.end();
|
||||||
@@ -1320,24 +1312,12 @@ wss.on("connection", async (ws: WebSocket, req) => {
|
|||||||
}, 100);
|
}, 100);
|
||||||
}
|
}
|
||||||
|
|
||||||
function setupPingInterval() {
|
// Note: PTY-level keepalive (writing \x00 to the stream) was removed.
|
||||||
pingInterval = setInterval(() => {
|
// It was causing ^@ characters to appear in terminals with echoctl enabled.
|
||||||
if (sshConn && sshStream) {
|
// SSH-level keepalive is configured via connectConfig (keepaliveInterval,
|
||||||
try {
|
// keepaliveCountMax, tcpKeepAlive), which handles connection health monitoring
|
||||||
sshStream.write("\x00");
|
// without producing visible output on the terminal.
|
||||||
} catch (e: unknown) {
|
//
|
||||||
sshLogger.error(
|
// See: https://github.com/Termix-SSH/Support/issues/232
|
||||||
"SSH keepalive failed: " +
|
// See: https://github.com/Termix-SSH/Support/issues/309
|
||||||
(e instanceof Error ? e.message : "Unknown error"),
|
|
||||||
);
|
|
||||||
cleanupSSH();
|
|
||||||
}
|
|
||||||
} else if (!sshConn || !sshStream) {
|
|
||||||
if (pingInterval) {
|
|
||||||
clearInterval(pingInterval);
|
|
||||||
pingInterval = null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}, 30000);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user