flow control deadlock fix

This commit is contained in:
zsfelfoldi 2016-06-26 11:09:09 +02:00
parent c48b7caf6a
commit 64b136b996
2 changed files with 2 additions and 2 deletions

View file

@ -190,8 +190,8 @@ func (self *ClientManager) accept(node *cmNode, time int64) bool {
self.update(time) self.update(time)
if !self.canStartReq() { if !self.canStartReq() {
resume := make(chan bool) resume := make(chan bool)
self.resumeQueue <- resume
self.lock.Unlock() self.lock.Unlock()
self.resumeQueue <- resume
<-resume <-resume
self.lock.Lock() self.lock.Lock()
if _, ok := self.nodes[node]; !ok { if _, ok := self.nodes[node]; !ok {

View file

@ -67,7 +67,7 @@ func (ps *odrPeerSet) unregister(p *peer) error {
func (ps *odrPeerSet) peerPriority(p *peer, info *odrPeerInfo, req LesOdrRequest) uint64 { func (ps *odrPeerSet) peerPriority(p *peer, info *odrPeerInfo, req LesOdrRequest) uint64 {
tm := p.fcServer.CanSend(req.GetCost(p)) tm := p.fcServer.CanSend(req.GetCost(p))
if info.reqCnt > 0 { if info.reqTimeCnt > 0 {
tm += info.reqTimeSum / info.reqTimeCnt tm += info.reqTimeSum / info.reqTimeCnt
} }
return tm return tm