mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-22 20:56:42 +00:00
integrate to backend, fix self/remote addr for peers
This commit is contained in:
parent
d5330b0dcd
commit
0fddda3969
2 changed files with 31 additions and 27 deletions
|
|
@ -57,7 +57,8 @@ var errorToString = map[int]string{
|
|||
// bzzProtocol represents the swarm wire protocol
|
||||
// instance is running on each peer
|
||||
type bzzProtocol struct {
|
||||
self *discover.Node
|
||||
self func() *discover.Node
|
||||
node *discover.Node
|
||||
netStore *NetStore
|
||||
peer *p2p.Peer
|
||||
rw p2p.MsgReadWriter
|
||||
|
|
@ -186,7 +187,7 @@ main entrypoint, wrappers starting a server running the bzz protocol
|
|||
use this constructor to attach the protocol ("class") to server caps
|
||||
the Dev p2p layer then runs the protocol instance on each peer
|
||||
*/
|
||||
func BzzProtocol(netStore *NetStore, self *discover.Node) p2p.Protocol {
|
||||
func BzzProtocol(netStore *NetStore, self func() *discover.Node) p2p.Protocol {
|
||||
return p2p.Protocol{
|
||||
Name: "bzz",
|
||||
Version: Version,
|
||||
|
|
@ -199,10 +200,9 @@ func BzzProtocol(netStore *NetStore, self *discover.Node) p2p.Protocol {
|
|||
|
||||
// the main loop that handles incoming messages
|
||||
// note RemovePeer in the post-disconnect hook
|
||||
func runBzzProtocol(netStore *NetStore, selfNode *discover.Node, p *p2p.Peer, rw p2p.MsgReadWriter) (err error) {
|
||||
func runBzzProtocol(netStore *NetStore, selfF func() *discover.Node, p *p2p.Peer, rw p2p.MsgReadWriter) (err error) {
|
||||
self := &bzzProtocol{
|
||||
self: selfNode,
|
||||
|
||||
self: selfF,
|
||||
netStore: netStore,
|
||||
rw: rw,
|
||||
peer: p,
|
||||
|
|
@ -283,12 +283,12 @@ func (self *bzzProtocol) handle() error {
|
|||
|
||||
func (self *bzzProtocol) handleStatus() (err error) {
|
||||
// send precanned status message
|
||||
sliceNodeID := self.self.ID
|
||||
sliceNodeID := self.self().ID
|
||||
handshake := &statusMsgData{
|
||||
Version: uint64(Version),
|
||||
ID: "honey",
|
||||
NodeID: sliceNodeID[:],
|
||||
Addr: newPeerAddrFromNode(self.self),
|
||||
Addr: newPeerAddrFromNode(self.self()),
|
||||
NetworkId: uint64(NetworkId),
|
||||
Caps: []p2p.Cap{},
|
||||
}
|
||||
|
|
@ -327,6 +327,8 @@ func (self *bzzProtocol) handleStatus() (err error) {
|
|||
|
||||
glog.V(logger.Info).Infof("Peer is [bzz] capable (%d/%d)\n", status.Version, status.NetworkId)
|
||||
|
||||
self.node = status.Addr.node()
|
||||
|
||||
self.netStore.hive.addPeer(peer{bzzProtocol: self})
|
||||
|
||||
return nil
|
||||
|
|
@ -334,11 +336,11 @@ func (self *bzzProtocol) handleStatus() (err error) {
|
|||
|
||||
// protocol instance implements kademlia.Node interface (embedded hive.peer)
|
||||
func (self *bzzProtocol) Addr() (a kademlia.Address) {
|
||||
return kademlia.Address(self.self.Sha())
|
||||
return kademlia.Address(self.node.Sha())
|
||||
}
|
||||
|
||||
func (self *bzzProtocol) Url() string {
|
||||
return self.self.String()
|
||||
return self.node.String()
|
||||
}
|
||||
|
||||
func (self *bzzProtocol) LastActive() time.Time {
|
||||
|
|
|
|||
|
|
@ -285,8 +285,24 @@ func New(config *Config) (*Ethereum, error) {
|
|||
|
||||
protocols := []p2p.Protocol{eth.protocolManager.SubProtocol}
|
||||
|
||||
eth.net = &p2p.Server{
|
||||
PrivateKey: netprv,
|
||||
Name: config.Name,
|
||||
MaxPeers: config.MaxPeers,
|
||||
MaxPendingPeers: config.MaxPendingPeers,
|
||||
// Protocols: protocols,
|
||||
NAT: config.NAT,
|
||||
NoDial: !config.Dial,
|
||||
BootstrapNodes: config.parseBootNodes(),
|
||||
StaticNodes: config.parseNodes(staticNodes),
|
||||
TrustedNodes: config.parseNodes(trustedNodes),
|
||||
NodeDatabase: nodeDb,
|
||||
}
|
||||
if len(config.Port) > 0 {
|
||||
eth.net.ListenAddr = ":" + config.Port
|
||||
}
|
||||
if config.Bzz {
|
||||
netStore := bzz.NewNetStore(config.DataDir + "/bzz")
|
||||
netStore := bzz.NewNetStore(eth.net.Self().Sha(), path.Join(config.DataDir, "bzz"), path.Join(config.DataDir, "bzzpeers.json"))
|
||||
chunker := &bzz.TreeChunker{}
|
||||
chunker.Init()
|
||||
dpa := &bzz.DPA{
|
||||
|
|
@ -294,29 +310,15 @@ func New(config *Config) (*Ethereum, error) {
|
|||
ChunkStore: netStore,
|
||||
}
|
||||
dpa.Start()
|
||||
protocols = append(protocols, bzz.BzzProtocol(netStore))
|
||||
protocols = append(protocols, bzz.BzzProtocol(netStore, eth.net.Self))
|
||||
go bzz.StartHttpServer(dpa)
|
||||
}
|
||||
|
||||
if config.Shh {
|
||||
protocols = append(protocols, eth.whisper.Protocol())
|
||||
}
|
||||
eth.net = &p2p.Server{
|
||||
PrivateKey: netprv,
|
||||
Name: config.Name,
|
||||
MaxPeers: config.MaxPeers,
|
||||
MaxPendingPeers: config.MaxPendingPeers,
|
||||
Protocols: protocols,
|
||||
NAT: config.NAT,
|
||||
NoDial: !config.Dial,
|
||||
BootstrapNodes: config.parseBootNodes(),
|
||||
StaticNodes: config.parseNodes(staticNodes),
|
||||
TrustedNodes: config.parseNodes(trustedNodes),
|
||||
NodeDatabase: nodeDb,
|
||||
}
|
||||
if len(config.Port) > 0 {
|
||||
eth.net.ListenAddr = ":" + config.Port
|
||||
}
|
||||
|
||||
eth.net.Protocols = protocols
|
||||
|
||||
vm.Debug = config.VmDebug
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue