exposed `.end` method on the wsclient

This commit is contained in:
tigerbot 2017-04-14 16:27:25 -06:00
parent 22d813e4e9
commit 1a65027fe0
2 changed files with 28 additions and 22 deletions

View File

@ -151,7 +151,7 @@ function connectTunnel() {
});
console.info('');
stunnel.connect({
var tun = stunnel.connect({
stunneld: program.stunneld
, locals: program.locals
, services: program.services
@ -159,6 +159,17 @@ function connectTunnel() {
, insecure: program.insecure
, token: program.token
});
function sigHandler() {
console.log('SIGINT');
// We want to handle cleanup properly unless something is broken in our cleanup process
// that prevents us from exitting, in which case we want the user to be able to send
// the signal again and exit the way it normally would.
process.removeListener('SIGINT', sigHandler);
tun.end();
}
process.on('SIGINT', sigHandler);
}
function rawTunnel() {

View File

@ -272,32 +272,27 @@ function run(copts) {
}
connect();
function sigHandler() {
console.log('SIGINT');
return {
end: function() {
retry = false;
if (timeoutId) {
clearTimeout(timeoutId);
timeoutId = null;
}
// We want to handle cleanup properly unless something is broken in our cleanup process
// that prevents us from exitting, in which case we want the user to be able to send
// the signal again and exit the way it normally would.
process.removeListener('SIGINT', sigHandler);
retry = false;
if (timeoutId) {
clearTimeout(timeoutId);
timeoutId = null;
}
if (wstunneler) {
try {
wstunneler.close();
} catch(e) {
console.error("[error] wstunneler.close()");
console.error(e);
if (wstunneler) {
try {
wstunneler.close();
} catch(e) {
console.error("[error] wstunneler.close()");
console.error(e);
}
}
}
}
process.on('SIGINT', sigHandler);
};
}
module.exports.connect = run;
module.exports.createConnection = run;
}());