You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by al...@apache.org on 2017/02/07 15:37:19 UTC

cordova-paramedic git commit: Retry creating LocalServer if port got taken during initialization

Repository: cordova-paramedic
Updated Branches:
  refs/heads/master 6bbae689d -> 1ed075d57


Retry creating LocalServer if port got taken during initialization


Project: http://git-wip-us.apache.org/repos/asf/cordova-paramedic/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-paramedic/commit/1ed075d5
Tree: http://git-wip-us.apache.org/repos/asf/cordova-paramedic/tree/1ed075d5
Diff: http://git-wip-us.apache.org/repos/asf/cordova-paramedic/diff/1ed075d5

Branch: refs/heads/master
Commit: 1ed075d57cbba1b4242e0f36c2c3e721d80b0039
Parents: 6bbae68
Author: Alexander Sorokin <al...@akvelon.com>
Authored: Tue Feb 7 18:35:31 2017 +0300
Committer: Alexander Sorokin <al...@akvelon.com>
Committed: Tue Feb 7 18:35:31 2017 +0300

----------------------------------------------------------------------
 lib/LocalServer.js | 29 +++++++++++++++++++++++------
 1 file changed, 23 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-paramedic/blob/1ed075d5/lib/LocalServer.js
----------------------------------------------------------------------
diff --git a/lib/LocalServer.js b/lib/LocalServer.js
index 0ea814c..79602d6 100644
--- a/lib/LocalServer.js
+++ b/lib/LocalServer.js
@@ -44,21 +44,38 @@ util.inherits(LocalServer, EventEmitter);
 
 LocalServer.startServer = function (ports, externalServerUrl, useTunnel) {
     logger.normal("local-server: scanning ports from " + ports.start + " to " + ports.end);
+    var startServerOnPort = function (port) {
+        var d = Q.defer();
 
-    return LocalServer.getFirstAvailablePort(ports.start, ports.end)
-        .then(function (port) {
-            logger.normal("local-server: port " + port + " is available");
-            logger.info("local-server: starting local medic server");
+        logger.normal("local-server: port " + port + " is available");
+        logger.info("local-server: starting local medic server");
 
+        try {
             var localServer = new LocalServer(port, externalServerUrl);
             localServer.createSocketListener();
 
             if (useTunnel) {
                 return localServer.createTunnel();
             }
+        } catch (e) {
+            d.reject();
+        }
 
-            return localServer;
-        });
+        d.resolve(localServer);
+
+        return d.promise;
+    };
+
+    return LocalServer.getFirstAvailablePort(ports.start, ports.end)
+    .then(startServerOnPort)
+    .fail(function () {
+        if (ports.end <= ports.start) {
+            throw new Error('LocalServer couldn\'t find a free port');
+        }
+        // sometimes the port gets busy real quick, let's retry
+        return LocalServer.getFirstAvailablePort(ports.start + 1, ports.end)
+        .then(startServerOnPort);
+    });
 };
 
 LocalServer.prototype.cleanUp = function () {


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org