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
f3c4a0c4
Commit
f3c4a0c4
authored
6 years ago
by
vyzo
Browse files
Options
Download
Email Patches
Plain Diff
fix relay-specific address dialing in routed host
parent
27f502e5
master
fix/473
fix/no-custom-field
punching
v6.0.23
v6.0.22
v6.0.21
v6.0.20
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
p2p/host/routed/routed.go
+37
-0
p2p/host/routed/routed.go
with
37 additions
and
0 deletions
+37
-0
p2p/host/routed/routed.go
View file @
f3c4a0c4
...
...
@@ -8,6 +8,7 @@ import (
host
"github.com/libp2p/go-libp2p-host"
logging
"github.com/ipfs/go-log"
circuit
"github.com/libp2p/go-libp2p-circuit"
ifconnmgr
"github.com/libp2p/go-libp2p-interface-connmgr"
lgbl
"github.com/libp2p/go-libp2p-loggables"
inet
"github.com/libp2p/go-libp2p-net"
...
...
@@ -67,6 +68,42 @@ func (rh *RoutedHost) Connect(ctx context.Context, pi pstore.PeerInfo) error {
}
}
// Issue 448: if our address set includes specific relay addrs, we need
// to make sure the relay's addr itself is in the peerstore or else
// we wont be able to dial it.
for
_
,
addr
:=
range
addrs
{
_
,
err
:=
addr
.
ValueForProtocol
(
circuit
.
P_CIRCUIT
)
if
err
!=
nil
{
// not a relay address
continue
}
relay
,
err
:=
addr
.
ValueForProtocol
(
ma
.
P_P2P
)
if
err
!=
nil
{
// not a specific relay address
continue
}
relayID
,
err
:=
peer
.
IDFromString
(
relay
)
if
err
!=
nil
{
log
.
Debugf
(
"failed to parse relay ID in address %s: %s"
,
relay
,
err
)
continue
}
if
len
(
rh
.
Peerstore
()
.
Addrs
(
relayID
))
>
0
{
// we already have addrs for this relay
continue
}
relayAddrs
,
err
:=
rh
.
findPeerAddrs
(
ctx
,
relayID
)
if
err
!=
nil
{
log
.
Debugf
(
"failed to find relay %s: %s"
,
relay
,
err
)
continue
}
rh
.
Peerstore
()
.
AddAddrs
(
relayID
,
relayAddrs
,
pstore
.
AddressTTL
)
}
// if we're here, we got some addrs. let's use our wrapped host to connect.
pi
.
Addrs
=
addrs
return
rh
.
host
.
Connect
(
ctx
,
pi
)
...
...
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