e8f63bc295
This commit modifies the `ConnManager` to use the `net.Add` interface through the package instead of a plain string to represent and manipulate addresses. This change makes the package much more general as users of the package can possibly utilize custom implementations of the `net.Addr` interface to establish connections. More precisely, the `ConnReq` struct has been modified to use a net.Addr instance explicitly, and the `DialFunc` type has also been modified to take a `net.Addr` directly. This latter change gives functions that adhere to the `DialFunc` type more flexibility as to exactly how the connection is established. Additionally, the `connmgr.Config.GetNewAddress` configuration option now directly returns a `net.Addr. This change allows the `connmgr` to be decoupled from all DNS queries which allows callers to preferentially select more secure methods like performing DNS lookups over a Tor proxy. |
||
---|---|---|
.. | ||
connmanager.go | ||
connmanager_test.go | ||
doc.go | ||
dynamicbanscore.go | ||
dynamicbanscore_test.go | ||
log.go | ||
README.md | ||
seed.go | ||
tor.go |
connmgr
[] (https://travis-ci.org/btcsuite/btcd) ![ISC License] (http://img.shields.io/badge/license-ISC-blue.svg) [] (http://godoc.org/github.com/btcsuite/btcd/connmgr)
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.