network: add ability to specify port for P2P version exchange
This commit is contained in:
parent
5924123927
commit
09bb162de0
3 changed files with 13 additions and 2 deletions
|
@ -11,6 +11,7 @@ import (
|
|||
// ApplicationConfiguration config specific to the node.
|
||||
type ApplicationConfiguration struct {
|
||||
Address string `yaml:"Address"`
|
||||
AnnouncedNodePort uint16 `yaml:"AnnouncedPort"`
|
||||
AttemptConnPeers int `yaml:"AttemptConnPeers"`
|
||||
DBConfiguration storage.DBConfiguration `yaml:"DBConfiguration"`
|
||||
DialTimeout time.Duration `yaml:"DialTimeout"`
|
||||
|
|
|
@ -1278,8 +1278,14 @@ func (s *Server) broadcastTxLoop() {
|
|||
}
|
||||
}
|
||||
|
||||
// Port returns actual server port. It may differs from that of server.Config.
|
||||
// Port returns a server port that should be used in P2P version exchange. In
|
||||
// case if `AnnouncedPort` is set in the server.Config, the announced node port
|
||||
// will be returned (e.g. consider the node running behind NAT). If `AnnouncedPort`
|
||||
// isn't set, the port returned may still differs from that of server.Config.
|
||||
func (s *Server) Port() (uint16, error) {
|
||||
if s.AnnouncedPort != 0 {
|
||||
return s.ServerConfig.AnnouncedPort, nil
|
||||
}
|
||||
var port uint16
|
||||
_, portStr, err := net.SplitHostPort(s.transport.Address())
|
||||
if err != nil {
|
||||
|
|
|
@ -31,7 +31,10 @@ type (
|
|||
// Address. Example: "127.0.0.1".
|
||||
Address string
|
||||
|
||||
// Port. Example: 20332.
|
||||
// AnnouncedPort is an announced node port for P2P version exchange.
|
||||
AnnouncedPort uint16
|
||||
|
||||
// Port is the actual node port it is bound to. Example: 20332.
|
||||
Port uint16
|
||||
|
||||
// The network mode the server will operate on.
|
||||
|
@ -92,6 +95,7 @@ func NewServerConfig(cfg config.Config) ServerConfig {
|
|||
return ServerConfig{
|
||||
UserAgent: cfg.GenerateUserAgent(),
|
||||
Address: appConfig.Address,
|
||||
AnnouncedPort: appConfig.AnnouncedNodePort,
|
||||
Port: appConfig.NodePort,
|
||||
Net: protoConfig.Magic,
|
||||
Relay: appConfig.Relay,
|
||||
|
|
Loading…
Reference in a new issue