Răsfoiți Sursa

Adding p2p peer,ok

skyfffire 2 ani în urmă
părinte
comite
d3492a2b24
2 a modificat fișierele cu 15 adăugiri și 2 ștergeri
  1. 4 0
      p2p/peer.go
  2. 11 2
      p2p/server.go

+ 4 - 0
p2p/peer.go

@@ -104,6 +104,10 @@ func newPeer(conn *conn, protocols []Protocol) *Peer {
 	return p
 }
 
+func (p *Peer) Inbound() bool {
+	return p.rw.is(inboundConn)
+}
+
 type protoRW struct {
 	Protocol
 	in     chan Msg        // receives read messages

+ 11 - 2
p2p/server.go

@@ -129,7 +129,15 @@ running:
 
 			c.cont <- server.postHandshakeChecks(peers, inboundCount, c)
 		case c := <-server.checkpointAddPeer:
-			fmt.Printf("checkpointAddPeer: %v.\n", c.name)
+			p := server.launchPeer(c)
+			peers[c.node.ID()] = p
+			server.dialsched.peerAdded(c)
+
+			if p.Inbound() {
+				inboundCount++
+			}
+
+			fmt.Printf("Adding p2p peer: %v, peer count: %v.\n", p.rw.node.IP(), len(peers))
 		}
 	}
 }
@@ -138,6 +146,7 @@ func (server *Server) postHandshakeChecks(peers map[enode.ID]*Peer, inboundCount
 	switch {
 	case !c.is(trustedConn) && len(peers) >= server.MaxPeers:
 		return DiscTooManyPeers
+	// TODO 暂时不做入站出站限制
 	//case !c.is(trustedConn) && c.is(inboundConn) && inboundCount >= server.maxInboundConns():
 	//	return DiscTooManyPeers
 	case peers[c.node.ID()] != nil:
@@ -452,7 +461,7 @@ func (server *Server) setupConn(c *conn, dialDest *enode.Node) error {
 		return err
 	}
 	c.caps, c.name = phs.Caps, phs.Name
-	fmt.Printf("Handshake ok, id: %v, addr: %v.\n", c.node.ID(), c.fd.RemoteAddr())
+	//fmt.Printf("Handshake ok, id: %v, addr: %v.\n", c.node.ID(), c.fd.RemoteAddr())
 
 	// 握手成功后将此链接放入addPeer的检查点
 	err = server.checkpoint(c, server.checkpointAddPeer)