From 705ce1e7371fb1cd07115a3bfcd90fdfa9299239 Mon Sep 17 00:00:00 2001 From: Kelsey Date: Wed, 25 Nov 2015 18:38:57 -0800 Subject: [PATCH] fixes https://github.com/tessel/t2-cli/issues/395 --- lib/tessel/wifi.js | 63 +++++++++++++++++++++++++++++----------------- 1 file changed, 40 insertions(+), 23 deletions(-) diff --git a/lib/tessel/wifi.js b/lib/tessel/wifi.js index c2e6fca1..c8208155 100644 --- a/lib/tessel/wifi.js +++ b/lib/tessel/wifi.js @@ -104,31 +104,48 @@ Tessel.prototype.connectToNetwork = function(opts) { // Once the credentials have been comitted remoteProcess.once('close', function() { // Restart the wifi - return self.connection.exec(commands.reconnectWifi()) - .then(function(remoteProcess) { + return self.simpleExec(commands.reconnectWifi()) + .then(function() { // Once the wifi restart process closes - return self.receive(remoteProcess).then(function() { - logs.info('Credentials set. Checking connection...'); - self.connection.exec(commands.ubusListen()) - .then(function(remoteProcess) { - self.receive(remoteProcess).then(function(data) { - if (data.indexOf('ifup') > -1) { - logs.info('Successfully connected!'); - return resolve(); - } - }) - .catch(function(error) { - logs.err('Error connecting:', error); - return resolve(); - }); - setTimeout(function() { - logs.info('Timed out waiting to verify connection. Run `t2 wifi` to manually verify connection. If not connected, ensure you have entered the correct network credentials.'); - // End the connection - return self.connection.end() - .then(resolve); - }, 10000); + logs.info('Credentials set. Checking connection...'); + self.connection.exec(commands.ubusListen()) + .then(function(remoteProcess) { + var result = {}; + var timeout = setTimeout(function() { + result = { + type: 'reject', + message: 'Timed out waiting to verify connection. Run `t2 wifi` to manually verify connection. If not connected, ensure you have entered the correct network credentials.' + }; + // End the connection + remoteProcess.close(); + }, 10000); + remoteProcess.stdout.on('data', function(data) { + if (data.indexOf('ifup') > -1) { + logs.info('Successfully connected!'); + clearTimeout(timeout); + result = { + type: 'resolve', + message: '' // resolve doesn't report messages + }; + remoteProcess.close(); + } }); - }); + remoteProcess.stderr.on('data', function(error) { + clearTimeout(timeout); + result = { + type: 'reject', + message: error + }; + remoteProcess.close(); + }); + remoteProcess.on('close', function() { + if (result.type === 'reject') { + reject(result.message); + } else { + resolve(); + } + }); + }); }); }); });