diff --git a/src/js/remote.js b/src/js/remote.js index af5046cb..992560ee 100644 --- a/src/js/remote.js +++ b/src/js/remote.js @@ -196,6 +196,7 @@ var Remote = function (opts, trace) { this.local_fee = opts.local_fee; // Locally set fees this.id = 0; this.trace = opts.trace || trace; + this._server_fatal = false; // True, if we know server exited. this._ledger_current_index = undefined; this._ledger_hash = undefined; this._ledger_time = undefined; @@ -289,6 +290,11 @@ Remote.fees = { 'offer' : Amount.from_json("10"), }; +// Inform remote that the remote server is not comming back. +Remote.prototype.server_fatal = function () { + this._server_fatal = true; +}; + // Set the emitted state: 'online' or 'offline' Remote.prototype._set_state = function (state) { if (this.trace) console.log("remote: set_state: %s", state); @@ -378,7 +384,12 @@ Remote.prototype._connect_retry = function () { this.retry_timer = setTimeout(function () { if (self.trace) console.log("remote: retry"); - if (self.online_target) { + if (self._server_fatal) { + // Stop trying to connect. + // nothing(); + console.log("FATAL"); + } + else if (self.online_target) { self._connect_start(); } else { diff --git a/test/testutils.js b/test/testutils.js index 55e87a38..399a6f51 100644 --- a/test/testutils.js +++ b/test/testutils.js @@ -90,10 +90,22 @@ var build_setup = function (opts, host) { function runServerStep(callback) { if (opts.no_server) return callback(); - data.server = Server.from_config(host, !!opts.verbose_server).on('started', callback).start(); + data.server = Server + .from_config(host, !!opts.verbose_server) + .on('started', callback) + .on('exited', function () { + // If know the remote, tell it server is gone. + if (self.remote) + self.remote.server_fatal(); + }) + .start(); }, function connectWebsocketStep(callback) { - self.remote = data.remote = Remote.from_config(host, !!opts.verbose_ws).once('ledger_closed', callback).connect(); + self.remote = data.remote = + Remote + .from_config(host, !!opts.verbose_ws) + .once('ledger_closed', callback) + .connect(); } ], done); };