@@ -18,6 +18,7 @@ package discovery
18
18
19
19
import (
20
20
"bytes"
21
+ "errors"
21
22
"fmt"
22
23
"math"
23
24
"strconv"
@@ -172,7 +173,12 @@ func (d *gossipDiscoveryImpl) Connect(member NetworkMember, id identifier) {
172
173
Endpoint : member .Endpoint ,
173
174
PKIid : id .ID ,
174
175
}
175
- req , err := d .createMembershipRequest (id .SelfOrg ).NoopSign ()
176
+ m , err := d .createMembershipRequest (id .SelfOrg )
177
+ if err != nil {
178
+ d .logger .Warning ("Failed creating membership request:" , err )
179
+ continue
180
+ }
181
+ req , err := m .NoopSign ()
176
182
if err != nil {
177
183
d .logger .Warning ("Failed creating SignedGossipMessage:" , err )
178
184
continue
@@ -234,7 +240,12 @@ func (d *gossipDiscoveryImpl) InitiateSync(peerNum int) {
234
240
return
235
241
}
236
242
var peers2SendTo []* NetworkMember
237
- memReq , err := d .createMembershipRequest (true ).NoopSign ()
243
+ m , err := d .createMembershipRequest (true )
244
+ if err != nil {
245
+ d .logger .Warning ("Failed creating membership request:" , err )
246
+ return
247
+ }
248
+ memReq , err := m .NoopSign ()
238
249
if err != nil {
239
250
d .logger .Warning ("Failed creating SignedGossipMessage:" , err )
240
251
return
@@ -409,8 +420,9 @@ func (d *gossipDiscoveryImpl) sendMemResponse(targetMember *proto.Member, intern
409
420
InternalEndpoint : internalEndpoint ,
410
421
}
411
422
412
- aliveMsg := d .createAliveMessage (true )
413
- if aliveMsg == nil {
423
+ aliveMsg , err := d .createAliveMessage (true )
424
+ if err != nil {
425
+ d .logger .Warning ("Failed creating alive message:" , err )
414
426
return
415
427
}
416
428
memResp := d .createMembershipResponse (aliveMsg , targetPeer )
@@ -607,17 +619,26 @@ func (d *gossipDiscoveryImpl) periodicalReconnectToDead() {
607
619
}
608
620
609
621
func (d * gossipDiscoveryImpl ) sendMembershipRequest (member * NetworkMember , includeInternalEndpoint bool ) {
610
- req , err := d .createMembershipRequest (includeInternalEndpoint ).NoopSign ()
622
+ m , err := d .createMembershipRequest (includeInternalEndpoint )
623
+ if err != nil {
624
+ d .logger .Warning ("Failed creating membership request:" , err )
625
+ return
626
+ }
627
+ req , err := m .NoopSign ()
611
628
if err != nil {
612
629
d .logger .Error ("Failed creating SignedGossipMessage:" , err )
613
630
return
614
631
}
615
632
d .comm .SendToPeer (member , req )
616
633
}
617
634
618
- func (d * gossipDiscoveryImpl ) createMembershipRequest (includeInternalEndpoint bool ) * proto.GossipMessage {
635
+ func (d * gossipDiscoveryImpl ) createMembershipRequest (includeInternalEndpoint bool ) (* proto.GossipMessage , error ) {
636
+ am , err := d .createAliveMessage (includeInternalEndpoint )
637
+ if err != nil {
638
+ return nil , err
639
+ }
619
640
req := & proto.MembershipRequest {
620
- SelfInformation : d . createAliveMessage ( includeInternalEndpoint ) .Envelope ,
641
+ SelfInformation : am .Envelope ,
621
642
// TODO: sending the known peers is not secure because the remote peer might shouldn't know
622
643
// TODO: about the known peers. I'm deprecating this until a secure mechanism will be implemented.
623
644
// TODO: See FAB-2570 for tracking this issue.
@@ -629,7 +650,7 @@ func (d *gossipDiscoveryImpl) createMembershipRequest(includeInternalEndpoint bo
629
650
Content : & proto.GossipMessage_MemReq {
630
651
MemReq : req ,
631
652
},
632
- }
653
+ }, nil
633
654
}
634
655
635
656
func (d * gossipDiscoveryImpl ) copyLastSeen (lastSeenMap map [string ]* timestamp ) []NetworkMember {
@@ -711,15 +732,16 @@ func (d *gossipDiscoveryImpl) periodicalSendAlive() {
711
732
for ! d .toDie () {
712
733
d .logger .Debug ("Sleeping" , getAliveTimeInterval ())
713
734
time .Sleep (getAliveTimeInterval ())
714
- msg := d .createAliveMessage (true )
715
- if msg == nil {
735
+ msg , err := d .createAliveMessage (true )
736
+ if err != nil {
737
+ d .logger .Warning ("Failed creating alive message:" , err )
716
738
return
717
739
}
718
740
d .comm .Gossip (msg )
719
741
}
720
742
}
721
743
722
- func (d * gossipDiscoveryImpl ) createAliveMessage (includeInternalEndpoint bool ) * proto.SignedGossipMessage {
744
+ func (d * gossipDiscoveryImpl ) createAliveMessage (includeInternalEndpoint bool ) ( * proto.SignedGossipMessage , error ) {
723
745
d .lock .Lock ()
724
746
d .seqNum ++
725
747
seqNum := d .seqNum
@@ -750,7 +772,7 @@ func (d *gossipDiscoveryImpl) createAliveMessage(includeInternalEndpoint bool) *
750
772
751
773
envp := d .crypt .SignMessage (msg2Gossip , internalEndpoint )
752
774
if envp == nil {
753
- return nil
775
+ return nil , errors . New ( "Failed signing message" )
754
776
}
755
777
signedMsg := & proto.SignedGossipMessage {
756
778
GossipMessage : msg2Gossip ,
@@ -761,7 +783,7 @@ func (d *gossipDiscoveryImpl) createAliveMessage(includeInternalEndpoint bool) *
761
783
signedMsg .Envelope .SecretEnvelope = nil
762
784
}
763
785
764
- return signedMsg
786
+ return signedMsg , nil
765
787
}
766
788
767
789
func (d * gossipDiscoveryImpl ) learnExistingMembers (aliveArr []* proto.SignedGossipMessage ) {
0 commit comments