@@ -136,8 +136,6 @@ type GossipStateProviderImpl struct {
136
136
137
137
commChan <- chan proto.ReceivedMessage
138
138
139
- pvtDataChan <- chan proto.ReceivedMessage
140
-
141
139
// Queue of payloads which wasn't acquired yet
142
140
payloads PayloadsBuffer
143
141
@@ -177,13 +175,13 @@ func NewGossipStateProvider(chainID string, services *ServicesMediator, ledger l
177
175
remoteStateMsgFilter := func (message interface {}) bool {
178
176
receivedMsg := message .(proto.ReceivedMessage )
179
177
msg := receivedMsg .GetGossipMessage ()
180
- if ! msg .IsRemoteStateMessage () {
178
+ if ! ( msg .IsRemoteStateMessage () || msg . GetPrivateData () != nil ) {
181
179
return false
182
180
}
183
181
connInfo := receivedMsg .GetConnectionInfo ()
184
182
authErr := services .VerifyByChannel (msg .Channel , connInfo .Identity , connInfo .Auth .Signature , connInfo .Auth .SignedData )
185
183
if authErr != nil {
186
- logger .Warning ("Got unauthorized nodeMetastate transfer request from" , string (connInfo .Identity ))
184
+ logger .Warning ("Got unauthorized request from" , string (connInfo .Identity ))
187
185
return false
188
186
}
189
187
return true
@@ -192,23 +190,6 @@ func NewGossipStateProvider(chainID string, services *ServicesMediator, ledger l
192
190
// Filter message which are only relevant for nodeMetastate transfer
193
191
_ , commChan := services .Accept (remoteStateMsgFilter , true )
194
192
195
- // Filter private data messages
196
- _ , pvtDataChan := services .Accept (func (message interface {}) bool {
197
- receivedMsg := message .(proto.ReceivedMessage )
198
- msg := receivedMsg .GetGossipMessage ()
199
- if msg .GetPrivateData () == nil {
200
- return false
201
- }
202
- connInfo := receivedMsg .GetConnectionInfo ()
203
- authErr := services .VerifyByChannel (msg .Channel , connInfo .Identity , connInfo .Auth .Signature , connInfo .Auth .SignedData )
204
- if authErr != nil {
205
- logger .Warning ("Got unauthorized private data message from" , string (connInfo .Identity ))
206
- return false
207
- }
208
- return true
209
-
210
- }, true )
211
-
212
193
height , err := ledger .LedgerHeight ()
213
194
if height == 0 {
214
195
// Panic here since this is an indication of invalid situation which should not happen in normal
@@ -236,9 +217,6 @@ func NewGossipStateProvider(chainID string, services *ServicesMediator, ledger l
236
217
// Channel to read direct messages from other peers
237
218
commChan : commChan ,
238
219
239
- // Channel for private data messages
240
- pvtDataChan : pvtDataChan ,
241
-
242
220
// Create a queue for payload received
243
221
payloads : NewPayloadsBuffer (height ),
244
222
@@ -291,18 +269,28 @@ func (s *GossipStateProviderImpl) listen() {
291
269
logger .Debug ("Received new message via gossip channel" )
292
270
go s .queueNewMessage (msg )
293
271
case msg := <- s .commChan :
294
- logger .Debug ("Direct message " , msg )
295
- go s .directMessage (msg )
296
- case msg := <- s .pvtDataChan :
297
- logger .Debug ("Private data message " , msg )
298
- go s .privateDataMessage (msg )
272
+ logger .Debug ("Dispatching a message" , msg )
273
+ go s .dispatch (msg )
299
274
case <- s .stopCh :
300
275
s .stopCh <- struct {}{}
301
276
logger .Debug ("Stop listening for new messages" )
302
277
return
303
278
}
304
279
}
305
280
}
281
+ func (s * GossipStateProviderImpl ) dispatch (msg proto.ReceivedMessage ) {
282
+ // Check type of the message
283
+ if msg .GetGossipMessage ().IsRemoteStateMessage () {
284
+ logger .Debug ("Handling direct state transfer message" )
285
+ // Got state transfer request response
286
+ s .directMessage (msg )
287
+ } else if msg .GetGossipMessage ().GetPrivateData () != nil {
288
+ logger .Debug ("Handling private data collection message" )
289
+ // Handling private data replication message
290
+ s .privateDataMessage (msg )
291
+ }
292
+
293
+ }
306
294
func (s * GossipStateProviderImpl ) privateDataMessage (msg proto.ReceivedMessage ) {
307
295
if ! bytes .Equal (msg .GetGossipMessage ().Channel , []byte (s .chainID )) {
308
296
logger .Warning ("Received state transfer request for channel" ,
0 commit comments