Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
Geth-Modification
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
张蕾
Geth-Modification
Commits
f9aa1cd2
Commit
f9aa1cd2
authored
Mar 02, 2019
by
Anton Evangelatov
Committed by
Viktor Trón
Mar 02, 2019
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Revert "swarm/network: Use actual remote peer ip in underlay (#19137)" (#19193)
This reverts commit
460d206f
.
parent
b797dd07
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
1 addition
and
46 deletions
+1
-46
protocol.go
swarm/network/protocol.go
+1
-20
protocol_test.go
swarm/network/protocol_test.go
+0
-26
No files found.
swarm/network/protocol.go
View file @
f9aa1cd2
...
...
@@ -21,7 +21,6 @@ import (
"errors"
"fmt"
"net"
"regexp"
"sync"
"time"
...
...
@@ -40,8 +39,6 @@ const (
bzzHandshakeTimeout
=
3000
*
time
.
Millisecond
)
var
regexpEnodeIP
=
regexp
.
MustCompile
(
"@(.+):([0-9]+)"
)
// BzzSpec is the spec of the generic swarm handshake
var
BzzSpec
=
&
protocols
.
Spec
{
Name
:
"bzz"
,
...
...
@@ -217,26 +214,10 @@ func (b *Bzz) performHandshake(p *protocols.Peer, handshake *HandshakeMsg) error
return
err
}
handshake
.
peerAddr
=
rsh
.
(
*
HandshakeMsg
)
.
Addr
sanitizeEnodeRemote
(
p
.
RemoteAddr
(),
handshake
.
peerAddr
)
handshake
.
LightNode
=
rsh
.
(
*
HandshakeMsg
)
.
LightNode
return
nil
}
// the remote enode string may advertise arbitrary host information (e.g. localhost)
// this method ensures that the addr of the peer will be the one
// applicable on the interface the connection came in on
// it modifies the passed bzzaddr in place, and returns the same pointer
func
sanitizeEnodeRemote
(
paddr
net
.
Addr
,
baddr
*
BzzAddr
)
{
hsSubmatch
:=
regexpEnodeIP
.
FindSubmatch
(
baddr
.
UAddr
)
ip
,
_
,
err
:=
net
.
SplitHostPort
(
paddr
.
String
())
// since we expect nothing else than ipv4 here, a panic on missing submatch is desired
if
err
==
nil
&&
string
(
hsSubmatch
[
1
])
!=
ip
{
remoteStr
:=
fmt
.
Sprintf
(
"@%s:%s"
,
ip
,
string
(
hsSubmatch
[
2
]))
log
.
Debug
(
"rewrote peer uaddr host/port"
,
"addr"
,
baddr
)
baddr
.
UAddr
=
regexpEnodeIP
.
ReplaceAll
(
baddr
.
UAddr
,
[]
byte
(
remoteStr
))
}
}
// runBzz is the p2p protocol run function for the bzz base protocol
// that negotiates the bzz handshake
func
(
b
*
Bzz
)
runBzz
(
p
*
p2p
.
Peer
,
rw
p2p
.
MsgReadWriter
)
error
{
...
...
@@ -343,7 +324,7 @@ func (b *Bzz) GetOrCreateHandshake(peerID enode.ID) (*HandshakeMsg, bool) {
init
:
make
(
chan
bool
,
1
),
done
:
make
(
chan
struct
{}),
}
// when hand
sh
ake is first created for a remote peer
// when hand
hs
ake is first created for a remote peer
// it is initialised with the init
handshake
.
init
<-
true
b
.
handshakes
[
peerID
]
=
handshake
...
...
swarm/network/protocol_test.go
View file @
f9aa1cd2
...
...
@@ -17,15 +17,12 @@
package
network
import
(
"bytes"
"flag"
"fmt"
"net"
"os"
"testing"
"time"
"github.com/ethereum/go-ethereum/crypto"
"github.com/ethereum/go-ethereum/log"
"github.com/ethereum/go-ethereum/p2p"
"github.com/ethereum/go-ethereum/p2p/enode"
...
...
@@ -254,26 +251,3 @@ func TestBzzHandshakeLightNode(t *testing.T) {
})
}
}
// Tests the overwriting of localhost enode in handshake if actual remote ip is known
// (swarm.network/protocol.go:sanitizeEnodeRemote)
func
TestSanitizeEnodeRemote
(
t
*
testing
.
T
)
{
pk
,
err
:=
crypto
.
GenerateKey
()
if
err
!=
nil
{
t
.
Fatal
(
err
)
}
remoteIP
:=
net
.
IPv4
(
0x80
,
0x40
,
0x20
,
0x10
)
remoteAddr
:=
net
.
TCPAddr
{
IP
:
remoteIP
,
Port
:
30399
,
}
nodLocal
:=
enode
.
NewV4
(
&
pk
.
PublicKey
,
net
.
IPv4
(
0x7f
,
0x00
,
0x00
,
0x01
),
30341
,
30341
)
nodRemote
:=
enode
.
NewV4
(
&
pk
.
PublicKey
,
remoteIP
,
30341
,
30341
)
baddr
:=
RandomAddr
()
oldUAddr
:=
[]
byte
(
nodLocal
.
String
())
baddr
.
UAddr
=
oldUAddr
sanitizeEnodeRemote
(
&
remoteAddr
,
baddr
)
if
!
bytes
.
Equal
(
baddr
.
UAddr
,
[]
byte
(
nodRemote
.
String
()))
{
t
.
Fatalf
(
"insane address. expected %v, got %v"
,
nodRemote
.
String
(),
string
(
baddr
.
UAddr
))
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment