Skip to content
Snippets Groups Projects
Commit 82a8a0e1 authored by Cédric Moreau's avatar Cédric Moreau
Browse files

Also add peers during a synchronization (otherwise the node thinks it is alone)

parent d089ef47
No related branches found
No related tags found
No related merge requests found
...@@ -191,8 +191,46 @@ function Synchroniser (server, host, port, conf, interactive) { ...@@ -191,8 +191,46 @@ function Synchroniser (server, host, port, conf, interactive) {
// Save currency parameters given by root block // Save currency parameters given by root block
const rootBlock = yield server.dal.getBlock(0); const rootBlock = yield server.dal.getBlock(0);
yield BlockchainService.saveParametersForRootBlock(rootBlock); yield BlockchainService.saveParametersForRootBlock(rootBlock);
server.dal.blockDAL.cleanCache(); server.dal.blockDAL.cleanCache();//=======
// Peers
//=======
if (!nopeers) {
watcher.writeStatus('Peers...');
yield syncPeer(node);
const merkle = yield dal.merkleForPeers();
const getPeers = Q.nbind(node.network.peering.peers.get, node);
const json2 = yield getPeers({});
const rm = new NodesMerkle(json2);
if(rm.root() != merkle.root()){
const leavesToAdd = [];
const json = yield getPeers({ leaves: true });
_(json.leaves).forEach((leaf) => {
if(merkle.leaves().indexOf(leaf) == -1){
leavesToAdd.push(leaf);
}
});
for (const leaf of leavesToAdd) {
const json3 = yield getPeers({ "leaf": leaf });
const jsonEntry = json3.leaf.value;
const sign = json3.leaf.value.signature;
const entry = {};
["version", "currency", "pubkey", "endpoints", "block"].forEach((key) => {
entry[key] = jsonEntry[key];
});
entry.signature = sign;
watcher.writeStatus('Peer ' + entry.pubkey);
logger.info('Peer ' + entry.pubkey);
yield PeeringService.submitP(entry, false, to === undefined);
}
}
else {
watcher.writeStatus('Peers already known');
}
}
watcher.end();
that.push({ sync: true }); that.push({ sync: true });
logger.info('Sync finished.');
} catch (err) { } catch (err) {
that.push({ sync: false, msg: err }); that.push({ sync: false, msg: err });
err && watcher.writeStatus(err.message || String(err)); err && watcher.writeStatus(err.message || String(err));
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment