btcd/connmgr
Olaoluwa Osuntokun 58ee9ef65a server+connmgr: make outbound startup deterministic
In this commit, we define TargetOutbound as the number of automatic
connections and treat explicit Connect requests as additional peers.

Permanent requests could previously consume connection IDs before Start
sampled the shared counter. The resulting automatic count depended on
goroutine scheduling, while the listener reserved the worst-case total.
We now start the configured automatic count directly and cap it by the
peer budget left after permanent peers.

The composition test covers permanent requests on both sides of Start and
pins the same automatic+permanent total for either ordering.
2026-07-21 16:45:44 -07:00
..
connmanager.go server+connmgr: make outbound startup deterministic 2026-07-21 16:45:44 -07:00
connmanager_test.go server+connmgr: make outbound startup deterministic 2026-07-21 16:45:44 -07:00
doc.go multi: Run gofmt on the entire repository 2023-06-21 22:31:09 +09:00
dynamicbanscore.go BUG:dynamicbanscore deadlock 2020-03-09 13:41:13 -04:00
dynamicbanscore_test.go BUG:dynamicbanscore deadlock 2020-03-09 13:41:13 -04:00
log.go connmgr: Refactor connection management into pkg 2016-10-22 01:11:57 -05:00
README.md docs: update shields 2021-03-05 07:45:19 -05:00
seed.go multi: use new v2 modules everywhere 2026-05-14 18:05:33 -07:00
tor.go Revert "reduce redundant memory allocatio - resolves btcsuite/btcd#1699" 2022-02-04 15:35:59 -05:00

connmgr

Build Status ISC License GoDoc

Package connmgr implements a generic Bitcoin network connection manager.

Overview

Connection Manager handles all the general connection concerns such as maintaining a set number of outbound connections, sourcing peers, banning, limiting max connections, tor lookup, etc.

The package provides a generic connection manager which is able to accept connection requests from a source or a set of given addresses, dial them and notify the caller on connections. The main intended use is to initialize a pool of active connections and maintain them to remain connected to the P2P network.

In addition the connection manager provides the following utilities:

  • Notifications on connections or disconnections
  • Handle failures and retry new addresses from the source
  • Connect only to specified addresses
  • Permanent connections with increasing backoff retry timers
  • Disconnect or Remove an established connection

Installation and Updating

$ go get -u github.com/btcsuite/btcd/connmgr

License

Package connmgr is licensed under the copyfree ISC License.