mirror of https://github.com/status-im/op-geth.git
initial hook for crypto handshake (void, off by default)
This commit is contained in:
parent
6b5f25802e
commit
c8a8aa0d43
26
p2p/peer.go
26
p2p/peer.go
|
@ -70,6 +70,7 @@ type Peer struct {
|
||||||
// These fields maintain the running protocols.
|
// These fields maintain the running protocols.
|
||||||
protocols []Protocol
|
protocols []Protocol
|
||||||
runBaseProtocol bool // for testing
|
runBaseProtocol bool // for testing
|
||||||
|
cryptoHandshake bool // for testing
|
||||||
|
|
||||||
runlock sync.RWMutex // protects running
|
runlock sync.RWMutex // protects running
|
||||||
running map[string]*proto
|
running map[string]*proto
|
||||||
|
@ -141,6 +142,20 @@ func (p *Peer) Identity() ClientIdentity {
|
||||||
return p.identity
|
return p.identity
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (self *Peer) Pubkey() (pubkey []byte) {
|
||||||
|
self.infolock.Lock()
|
||||||
|
defer self.infolock.Unlock()
|
||||||
|
switch {
|
||||||
|
case self.identity != nil:
|
||||||
|
pubkey = self.identity.Pubkey()
|
||||||
|
case self.dialAddr != nil:
|
||||||
|
pubkey = self.dialAddr.Pubkey
|
||||||
|
case self.listenAddr != nil:
|
||||||
|
pubkey = self.listenAddr.Pubkey
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
// Caps returns the capabilities (supported subprotocols) of the remote peer.
|
// Caps returns the capabilities (supported subprotocols) of the remote peer.
|
||||||
func (p *Peer) Caps() []Cap {
|
func (p *Peer) Caps() []Cap {
|
||||||
p.infolock.Lock()
|
p.infolock.Lock()
|
||||||
|
@ -207,6 +222,12 @@ func (p *Peer) loop() (reason DiscReason, err error) {
|
||||||
defer close(p.closed)
|
defer close(p.closed)
|
||||||
defer p.conn.Close()
|
defer p.conn.Close()
|
||||||
|
|
||||||
|
if p.cryptoHandshake {
|
||||||
|
if err := p.handleCryptoHandshake(); err != nil {
|
||||||
|
return DiscProtocolError, err // no graceful disconnect
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// read loop
|
// read loop
|
||||||
readMsg := make(chan Msg)
|
readMsg := make(chan Msg)
|
||||||
readErr := make(chan error)
|
readErr := make(chan error)
|
||||||
|
@ -307,6 +328,11 @@ func (p *Peer) dispatch(msg Msg, protoDone chan struct{}) (wait bool, err error)
|
||||||
return wait, nil
|
return wait, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (p *Peer) handleCryptoHandshake() (err error) {
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (p *Peer) startBaseProtocol() {
|
func (p *Peer) startBaseProtocol() {
|
||||||
p.runlock.Lock()
|
p.runlock.Lock()
|
||||||
defer p.runlock.Unlock()
|
defer p.runlock.Unlock()
|
||||||
|
|
Loading…
Reference in New Issue