@@ -410,7 +410,7 @@ func (d *gossipDiscoveryImpl) sendMemResponse(targetMember *proto.Member, intern
410
410
InternalEndpoint : internalEndpoint ,
411
411
}
412
412
413
- aliveMsg , err := d .createAliveMessage (true )
413
+ aliveMsg , err := d .createSignedAliveMessage (true )
414
414
if err != nil {
415
415
d .logger .Warningf ("Failed creating alive message: %+v" , errors .WithStack (err ))
416
416
return
@@ -624,7 +624,7 @@ func (d *gossipDiscoveryImpl) sendMembershipRequest(member *NetworkMember, inclu
624
624
}
625
625
626
626
func (d * gossipDiscoveryImpl ) createMembershipRequest (includeInternalEndpoint bool ) (* proto.GossipMessage , error ) {
627
- am , err := d .createAliveMessage (includeInternalEndpoint )
627
+ am , err := d .createSignedAliveMessage (includeInternalEndpoint )
628
628
if err != nil {
629
629
return nil , errors .WithStack (err )
630
630
}
@@ -723,7 +723,7 @@ func (d *gossipDiscoveryImpl) periodicalSendAlive() {
723
723
for ! d .toDie () {
724
724
d .logger .Debug ("Sleeping" , getAliveTimeInterval ())
725
725
time .Sleep (getAliveTimeInterval ())
726
- msg , err := d .createAliveMessage (true )
726
+ msg , err := d .createSignedAliveMessage (true )
727
727
if err != nil {
728
728
d .logger .Warningf ("Failed creating alive message: %+v" , errors .WithStack (err ))
729
729
return
@@ -732,19 +732,16 @@ func (d *gossipDiscoveryImpl) periodicalSendAlive() {
732
732
}
733
733
}
734
734
735
- func (d * gossipDiscoveryImpl ) createAliveMessage ( includeInternalEndpoint bool ) (* proto.SignedGossipMessage , error ) {
735
+ func (d * gossipDiscoveryImpl ) aliveMsgAndInternalEndpoint ( ) (* proto.GossipMessage , string ) {
736
736
d .lock .Lock ()
737
+ defer d .lock .Unlock ()
737
738
d .seqNum ++
738
739
seqNum := d .seqNum
739
-
740
740
endpoint := d .self .Endpoint
741
741
meta := d .self .Metadata
742
742
pkiID := d .self .PKIid
743
743
internalEndpoint := d .self .InternalEndpoint
744
-
745
- d .lock .Unlock ()
746
-
747
- msg2Gossip := & proto.GossipMessage {
744
+ msg := & proto.GossipMessage {
748
745
Tag : proto .GossipMessage_EMPTY ,
749
746
Content : & proto.GossipMessage_AliveMsg {
750
747
AliveMsg : & proto.AliveMessage {
@@ -760,13 +757,17 @@ func (d *gossipDiscoveryImpl) createAliveMessage(includeInternalEndpoint bool) (
760
757
},
761
758
},
762
759
}
760
+ return msg , internalEndpoint
761
+ }
763
762
764
- envp := d .crypt .SignMessage (msg2Gossip , internalEndpoint )
763
+ func (d * gossipDiscoveryImpl ) createSignedAliveMessage (includeInternalEndpoint bool ) (* proto.SignedGossipMessage , error ) {
764
+ msg , internalEndpoint := d .aliveMsgAndInternalEndpoint ()
765
+ envp := d .crypt .SignMessage (msg , internalEndpoint )
765
766
if envp == nil {
766
767
return nil , errors .New ("Failed signing message" )
767
768
}
768
769
signedMsg := & proto.SignedGossipMessage {
769
- GossipMessage : msg2Gossip ,
770
+ GossipMessage : msg ,
770
771
Envelope : envp ,
771
772
}
772
773
@@ -913,6 +914,7 @@ func (d *gossipDiscoveryImpl) GetMembership() []NetworkMember {
913
914
Endpoint : member .Membership .Endpoint ,
914
915
Metadata : member .Membership .Metadata ,
915
916
InternalEndpoint : d .id2Member [string (m .GetAliveMsg ().Membership .PkiId )].InternalEndpoint ,
917
+ Envelope : m .Envelope ,
916
918
})
917
919
}
918
920
return response
@@ -937,11 +939,20 @@ func (d *gossipDiscoveryImpl) UpdateEndpoint(endpoint string) {
937
939
}
938
940
939
941
func (d * gossipDiscoveryImpl ) Self () NetworkMember {
942
+ var env * proto.Envelope
943
+ msg , _ := d .aliveMsgAndInternalEndpoint ()
944
+ sMsg , err := msg .NoopSign ()
945
+ if err != nil {
946
+ d .logger .Warning ("Failed creating SignedGossipMessage:" , err )
947
+ } else {
948
+ env = sMsg .Envelope
949
+ }
950
+ mem := msg .GetAliveMsg ().Membership
940
951
return NetworkMember {
941
- Endpoint : d . self .Endpoint ,
942
- Metadata : d . self .Metadata ,
943
- PKIid : d . self . PKIid ,
944
- InternalEndpoint : d . self . InternalEndpoint ,
952
+ Endpoint : mem .Endpoint ,
953
+ Metadata : mem .Metadata ,
954
+ PKIid : mem . PkiId ,
955
+ Envelope : env ,
945
956
}
946
957
}
947
958
0 commit comments