]> Sergey Matveev's repositories - btrtrc.git/commitdiff
Added BootstrapNodes to dht.ServerConfig
authorMilos Gajdos <milosgajdos83@gmail.com>
Thu, 2 Apr 2015 22:35:30 +0000 (23:35 +0100)
committerMilos Gajdos <milosgajdos83@gmail.com>
Thu, 2 Apr 2015 22:35:30 +0000 (23:35 +0100)
This is beneficial to users who are running their own private trackers
or have outbound connections to ports 6881 disallowed on firewalls.

dht/announce.go
dht/dht.go

index 4aadd454aba23b1f5ba409211976a6b90595a819..a179263b11e54d4f8271d815c22295e0d172df9e 100644 (file)
@@ -51,7 +51,7 @@ func (s *Server) Announce(infoHash string, port int, impliedPort bool) (*Announc
        }()
        s.mu.Unlock()
        if len(startAddrs) == 0 {
-               addrs, err := bootstrapAddrs()
+               addrs, err := bootstrapAddrs(s.bootstrapNodes)
                if err != nil {
                        return nil, err
                }
index 1fb3803423385e0ed52b215ddea7d6933602317e..b9ea3ee7be07b5b76761707a31f7e3f2d0240d44 100644 (file)
@@ -50,6 +50,7 @@ type Server struct {
        ipBlockList      *iplist.IPList
 
        numConfirmedAnnounces int
+       bootstrapNodes        []string
 }
 
 type dHTAddr interface {
@@ -83,6 +84,8 @@ type ServerConfig struct {
        Conn net.PacketConn
        // Don't respond to queries from other nodes.
        Passive bool
+       // DHT Bootstrap nodes
+       BootstrapNodes []string
 }
 
 type ServerStats struct {
@@ -142,6 +145,7 @@ func NewServer(c *ServerConfig) (s *Server, err error) {
                }
        }
        s.passive = c.Passive
+       s.bootstrapNodes = c.BootstrapNodes
        err = s.init()
        if err != nil {
                return
@@ -967,11 +971,15 @@ func (s *Server) getPeers(addr dHTAddr, infoHash string) (t *Transaction, err er
        return
 }
 
-func bootstrapAddrs() (addrs []*net.UDPAddr, err error) {
-       for _, addrStr := range []string{
-               "router.utorrent.com:6881",
-               "router.bittorrent.com:6881",
-       } {
+func bootstrapAddrs(nodeAddrs []string) (addrs []*net.UDPAddr, err error) {
+       bootstrapNodes := nodeAddrs
+       if len(bootstrapNodes) == 0 {
+               bootstrapNodes = []string{
+                       "router.utorrent.com:6881",
+                       "router.bittorrent.com:6881",
+               }
+       }
+       for _, addrStr := range bootstrapNodes {
                udpAddr, err := net.ResolveUDPAddr("udp4", addrStr)
                if err != nil {
                        continue
@@ -985,7 +993,7 @@ func bootstrapAddrs() (addrs []*net.UDPAddr, err error) {
 }
 
 func (s *Server) addRootNodes() error {
-       addrs, err := bootstrapAddrs()
+       addrs, err := bootstrapAddrs(s.bootstrapNodes)
        if err != nil {
                return err
        }