@@ -66,7 +66,9 @@ func NewRegistry(
6666 pubSub messaging.PubSub ,
6767 identityStore identity.Store ,
6868) * registry {
69- ecdhSession := NewECDHSession (nodeID , peerNodeIDs , pubSub , identityStore )
69+ // ECDH session should only exchange keys with other peers, not self
70+ peerIDsExceptSelf := getPeerIDsExceptSelf (nodeID , peerNodeIDs )
71+ ecdhSession := NewECDHSession (nodeID , peerIDsExceptSelf , pubSub , identityStore )
7072 mpcThreshold := viper .GetInt ("mpc_threshold" )
7173 if mpcThreshold < 1 {
7274 logger .Fatal ("mpc_threshold must be greater than 0" , nil )
@@ -75,7 +77,7 @@ func NewRegistry(
7577 reg := & registry {
7678 consulKV : consulKV ,
7779 nodeID : nodeID ,
78- peerNodeIDs : getPeerIDsExceptSelf ( nodeID , peerNodeIDs ) ,
80+ peerNodeIDs : peerIDsExceptSelf ,
7981 readyMap : make (map [string ]bool ),
8082 readyCount : 1 , // self
8183 healthCheck : directMessaging ,
@@ -185,12 +187,15 @@ func (r *registry) Ready() error {
185187 }
186188
187189 _ , err = r .healthCheck .Listen (r .composeHealthCheckTopic (r .nodeID ), func (data []byte ) {
188- peerID , isEcdhReady , _ := parseHealthDataSplit (string (data ))
190+ peerID , isEcdhReady , parseErr := parseHealthDataSplit (string (data ))
191+ if parseErr != nil {
192+ logger .Error ("Failed to parse health check data" , parseErr , "data" , string (data ))
193+ return
194+ }
189195 logger .Debug ("Health check ok" , "peerID" , peerID , "isEcdhReady" , isEcdhReady )
190196 if ! isEcdhReady {
191197 logger .Info ("[ECDH exchange retriggerd] not all peers are ready" , "peerID" , peerID )
192198 go r .triggerECDHExchange ()
193-
194199 }
195200 })
196201 if err != nil {
0 commit comments