diff --git a/client/app/src/services/network.service.js b/client/app/src/services/network.service.js index 63d47bf0f2..bc2d401312 100644 --- a/client/app/src/services/network.service.js +++ b/client/app/src/services/network.service.js @@ -268,10 +268,17 @@ if (!network.forcepeer) { getFromPeer("/api/peers").then(function(response) { if (response.success) { - storageService.set("peers", response.peers.filter(function(peer) { - return peer.status == "OK"; - })); - findGoodPeer(response.peers, 0); + getFromPeer('/api/peers/version').then(function(versionResponse) { + if (versionResponse.success) { + let peers = response.peers.filter(function(peer) { + return peer.status == "OK" && peer.version === versionResponse.version; + }); + storageService.set("peers", peers); + findGoodPeer(peers, 0); + } else { + findGoodPeer(storageService.get("peers"), 0); + } + }); } else { findGoodPeer(storageService.get("peers"), 0); } @@ -286,6 +293,11 @@ //peer.ip=network.peerseed; return; } + if (index === 0) { + peers = peers.sort(function(a, b) { + return b.height - a.height || a.delay - b.delay; + }); + } peer.ip = "http://" + peers[index].ip + ":" + peers[index].port; getFromPeer("/api/blocks/getheight").then(function(response) { if (response.success && response.height < peer.height) {