mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-18 10:50:44 +00:00
cmd/devp2p: fix discv5 PingMultiIP handshake reply addr
Signed-off-by: Delweng <delweng@gmail.com>
This commit is contained in:
parent
db7d3a4e0e
commit
0f2eb27996
1 changed files with 7 additions and 1 deletions
|
|
@ -65,6 +65,7 @@ type conn struct {
|
||||||
log logger
|
log logger
|
||||||
codec *v5wire.Codec
|
codec *v5wire.Codec
|
||||||
idCounter uint32
|
idCounter uint32
|
||||||
|
lastFrom string
|
||||||
}
|
}
|
||||||
|
|
||||||
type logger interface {
|
type logger interface {
|
||||||
|
|
@ -200,7 +201,11 @@ func (tc *conn) findnode(c net.PacketConn, dists []uint) ([]*enode.Node, error)
|
||||||
|
|
||||||
// write sends a packet on the given connection.
|
// write sends a packet on the given connection.
|
||||||
func (tc *conn) write(c net.PacketConn, p v5wire.Packet, challenge *v5wire.Whoareyou) v5wire.Nonce {
|
func (tc *conn) write(c net.PacketConn, p v5wire.Packet, challenge *v5wire.Whoareyou) v5wire.Nonce {
|
||||||
packet, nonce, err := tc.codec.Encode(tc.remote.ID(), tc.remoteAddr.String(), p, challenge)
|
addr := tc.remoteAddr.String()
|
||||||
|
if challenge != nil && tc.lastFrom != "" {
|
||||||
|
addr = tc.lastFrom
|
||||||
|
}
|
||||||
|
packet, nonce, err := tc.codec.Encode(tc.remote.ID(), addr, p, challenge)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(fmt.Errorf("can't encode %v packet: %v", p.Name(), err))
|
panic(fmt.Errorf("can't encode %v packet: %v", p.Name(), err))
|
||||||
}
|
}
|
||||||
|
|
@ -222,6 +227,7 @@ func (tc *conn) read(c net.PacketConn) v5wire.Packet {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return &readError{err}
|
return &readError{err}
|
||||||
}
|
}
|
||||||
|
tc.lastFrom = fromAddr.String()
|
||||||
_, _, p, err := tc.codec.Decode(buf[:n], fromAddr.String())
|
_, _, p, err := tc.codec.Decode(buf[:n], fromAddr.String())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return &readError{err}
|
return &readError{err}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue