]> Sergey Matveev's repositories - btrtrc.git/commitdiff
Add a passive flag for DHT, that disables responding to queries
authorMatt Joiner <anacrolix@gmail.com>
Fri, 28 Nov 2014 18:04:38 +0000 (12:04 -0600)
committerMatt Joiner <anacrolix@gmail.com>
Fri, 28 Nov 2014 18:04:38 +0000 (12:04 -0600)
dht/dht.go

index 71ae1cf7e7de90b21a23afc64f6406449d5521d9..65ff49bba83c5fa114d0694ae30205308dc83e16 100644 (file)
@@ -27,6 +27,7 @@ type Server struct {
        nodes            map[string]*Node // Keyed by dHTAddr.String().
        mu               sync.Mutex
        closed           chan struct{}
+       passive          bool // Don't respond to queries.
 
        NumConfirmedAnnounces int
 }
@@ -41,8 +42,9 @@ func newDHTAddr(addr *net.UDPAddr) (ret dHTAddr) {
 }
 
 type ServerConfig struct {
-       Addr string
-       Conn net.PacketConn
+       Addr    string
+       Conn    net.PacketConn
+       Passive bool // Don't respond to queries.
 }
 
 func (s *Server) LocalAddr() net.Addr {
@@ -71,6 +73,7 @@ func NewServer(c *ServerConfig) (s *Server, err error) {
                        return
                }
        }
+       s.passive = c.Passive
        err = s.init()
        if err != nil {
                return
@@ -346,6 +349,9 @@ func (s *Server) nodeByID(id string) *Node {
 func (s *Server) handleQuery(source dHTAddr, m Msg) {
        args := m["a"].(map[string]interface{})
        s.heardFromNode(source, args["id"].(string))
+       if s.passive {
+               return
+       }
        switch m["q"] {
        case "ping":
                s.reply(source, m["t"].(string), nil)