@@ -66,37 +66,24 @@ type gossipServiceImpl struct {
66
66
disSecAdap * discoverySecurityAdapter
67
67
mcs api.MessageCryptoService
68
68
stateInfoMsgStore msgstore.MessageStore
69
+ certPuller pull.Mediator
69
70
}
70
71
71
72
// NewGossipService creates a gossip instance attached to a gRPC server
72
73
func NewGossipService (conf * Config , s * grpc.Server , secAdvisor api.SecurityAdvisor ,
73
- mcs api.MessageCryptoService , idMapper identity. Mapper , selfIdentity api.PeerIdentityType ,
74
+ mcs api.MessageCryptoService , selfIdentity api.PeerIdentityType ,
74
75
secureDialOpts api.PeerSecureDialOpts ) Gossip {
75
-
76
- var c comm.Comm
77
76
var err error
78
77
79
78
lgr := util .GetLogger (util .LoggingGossipModule , conf .ID )
80
- if s == nil {
81
- c , err = createCommWithServer (conf .BindPort , idMapper , selfIdentity , secureDialOpts )
82
- } else {
83
- c , err = createCommWithoutServer (s , conf .TLSServerCert , idMapper , selfIdentity , secureDialOpts )
84
- }
85
-
86
- if err != nil {
87
- lgr .Errorf ("Failed instntiating communication layer: %+v" , errors .WithStack (err ))
88
- return nil
89
- }
90
79
91
80
g := & gossipServiceImpl {
92
81
selfOrg : secAdvisor .OrgByPeerIdentity (selfIdentity ),
93
82
secAdvisor : secAdvisor ,
94
83
selfIdentity : selfIdentity ,
95
84
presumedDead : make (chan common.PKIidType , presumedDeadChanSize ),
96
- idMapper : idMapper ,
97
85
disc : nil ,
98
86
mcs : mcs ,
99
- comm : c ,
100
87
conf : conf ,
101
88
ChannelDeMultiplexer : comm .NewChannelDemultiplexer (),
102
89
logger : lgr ,
@@ -107,6 +94,21 @@ func NewGossipService(conf *Config, s *grpc.Server, secAdvisor api.SecurityAdvis
107
94
}
108
95
g .stateInfoMsgStore = g .newStateInfoMsgStore ()
109
96
97
+ g .idMapper = identity .NewIdentityMapper (mcs , selfIdentity , func (pkiID common.PKIidType , identity api.PeerIdentityType ) {
98
+ g .certPuller .Remove (string (pkiID ))
99
+ })
100
+
101
+ if s == nil {
102
+ g .comm , err = createCommWithServer (conf .BindPort , g .idMapper , selfIdentity , secureDialOpts )
103
+ } else {
104
+ g .comm , err = createCommWithoutServer (s , conf .TLSServerCert , g .idMapper , selfIdentity , secureDialOpts )
105
+ }
106
+
107
+ if err != nil {
108
+ lgr .Error ("Failed instntiating communication layer:" , err )
109
+ return nil
110
+ }
111
+
110
112
g .chanState = newChannelState (g )
111
113
g .emitter = newBatchingEmitter (conf .PropagateIterations ,
112
114
conf .MaxPropagationBurstSize , conf .MaxPropagationBurstLatency ,
@@ -117,7 +119,8 @@ func NewGossipService(conf *Config, s *grpc.Server, secAdvisor api.SecurityAdvis
117
119
g .disc = discovery .NewDiscoveryService (g .selfNetworkMember (), g .discAdapter , g .disSecAdap , g .disclosurePolicy )
118
120
g .logger .Info ("Creating gossip service with self membership of" , g .selfNetworkMember ())
119
121
120
- g .certStore = newCertStore (g .createCertStorePuller (), idMapper , selfIdentity , mcs )
122
+ g .certPuller = g .createCertStorePuller ()
123
+ g .certStore = newCertStore (g .certPuller , g .idMapper , selfIdentity , mcs )
121
124
122
125
if g .conf .ExternalEndpoint == "" {
123
126
g .logger .Warning ("External endpoint is empty, peer will not be accessible outside of its organization" )
@@ -168,8 +171,8 @@ func createCommWithoutServer(s *grpc.Server, cert *tls.Certificate, idStore iden
168
171
169
172
// NewGossipServiceWithServer creates a new gossip instance with a gRPC server
170
173
func NewGossipServiceWithServer (conf * Config , secAdvisor api.SecurityAdvisor , mcs api.MessageCryptoService ,
171
- mapper identity. Mapper , identity api.PeerIdentityType , secureDialOpts api.PeerSecureDialOpts ) Gossip {
172
- return NewGossipService (conf , nil , secAdvisor , mcs , mapper , identity , secureDialOpts )
174
+ identity api.PeerIdentityType , secureDialOpts api.PeerSecureDialOpts ) Gossip {
175
+ return NewGossipService (conf , nil , secAdvisor , mcs , identity , secureDialOpts )
173
176
}
174
177
175
178
func createCommWithServer (port int , idStore identity.Mapper , identity api.PeerIdentityType ,
0 commit comments