fixed newPeerCh

This commit is contained in:
zsfelfoldi 2016-06-26 10:46:23 +02:00
parent f085237df3
commit c48b7caf6a

View file

@ -133,7 +133,7 @@ func NewProtocolManager(chainConfig *core.ChainConfig, lightSync bool, networkId
txrelay: txrelay, txrelay: txrelay,
odr: odr, odr: odr,
peers: newPeerSet(), peers: newPeerSet(),
newPeerCh: make(chan *peer, 1), newPeerCh: make(chan *peer),
quitSync: make(chan struct{}), quitSync: make(chan struct{}),
noMorePeers: make(chan struct{}), noMorePeers: make(chan struct{}),
} }
@ -152,6 +152,8 @@ func NewProtocolManager(chainConfig *core.ChainConfig, lightSync bool, networkId
case manager.newPeerCh <- peer: case manager.newPeerCh <- peer:
manager.wg.Add(1) manager.wg.Add(1)
defer manager.wg.Done() defer manager.wg.Done()
fmt.Println("enter handler", p.ID())
defer fmt.Println("exit handler", p.ID())
return manager.handle(peer) return manager.handle(peer)
case <-manager.quitSync: case <-manager.quitSync:
return p2p.DiscQuitting return p2p.DiscQuitting
@ -230,6 +232,10 @@ func (pm *ProtocolManager) Start() {
if pm.lightSync { if pm.lightSync {
// start sync handler // start sync handler
go pm.syncer() go pm.syncer()
} else {
go func() {
for range pm.newPeerCh {}
}()
} }
} }
@ -268,10 +274,13 @@ func (pm *ProtocolManager) handle(p *peer) error {
// Execute the LES handshake // Execute the LES handshake
td, head, genesis := pm.blockchain.Status() td, head, genesis := pm.blockchain.Status()
headNum := core.GetBlockNumber(pm.chainDb, head) headNum := core.GetBlockNumber(pm.chainDb, head)
fmt.Println("handshake")
if err := p.Handshake(td, head, headNum, genesis, pm.server); err != nil { if err := p.Handshake(td, head, headNum, genesis, pm.server); err != nil {
glog.V(logger.Debug).Infof("%v: handshake failed: %v", p, err) glog.V(logger.Debug).Infof("%v: handshake failed: %v", p, err)
fmt.Println(" err:", err)
return err return err
} }
fmt.Println(" done")
if rw, ok := p.rw.(*meteredMsgReadWriter); ok { if rw, ok := p.rw.(*meteredMsgReadWriter); ok {
rw.Init(p.version) rw.Init(p.version)
} }
@ -316,8 +325,10 @@ func (pm *ProtocolManager) handle(p *peer) error {
// main loop. handle incoming messages. // main loop. handle incoming messages.
for { for {
fmt.Println("handleMsg")
if err := pm.handleMsg(p); err != nil { if err := pm.handleMsg(p); err != nil {
glog.V(logger.Debug).Infof("%v: message handling failed: %v", p, err) glog.V(logger.Debug).Infof("%v: message handling failed: %v", p, err)
fmt.Println(" err:", err)
return err return err
} }
} }