Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
adam.huang
go-libp2p
Commits
d8468400
Commit
d8468400
authored
8 years ago
by
Jeromy Johnson
Committed by
GitHub
8 years ago
Browse files
Options
Download
Plain Diff
Merge pull request #80 from libp2p/lint/fix-some-linting
lint: fixed a bunch of issues reported by gometalinter
parents
3c597252
e90e0170
master
2018-Q4-OKR
docs-improvements
feat/backoff-listing
feat/p2p-multiaddr
feat/pnet/working3
feat/protobuf
feat/relay-integrate
feat/udp
feat/update/go-reuseport
feature/standardize-readme
fix/473
fix/no-custom-field
fix/reset-ping-stream
fix/revert-correct-external-addr
gx/update-jccl6u
gx/update-nza0mn
jenkinsfile
kevina/fix-go-vet
multistream-ping
punching
revert-276-update-go-detect-race
v6.0.23
v6.0.22
v6.0.21
v6.0.20
v6.0.19
v6.0.18
v6.0.17
v6.0.16
v6.0.15
v6.0.14
v6.0.13
v6.0.12
v6.0.11
v6.0.10
v6.0.9
v6.0.8
v6.0.7
v6.0.6
v6.0.5
v6.0.4
v6.0.3
v6.0.2
v6.0.1
v6.0.0
v5.0.21
v5.0.20
v5.0.19
v5.0.18
v5.0.17
v5.0.16
v5.0.15
v5.0.14
v5.0.13
v5.0.12
v5.0.11
v5.0.10
v5.0.9
v5.0.8
v5.0.7
v5.0.6
v5.0.5
v5.0.4
v5.0.3
v5.0.2
v5.0.1
v5.0.0
v4.5.5
v4.5.4
v4.5.3
v4.5.2
v4.5.1
v4.5.0
v4.4.5
v4.4.4
v4.4.3
v4.4.2
v4.4.1
v4.4.0
v4.3.12
v4.3.11
v4.3.10
v4.3.9
v4.3.8
v4.3.7
v4.3.6
v4.3.5
v4.3.4
v4.3.3
v4.3.2
v4.3.1
v4.3.0
v4.2.0
v4.1.0
v4.0.4
v4.0.3
v4.0.2
v4.0.1
v4.0.0
v3.6.0
v3.5.4
v3.5.3
v3.5.2
v3.5.1
v3.5.0
v3.4.3
v3.4.2
v3.4.1
v3.4.0
No related merge requests found
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
p2p/net/swarm/limiter_test.go
+11
-11
p2p/net/swarm/limiter_test.go
p2p/net/swarm/swarm.go
+7
-1
p2p/net/swarm/swarm.go
p2p/net/swarm/swarm_addr_test.go
+1
-1
p2p/net/swarm/swarm_addr_test.go
p2p/net/swarm/swarm_conn.go
+2
-1
p2p/net/swarm/swarm_conn.go
p2p/net/swarm/swarm_dial.go
+15
-9
p2p/net/swarm/swarm_dial.go
p2p/net/swarm/swarm_net.go
+2
-2
p2p/net/swarm/swarm_net.go
p2p/net/swarm/swarm_stream.go
+1
-1
p2p/net/swarm/swarm_stream.go
with
39 additions
and
26 deletions
+39
-26
p2p/net/swarm/limiter_test.go
View file @
d8468400
...
...
@@ -63,10 +63,10 @@ func hangDialFunc(hang chan struct{}) dialfunc {
if
tcpPortOver
(
a
,
10
)
{
return
conn
.
Conn
(
nil
),
nil
}
else
{
<-
hang
return
nil
,
fmt
.
Errorf
(
"test bad dial"
)
}
<-
hang
return
nil
,
fmt
.
Errorf
(
"test bad dial"
)
}
}
...
...
@@ -127,7 +127,7 @@ func TestFDLimiting(t *testing.T) {
bads
:=
[]
ma
.
Multiaddr
{
addrWithPort
(
t
,
1
),
addrWithPort
(
t
,
2
),
addrWithPort
(
t
,
3
),
addrWithPort
(
t
,
4
)}
pids
:=
[]
peer
.
ID
{
"testpeer1"
,
"testpeer2"
,
"testpeer3"
,
"testpeer4"
}
good
_tcp
:=
addrWithPort
(
t
,
20
)
good
TCP
:=
addrWithPort
(
t
,
20
)
ctx
:=
context
.
Background
()
resch
:=
make
(
chan
dialResult
)
...
...
@@ -143,7 +143,7 @@ func TestFDLimiting(t *testing.T) {
l
.
AddDialJob
(
&
dialJob
{
ctx
:
ctx
,
peer
:
pid
,
addr
:
good
_tcp
,
addr
:
good
TCP
,
resp
:
resch
,
})
}
...
...
@@ -175,10 +175,10 @@ func TestTokenRedistribution(t *testing.T) {
df
:=
func
(
ctx
context
.
Context
,
p
peer
.
ID
,
a
ma
.
Multiaddr
)
(
conn
.
Conn
,
error
)
{
if
tcpPortOver
(
a
,
10
)
{
return
(
conn
.
Conn
)(
nil
),
nil
}
else
{
<-
hangchs
[
p
]
return
nil
,
fmt
.
Errorf
(
"test bad dial"
)
}
<-
hangchs
[
p
]
return
nil
,
fmt
.
Errorf
(
"test bad dial"
)
}
l
:=
newDialLimiterWithParams
(
df
,
8
,
4
)
...
...
@@ -264,10 +264,10 @@ func TestStressLimiter(t *testing.T) {
df
:=
func
(
ctx
context
.
Context
,
p
peer
.
ID
,
a
ma
.
Multiaddr
)
(
conn
.
Conn
,
error
)
{
if
tcpPortOver
(
a
,
1000
)
{
return
conn
.
Conn
(
nil
),
nil
}
else
{
time
.
Sleep
(
time
.
Millisecond
*
time
.
Duration
(
5
+
rand
.
Intn
(
100
)))
return
nil
,
fmt
.
Errorf
(
"test bad dial"
)
}
time
.
Sleep
(
time
.
Millisecond
*
time
.
Duration
(
5
+
rand
.
Intn
(
100
)))
return
nil
,
fmt
.
Errorf
(
"test bad dial"
)
}
l
:=
newDialLimiterWithParams
(
df
,
20
,
5
)
...
...
This diff is collapsed.
Click to expand it.
p2p/net/swarm/swarm.go
View file @
d8468400
//
p
ackage swarm implements a connection muxer with a pair of channels
//
P
ackage swarm implements a connection muxer with a pair of channels
// to synchronize all network communication.
package
swarm
...
...
@@ -34,6 +34,8 @@ import (
var
log
=
logging
.
Logger
(
"swarm2"
)
// PSTransport is the default peerstream transport that will be used by
// any libp2p swarms.
var
PSTransport
pst
.
Transport
func
init
()
{
...
...
@@ -143,6 +145,8 @@ func (s *Swarm) teardown() error {
return
s
.
swarm
.
Close
()
}
// AddAddrFilter adds a multiaddr filter to the set of filters the swarm will
// use to determine which addresses not to dial to.
func
(
s
*
Swarm
)
AddAddrFilter
(
f
string
)
error
{
m
,
err
:=
mafilter
.
NewMask
(
f
)
if
err
!=
nil
{
...
...
@@ -165,6 +169,7 @@ func filterAddrs(listenAddrs []ma.Multiaddr) ([]ma.Multiaddr, error) {
return
listenAddrs
,
nil
}
// Listen sets up listeners for all of the given addresses
func
(
s
*
Swarm
)
Listen
(
addrs
...
ma
.
Multiaddr
)
error
{
addrs
,
err
:=
filterAddrs
(
addrs
)
if
err
!=
nil
{
...
...
@@ -286,6 +291,7 @@ func (s *Swarm) LocalPeer() peer.ID {
return
s
.
local
}
// Backoff returns the dialbackoff object for this swarm.
func
(
s
*
Swarm
)
Backoff
()
*
dialbackoff
{
return
&
s
.
backf
}
...
...
This diff is collapsed.
Click to expand it.
p2p/net/swarm/swarm_addr_test.go
View file @
d8468400
...
...
@@ -113,7 +113,7 @@ func TestDialBadAddrs(t *testing.T) {
p
:=
testutil
.
RandPeerIDFatal
(
t
)
s
.
peers
.
AddAddr
(
p
,
a
,
pstore
.
PermanentAddrTTL
)
if
_
,
err
:=
s
.
Dial
(
ctx
,
p
);
err
==
nil
{
t
.
Error
(
"swarm should not dial: %s"
,
m
)
t
.
Error
f
(
"swarm should not dial: %s"
,
p
)
}
}
...
...
This diff is collapsed.
Click to expand it.
p2p/net/swarm/swarm_conn.go
View file @
d8468400
...
...
@@ -13,7 +13,7 @@ import (
context
"golang.org/x/net/context"
)
//
a
Conn is a simple wrapper around a ps.Conn that also exposes
// Conn is a simple wrapper around a ps.Conn that also exposes
// some of the methods from the underlying conn.Conn.
// There's **five** "layers" to each connection:
// * 0. the net.Conn - underlying net.Conn (TCP/UDP/UTP/etc)
...
...
@@ -87,6 +87,7 @@ func (c *Conn) NewStream() (inet.Stream, error) {
return
inet
.
Stream
(
s
),
err
}
// Close closes the underlying stream connection
func
(
c
*
Conn
)
Close
()
error
{
return
c
.
StreamConn
()
.
Close
()
}
...
...
This diff is collapsed.
Click to expand it.
p2p/net/swarm/swarm_dial.go
View file @
d8468400
...
...
@@ -26,9 +26,15 @@ import (
// retry dialAttempt x
var
(
// ErrDialBackoff is returned by the backoff code when a given peer has
// been dialed too frequently
ErrDialBackoff
=
errors
.
New
(
"dial backoff"
)
ErrDialFailed
=
errors
.
New
(
"dial attempt failed"
)
ErrDialToSelf
=
errors
.
New
(
"dial to self attempted"
)
// ErrDialFailed is returned when connecting to a peer has ultimately failed
ErrDialFailed
=
errors
.
New
(
"dial attempt failed"
)
// ErrDialToSelf is returned if we attempt to dial our own peer
ErrDialToSelf
=
errors
.
New
(
"dial to self attempted"
)
)
// dialAttempts governs how many times a goroutine will try to dial a given peer.
...
...
@@ -45,7 +51,7 @@ const defaultPerPeerRateLimit = 8
// DialTimeout is the amount of time each dial attempt has. We can think about making
// this larger down the road, or putting more granular timeouts (i.e. within each
// subcomponent of Dial)
var
DialTimeout
time
.
Duration
=
time
.
Second
*
10
var
DialTimeout
=
time
.
Second
*
10
// dialsync is a small object that helps manage ongoing dials.
// this way, if we receive many simultaneous dial requests, one
...
...
@@ -320,13 +326,13 @@ func (s *Swarm) dial(ctx context.Context, p peer.ID) (*Conn, error) {
}
ila
,
_
:=
s
.
InterfaceListenAddresses
()
subtract
_f
ilter
:=
addrutil
.
SubtractFilter
(
append
(
ila
,
s
.
peers
.
Addrs
(
s
.
local
)
...
)
...
)
subtract
F
ilter
:=
addrutil
.
SubtractFilter
(
append
(
ila
,
s
.
peers
.
Addrs
(
s
.
local
)
...
)
...
)
// get live channel of addresses for peer, filtered by the given filters
/*
remoteAddrChan := s.peers.AddrsChan(ctx, p,
addrutil.AddrUsableFilter,
subtract
_f
ilter,
subtract
F
ilter,
s.Filters.AddrBlocked)
*/
...
...
@@ -339,13 +345,13 @@ func (s *Swarm) dial(ctx context.Context, p peer.ID) (*Conn, error) {
that we previously had (halting a dial when we run out of addrs)
*/
paddrs
:=
s
.
peers
.
Addrs
(
p
)
good
_a
ddrs
:=
addrutil
.
FilterAddrs
(
paddrs
,
good
A
ddrs
:=
addrutil
.
FilterAddrs
(
paddrs
,
addrutil
.
AddrUsableFunc
,
subtract
_f
ilter
,
subtract
F
ilter
,
addrutil
.
FilterNeg
(
s
.
Filters
.
AddrBlocked
),
)
remoteAddrChan
:=
make
(
chan
ma
.
Multiaddr
,
len
(
good
_a
ddrs
))
for
_
,
a
:=
range
good
_a
ddrs
{
remoteAddrChan
:=
make
(
chan
ma
.
Multiaddr
,
len
(
good
A
ddrs
))
for
_
,
a
:=
range
good
A
ddrs
{
remoteAddrChan
<-
a
}
close
(
remoteAddrChan
)
...
...
This diff is collapsed.
Click to expand it.
p2p/net/swarm/swarm_net.go
View file @
d8468400
...
...
@@ -63,7 +63,7 @@ func (n *Network) Peers() []peer.ID {
return
n
.
Swarm
()
.
Peers
()
}
// Peers returns the Peerstore, which tracks known peers
// Peers
tore
returns the Peerstore, which tracks known peers
func
(
n
*
Network
)
Peerstore
()
pstore
.
Peerstore
{
return
n
.
Swarm
()
.
peers
}
...
...
@@ -142,7 +142,7 @@ func (n *Network) NewStream(ctx context.Context, p peer.ID) (inet.Stream, error)
return
inet
.
Stream
(
s
),
nil
}
// SetHandler sets the protocol handler on the Network's Muxer.
// Set
Stream
Handler sets the protocol handler on the Network's Muxer.
// This operation is threadsafe.
func
(
n
*
Network
)
SetStreamHandler
(
h
inet
.
StreamHandler
)
{
n
.
Swarm
()
.
SetStreamHandler
(
h
)
...
...
This diff is collapsed.
Click to expand it.
p2p/net/swarm/swarm_stream.go
View file @
d8468400
...
...
@@ -6,7 +6,7 @@ import (
ps
"github.com/jbenet/go-peerstream"
)
//
a
Stream is a wrapper around a ps.Stream that exposes a way to get
// Stream is a wrapper around a ps.Stream that exposes a way to get
// our Conn and Swarm (instead of just the ps.Conn and ps.Swarm)
type
Stream
struct
{
stream
*
ps
.
Stream
...
...
This diff is collapsed.
Click to expand it.
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
Menu
Projects
Groups
Snippets
Help