separate lock for blacklist
This commit is contained in:
parent
a009132c24
commit
be25396340
|
@ -57,7 +57,8 @@ type peer struct {
|
||||||
// peers is the component keeping a record of peers in a hashmap
|
// peers is the component keeping a record of peers in a hashmap
|
||||||
//
|
//
|
||||||
type peers struct {
|
type peers struct {
|
||||||
lock sync.RWMutex
|
lock sync.RWMutex
|
||||||
|
bllock sync.Mutex
|
||||||
|
|
||||||
bp *BlockPool
|
bp *BlockPool
|
||||||
errors *errs.Errors
|
errors *errs.Errors
|
||||||
|
@ -109,13 +110,15 @@ func (self *peers) peerError(id string, code int, format string, params ...inter
|
||||||
|
|
||||||
// record time of offence in blacklist to implement suspension for PeerSuspensionInterval
|
// record time of offence in blacklist to implement suspension for PeerSuspensionInterval
|
||||||
func (self *peers) addToBlacklist(id string) {
|
func (self *peers) addToBlacklist(id string) {
|
||||||
self.lock.Lock()
|
self.bllock.Lock()
|
||||||
defer self.lock.Unlock()
|
defer self.bllock.Unlock()
|
||||||
self.blacklist[id] = time.Now()
|
self.blacklist[id] = time.Now()
|
||||||
}
|
}
|
||||||
|
|
||||||
// suspended checks if peer is still suspended, caller should hold peers.lock
|
// suspended checks if peer is still suspended, caller should hold peers.lock
|
||||||
func (self *peers) suspended(id string) (s bool) {
|
func (self *peers) suspended(id string) (s bool) {
|
||||||
|
self.bllock.Lock()
|
||||||
|
defer self.bllock.Unlock()
|
||||||
if suspendedAt, ok := self.blacklist[id]; ok {
|
if suspendedAt, ok := self.blacklist[id]; ok {
|
||||||
if s = suspendedAt.Add(self.bp.Config.PeerSuspensionInterval).After(time.Now()); !s {
|
if s = suspendedAt.Add(self.bp.Config.PeerSuspensionInterval).After(time.Now()); !s {
|
||||||
// no longer suspended, delete entry
|
// no longer suspended, delete entry
|
||||||
|
|
Loading…
Reference in New Issue