Skip to content

Commit 3f8b3a5

Browse files
committed
les: try to dial before start eventloop
1 parent b434d76 commit 3f8b3a5

File tree

1 file changed

+4
-26
lines changed

1 file changed

+4
-26
lines changed

les/serverpool.go

+4-26
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,6 @@ type serverPool struct {
125125
discLookups chan bool
126126

127127
entries map[discover.NodeID]*poolEntry
128-
lock sync.Mutex
129128
timeout, enableRetry chan *poolEntry
130129
adjustStats chan poolStatAdjust
131130

@@ -174,9 +173,8 @@ func (pool *serverPool) start(server *p2p.Server, topic discv5.Topic) {
174173
pool.discLookups = make(chan bool, 100)
175174
go pool.server.DiscV5.SearchTopic(pool.topic, pool.discSetPeriod, pool.discNodes, pool.discLookups)
176175
}
177-
178-
go pool.eventLoop()
179176
pool.checkDial()
177+
go pool.eventLoop()
180178
}
181179

182180
// connect should be called upon any incoming connection. If the connection has been
@@ -223,24 +221,14 @@ func (pool *serverPool) disconnect(entry *poolEntry) {
223221
if stopped {
224222
// Request is emitted by ourselves, handle the logic here since eventloop doesn't
225223
// serve requests anymore.
226-
pool.lock.Lock()
227-
defer pool.lock.Unlock()
228-
229224
if entry.state == psRegistered {
230-
connTime := mclock.Now() - entry.regTime
231-
connAdjust := float64(connTime) / float64(targetConnTime)
225+
connAdjust := float64(mclock.Now()-entry.regTime) / float64(targetConnTime)
232226
if connAdjust > 1 {
233227
connAdjust = 1
234228
}
235229
entry.connectStats.add(1, connAdjust)
236230
}
237231
entry.state = psNotConnected
238-
if entry.knownSelected {
239-
pool.knownSelected--
240-
} else {
241-
pool.newSelected--
242-
}
243-
pool.setRetryDial(entry)
244232
pool.connWg.Done()
245233
} else {
246234
// Request is emitted by the server side
@@ -297,22 +285,17 @@ func (pool *serverPool) eventLoop() {
297285
for {
298286
select {
299287
case entry := <-pool.timeout:
300-
pool.lock.Lock()
301288
if !entry.removed {
302289
pool.checkDialTimeout(entry)
303290
}
304-
pool.lock.Unlock()
305291

306292
case entry := <-pool.enableRetry:
307-
pool.lock.Lock()
308293
if !entry.removed {
309294
entry.delayedRetry = false
310295
pool.updateCheckDial(entry)
311296
}
312-
pool.lock.Unlock()
313297

314298
case adj := <-pool.adjustStats:
315-
pool.lock.Lock()
316299
switch adj.adjustType {
317300
case pseBlockDelay:
318301
adj.entry.delayStats.add(float64(adj.time), 1)
@@ -322,13 +305,10 @@ func (pool *serverPool) eventLoop() {
322305
case pseResponseTimeout:
323306
adj.entry.timeoutStats.add(1, 1)
324307
}
325-
pool.lock.Unlock()
326308

327309
case node := <-pool.discNodes:
328-
pool.lock.Lock()
329310
entry := pool.findOrNewNode(discover.NodeID(node.ID), node.IP, node.TCP)
330311
pool.updateCheckDial(entry)
331-
pool.lock.Unlock()
332312

333313
case conv := <-pool.discLookups:
334314
if conv {
@@ -350,7 +330,6 @@ func (pool *serverPool) eventLoop() {
350330
if entry == nil {
351331
entry = pool.findOrNewNode(req.p.ID(), req.ip, req.port)
352332
}
353-
req.p.Log().Debug("Connecting to new peer", "state", entry.state)
354333
if entry.state == psConnected || entry.state == psRegistered {
355334
req.cont <- nil
356335
continue
@@ -387,15 +366,14 @@ func (pool *serverPool) eventLoop() {
387366
// Handle peer disconnection requests.
388367
entry := req.entry
389368
if entry.state == psRegistered {
390-
connTime := mclock.Now() - entry.regTime
391-
connAdjust := float64(connTime) / float64(targetConnTime)
369+
connAdjust := float64(mclock.Now()-entry.regTime) / float64(targetConnTime)
392370
if connAdjust > 1 {
393371
connAdjust = 1
394372
}
395373
entry.connectStats.add(connAdjust, 1)
396374
}
397-
398375
entry.state = psNotConnected
376+
399377
if entry.knownSelected {
400378
pool.knownSelected--
401379
} else {

0 commit comments

Comments
 (0)