p2p: server>discover table Self=Node exported

release/1.0.1
zelig 10 years ago
parent 7279a485c2
commit e150832734
  1. 6
      p2p/discover/table.go
  2. 14
      p2p/server.go

@ -51,9 +51,9 @@ func newTable(t transport, ourID NodeID, ourAddr *net.UDPAddr) *Table {
return tab return tab
} }
// Self returns the local node ID. // Self returns the local node.
func (tab *Table) Self() NodeID { func (tab *Table) Self() *Node {
return tab.self.ID return tab.self
} }
// Close terminates the network listener. // Close terminates the network listener.

@ -180,7 +180,7 @@ func (srv *Server) Start() (err error) {
srv.ntab = ntab srv.ntab = ntab
// handshake // handshake
srv.ourHandshake = &protoHandshake{Version: baseProtocolVersion, Name: srv.Name, ID: ntab.Self()} srv.ourHandshake = &protoHandshake{Version: baseProtocolVersion, Name: srv.Name, ID: ntab.Self().ID}
for _, p := range srv.Protocols { for _, p := range srv.Protocols {
srv.ourHandshake.Caps = append(srv.ourHandshake.Caps, p.cap()) srv.ourHandshake.Caps = append(srv.ourHandshake.Caps, p.cap())
} }
@ -298,7 +298,7 @@ func (srv *Server) dialLoop() {
srv.lock.Lock() srv.lock.Lock()
_, isconnected := srv.peers[dest.ID] _, isconnected := srv.peers[dest.ID]
srv.lock.Unlock() srv.lock.Unlock()
if isconnected || dialing[dest.ID] || dest.ID == srv.ntab.Self() { if isconnected || dialing[dest.ID] || dest.ID == srv.Self().ID {
continue continue
} }
@ -332,12 +332,16 @@ func (srv *Server) dialNode(dest *discover.Node) {
srv.startPeer(conn, dest) srv.startPeer(conn, dest)
} }
func (srv *Server) Self() *discover.Node {
return srv.ntab.Self()
}
func (srv *Server) findPeers() { func (srv *Server) findPeers() {
far := srv.ntab.Self() far := srv.Self().ID
for i := range far { for i := range far {
far[i] = ^far[i] far[i] = ^far[i]
} }
closeToSelf := srv.ntab.Lookup(srv.ntab.Self()) closeToSelf := srv.ntab.Lookup(srv.Self().ID)
farFromSelf := srv.ntab.Lookup(far) farFromSelf := srv.ntab.Lookup(far)
for i := 0; i < len(closeToSelf) || i < len(farFromSelf); i++ { for i := 0; i < len(closeToSelf) || i < len(farFromSelf); i++ {
@ -402,7 +406,7 @@ func (srv *Server) addPeer(id discover.NodeID, p *Peer) (bool, DiscReason) {
return false, DiscTooManyPeers return false, DiscTooManyPeers
case srv.peers[id] != nil: case srv.peers[id] != nil:
return false, DiscAlreadyConnected return false, DiscAlreadyConnected
case id == srv.ntab.Self(): case id == srv.Self().ID:
return false, DiscSelf return false, DiscSelf
} }
srv.peers[id] = p srv.peers[id] = p

Loading…
Cancel
Save