@@ -115,7 +115,11 @@ func New(stack *node.Node, config *ethconfig.Config) (*LightEthereum, error) {
115
115
p2pConfig : & stack .Config ().P2P ,
116
116
}
117
117
118
- leth .serverPool , leth .serverPoolIterator = vfc .NewServerPool (lesDb , []byte ("serverpool:" ), time .Second , leth .prenegQuery , & mclock.System {}, config .UltraLightServers , requestList )
118
+ var prenegQuery vfc.QueryFunc
119
+ if leth .p2pServer .DiscV5 != nil {
120
+ prenegQuery = leth .prenegQuery
121
+ }
122
+ leth .serverPool , leth .serverPoolIterator = vfc .NewServerPool (lesDb , []byte ("serverpool:" ), time .Second , prenegQuery , & mclock.System {}, config .UltraLightServers , requestList )
119
123
leth .serverPool .AddMetrics (suggestedTimeoutGauge , totalValueGauge , serverSelectableGauge , serverConnectedGauge , sessionValueMeter , serverDialedMeter )
120
124
121
125
leth .retriever = newRetrieveManager (peers , leth .reqDist , leth .serverPool .GetTimeout )
@@ -194,6 +198,9 @@ func New(stack *node.Node, config *ethconfig.Config) (*LightEthereum, error) {
194
198
195
199
// VfluxRequest sends a batch of requests to the given node through discv5 UDP TalkRequest and returns the responses
196
200
func (s * LightEthereum ) VfluxRequest (n * enode.Node , reqs vflux.Requests ) vflux.Replies {
201
+ if s .p2pServer .DiscV5 == nil {
202
+ return nil
203
+ }
197
204
reqsEnc , _ := rlp .EncodeToBytes (& reqs )
198
205
repliesEnc , _ := s .p2pServer .DiscV5 .TalkRequest (s .serverPool .DialNode (n ), "vfx" , reqsEnc )
199
206
var replies vflux.Replies
@@ -208,6 +215,9 @@ func (s *LightEthereum) VfluxRequest(n *enode.Node, reqs vflux.Requests) vflux.R
208
215
func (s * LightEthereum ) vfxVersion (n * enode.Node ) uint {
209
216
if n .Seq () == 0 {
210
217
var err error
218
+ if s .p2pServer .DiscV5 == nil {
219
+ return 0
220
+ }
211
221
if n , err = s .p2pServer .DiscV5 .RequestENR (n ); n != nil && err == nil && n .Seq () != 0 {
212
222
s .serverPool .Persist (n )
213
223
} else {
0 commit comments