addrmgr: Expose method to update services.
This exposes a new method named SetServices to the address manager which can be used to update the services for a known address. This will be useful to keep known services up to date. Backported from Decred.
This commit is contained in:
parent
4d1e1db9ea
commit
24e23525fb
1 changed files with 20 additions and 0 deletions
|
@ -1,4 +1,5 @@
|
|||
// Copyright (c) 2013-2016 The btcsuite developers
|
||||
// Copyright (c) 2015-2018 The Decred developers
|
||||
// Use of this source code is governed by an ISC
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
|
@ -937,6 +938,25 @@ func (a *AddrManager) Good(addr *wire.NetAddress) {
|
|||
a.addrNew[newBucket][rmkey] = rmka
|
||||
}
|
||||
|
||||
// SetServices sets the services for the giiven address to the provided value.
|
||||
func (a *AddrManager) SetServices(addr *wire.NetAddress, services wire.ServiceFlag) {
|
||||
a.mtx.Lock()
|
||||
defer a.mtx.Unlock()
|
||||
|
||||
ka := a.find(addr)
|
||||
if ka == nil {
|
||||
return
|
||||
}
|
||||
|
||||
// Update the services if needed.
|
||||
if ka.na.Services != services {
|
||||
// ka.na is immutable, so replace it.
|
||||
naCopy := *ka.na
|
||||
naCopy.Services = services
|
||||
ka.na = &naCopy
|
||||
}
|
||||
}
|
||||
|
||||
// AddLocalAddress adds na to the list of known local addresses to advertise
|
||||
// with the given priority.
|
||||
func (a *AddrManager) AddLocalAddress(na *wire.NetAddress, priority AddressPriority) error {
|
||||
|
|
Loading…
Add table
Reference in a new issue