@@ -115,7 +115,11 @@ func New(stack *node.Node, config *ethconfig.Config) (*LightEthereum, error) {
115115 p2pConfig : & stack .Config ().P2P ,
116116 }
117117
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 )
119123 leth .serverPool .AddMetrics (suggestedTimeoutGauge , totalValueGauge , serverSelectableGauge , serverConnectedGauge , sessionValueMeter , serverDialedMeter )
120124
121125 leth .retriever = newRetrieveManager (peers , leth .reqDist , leth .serverPool .GetTimeout )
@@ -194,6 +198,9 @@ func New(stack *node.Node, config *ethconfig.Config) (*LightEthereum, error) {
194198
195199// VfluxRequest sends a batch of requests to the given node through discv5 UDP TalkRequest and returns the responses
196200func (s * LightEthereum ) VfluxRequest (n * enode.Node , reqs vflux.Requests ) vflux.Replies {
201+ if s .p2pServer .DiscV5 == nil {
202+ return nil
203+ }
197204 reqsEnc , _ := rlp .EncodeToBytes (& reqs )
198205 repliesEnc , _ := s .p2pServer .DiscV5 .TalkRequest (s .serverPool .DialNode (n ), "vfx" , reqsEnc )
199206 var replies vflux.Replies
@@ -208,6 +215,9 @@ func (s *LightEthereum) VfluxRequest(n *enode.Node, reqs vflux.Requests) vflux.R
208215func (s * LightEthereum ) vfxVersion (n * enode.Node ) uint {
209216 if n .Seq () == 0 {
210217 var err error
218+ if s .p2pServer .DiscV5 == nil {
219+ return 0
220+ }
211221 if n , err = s .p2pServer .DiscV5 .RequestENR (n ); n != nil && err == nil && n .Seq () != 0 {
212222 s .serverPool .Persist (n )
213223 } else {
0 commit comments