From a8084e46134879e280a724f764d12be10743d745 Mon Sep 17 00:00:00 2001
From: cgeek <cem.moreau@gmail.com>
Date: Sat, 26 Mar 2016 14:57:46 +0100
Subject: [PATCH] Fix #373 UI won't start if network configuration has changed

---
 app/controllers/webmin.controller.js | 12 ++++++++++--
 app/lib/network.js                   |  3 +--
 app/lib/streams/dtos.js              |  3 ++-
 bin/ucoind                           |  2 +-
 package.json                         |  2 +-
 5 files changed, 15 insertions(+), 7 deletions(-)

diff --git a/app/controllers/webmin.controller.js b/app/controllers/webmin.controller.js
index 5c846f03f..df687eaac 100644
--- a/app/controllers/webmin.controller.js
+++ b/app/controllers/webmin.controller.js
@@ -65,10 +65,12 @@ function WebAdmin (dbConf, overConf) {
     yield pluggedDALP;
     let host = server.conf ? [server.conf.ipv4, server.conf.port].join(':') : '';
     let current = yield server.dal.getCurrentBlockOrNull();
+    let parameters = yield server.dal.getParameters();
     return {
       "host": host,
       "current": current,
-      "pubkey": base58.encode(server.pair.publicKey)
+      "pubkey": base58.encode(server.pair.publicKey),
+      "parameters": parameters
     };
   });
 
@@ -82,7 +84,13 @@ function WebAdmin (dbConf, overConf) {
 
   this.startHTTP = () => co(function *() {
     yield pluggedDALP;
-    return bmapi.openConnections();
+    try {
+      yield bmapi.openConnections();
+      return { success: true };
+    } catch (e) {
+      logger.error(e);
+      return { success: false };
+    }
   });
 
   this.openUPnP = () => co(function *() {
diff --git a/app/lib/network.js b/app/lib/network.js
index 30d7ea2f5..4c2b09521 100644
--- a/app/lib/network.js
+++ b/app/lib/network.js
@@ -170,8 +170,6 @@ module.exports = {
           let httpServer = httpServers[i].http;
           let isListening = listenings[i];
           if (!isListening) {
-            listenings[i] = true;
-
             let netInterface = interfaces[i].ip;
             let port = interfaces[i].port;
             try {
@@ -183,6 +181,7 @@ module.exports = {
                 //httpServer.on('listening', resolve.bind(this, httpServer));
                 httpServer.listen(port, netInterface, (err) => {
                   if (err) return reject(err);
+                  listenings[i] = true;
                   resolve(httpServer);
                 });
               });
diff --git a/app/lib/streams/dtos.js b/app/lib/streams/dtos.js
index 0cd613a61..dde15c851 100644
--- a/app/lib/streams/dtos.js
+++ b/app/lib/streams/dtos.js
@@ -410,7 +410,8 @@ dtos.Boolean = {
 dtos.AdminSummary = {
   "host": String,
   "current": dtos.Block,
-  "pubkey": String
+  "pubkey": String,
+  "parameters": dtos.Parameters
 };
 
 dtos.PreviewPubkey = {
diff --git a/bin/ucoind b/bin/ucoind
index 54ce04a57..6c48dd0d8 100755
--- a/bin/ucoind
+++ b/bin/ucoind
@@ -5,7 +5,7 @@ var logger = require('../app/lib/logger')('ucoind');
 
 process.on('uncaughtException', function (err) {
   // Dunno why this specific exception is not caught
-  if (err.code !== "EADDRNOTAVAIL") {
+  if (err.code !== "EADDRNOTAVAIL" && err.code !== "EINVAL") {
     logger.error(err);
     process.exit(1);
   }
diff --git a/package.json b/package.json
index e6c6d9cf1..67f3262fb 100644
--- a/package.json
+++ b/package.json
@@ -16,7 +16,7 @@
     "test": "mocha --growl --timeout 20000 test test/fast test/fast/block test/integration test/",
     "start": "node bin/ucoind start",
     "test-travis": "node ./node_modules/istanbul/lib/cli.js cover ./node_modules/mocha/bin/_mocha --report lcovonly -- -R spec --timeout 20000 test test/fast test/fast/block test/integration test/",
-    "postinstall": "mkdir ui -p && cd ui && npm pack ucoin-ui@0.1.12 && tar xzf ucoin-ui-0.1.12.tgz && cd package && npm install && cd .. && rm ucoin-ui-0.1.12.tgz"
+    "postinstall": "mkdir ui -p && cd ui && npm pack ucoin-ui@0.1.13 && tar xzf ucoin-ui-0.1.13.tgz && cd package && npm install && cd .. && rm ucoin-ui-0.1.13.tgz"
   },
   "repository": {
     "type": "git",
-- 
GitLab