From be4f7b5020075670b4ac8d6c4ba2951efbc5991d Mon Sep 17 00:00:00 2001
From: cgeek <cem.moreau@gmail.com>
Date: Mon, 21 Aug 2017 13:32:34 +0200
Subject: [PATCH] [fix] #1080 Broadcast only HEAD changes

---
 app/modules/bma/lib/bma.ts | 21 +++++++++++++++------
 1 file changed, 15 insertions(+), 6 deletions(-)

diff --git a/app/modules/bma/lib/bma.ts b/app/modules/bma/lib/bma.ts
index d3a2967c7..6569d3f60 100644
--- a/app/modules/bma/lib/bma.ts
+++ b/app/modules/bma/lib/bma.ts
@@ -10,6 +10,7 @@ import {TransactionBinding} from "./controllers/transactions"
 import {UDBinding} from "./controllers/uds"
 import {PeerDTO} from "../../../lib/dto/PeerDTO"
 import {BlockDTO} from "../../../lib/dto/BlockDTO"
+import {OtherConstants} from "../../../lib/other_constants"
 
 const co = require('co');
 const es = require('event-stream');
@@ -132,16 +133,24 @@ export const bma = function(server:Server, interfaces:NetworkInterface[], httpLo
     });
     wssPeer.broadcast = (data:any) => wssPeer.clients.forEach((client:any) => client.send(data));
 
-    // Forward blocks & peers
+    // Forward current HEAD change
     server
-      .pipe(es.mapSync(function(data:any) {
-        try {
-          // Broadcast block
-          if (data.joiners) {
-            currentBlock = data;
+      .on('bcEvent', (e) => {
+        if (e.bcEvent === OtherConstants.BC_EVENT.HEAD_CHANGED || e.bcEvent === OtherConstants.BC_EVENT.SWITCHED) {
+          try {
+            // Broadcast block
+            currentBlock = e.block;
             const blockDTO:BlockDTO = BlockDTO.fromJSONObject(currentBlock)
             wssBlock.broadcast(JSON.stringify(block2HttpBlock(blockDTO)))
+          } catch (e) {
+            logger && logger.error('error on ws mapSync:', e);
           }
+        }
+      })
+    // Forward peers documents
+    server
+      .pipe(es.mapSync(function(data:any) {
+        try {
           // Broadcast peer
           if (data.endpoints) {
             const peerDTO = PeerDTO.fromJSONObject(data)
-- 
GitLab