Skip to content
GitLab
Menu
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
e4934f10
Commit
e4934f10
authored
Feb 16, 2016
by
Jeromy
Browse files
add remote multiaddr from active connection to peerstore
parent
8c511da9
Changes
2
Hide whitespace changes
Inline
Side-by-side
p2p/protocol/identify/id.go
View file @
e4934f10
...
...
@@ -82,21 +82,21 @@ func (ids *IDService) IdentifyConn(c inet.Conn) {
log
.
Event
(
context
.
TODO
(),
"IdentifyOpenFailed"
,
c
.
RemotePeer
())
c
.
Close
()
return
}
else
{
bwc
:=
ids
.
Host
.
GetBandwidthReporter
()
s
=
mstream
.
WrapStream
(
s
,
ID
,
bwc
)
// ok give the response to our handler.
if
err
:=
msmux
.
SelectProtoOrFail
(
ID
,
s
);
err
!=
nil
{
log
.
Debugf
(
"error writing stream header for %s"
,
ID
)
log
.
Event
(
context
.
TODO
(),
"IdentifyOpenFailed"
,
c
.
RemotePeer
())
s
.
Close
()
return
}
else
{
ids
.
ResponseHandler
(
s
)
}
}
bwc
:=
ids
.
Host
.
GetBandwidthReporter
()
s
=
mstream
.
WrapStream
(
s
,
ID
,
bwc
)
// ok give the response to our handler.
if
err
:=
msmux
.
SelectProtoOrFail
(
ID
,
s
);
err
!=
nil
{
log
.
Debugf
(
"error writing stream header for %s"
,
ID
)
log
.
Event
(
context
.
TODO
(),
"IdentifyOpenFailed"
,
c
.
RemotePeer
())
s
.
Close
()
return
}
ids
.
ResponseHandler
(
s
)
ids
.
currmu
.
Lock
()
ch
,
found
:=
ids
.
currid
[
c
]
delete
(
ids
.
currid
,
c
)
...
...
@@ -190,6 +190,8 @@ func (ids *IDService) consumeMessage(mes *pb.Identify, c inet.Conn) {
lmaddrs
=
append
(
lmaddrs
,
maddr
)
}
lmaddrs
=
append
(
lmaddrs
,
c
.
RemoteMultiaddr
())
// update our peerstore with the addresses. here, we SET the addresses, clearing old ones.
// We are receiving from the peer itself. this is current address ground truth.
ids
.
Host
.
Peerstore
()
.
SetAddrs
(
p
,
lmaddrs
,
peer
.
ConnectedAddrTTL
)
...
...
p2p/protocol/identify/id_test.go
View file @
e4934f10
...
...
@@ -38,6 +38,7 @@ func subtestIDService(t *testing.T, postDialWait time.Duration) {
// the IDService should be opened automatically, by the network.
// what we should see now is that both peers know about each others listen addresses.
t
.
Log
(
"test peer1 has peer2 addrs correctly"
)
testKnowsAddrs
(
t
,
h1
,
h2p
,
h2
.
Peerstore
()
.
Addrs
(
h2p
))
// has them
testHasProtocolVersions
(
t
,
h1
,
h2p
)
...
...
@@ -49,8 +50,12 @@ func subtestIDService(t *testing.T, postDialWait time.Duration) {
}
<-
h2
.
IDService
()
.
IdentifyWait
(
c
[
0
])
addrs
:=
h1
.
Peerstore
()
.
Addrs
(
h1p
)
addrs
=
append
(
addrs
,
c
[
0
]
.
RemoteMultiaddr
())
// and the protocol versions.
testKnowsAddrs
(
t
,
h2
,
h1p
,
h1
.
Peerstore
()
.
Addrs
(
h1p
))
// has them
t
.
Log
(
"test peer2 has peer1 addrs correctly"
)
testKnowsAddrs
(
t
,
h2
,
h1p
,
addrs
)
// has them
testHasProtocolVersions
(
t
,
h2
,
h1p
)
}
...
...
@@ -58,7 +63,9 @@ func testKnowsAddrs(t *testing.T, h host.Host, p peer.ID, expected []ma.Multiadd
actual
:=
h
.
Peerstore
()
.
Addrs
(
p
)
if
len
(
actual
)
!=
len
(
expected
)
{
t
.
Error
(
"dont have the same addresses"
)
t
.
Errorf
(
"expected: %s"
,
expected
)
t
.
Errorf
(
"actual: %s"
,
actual
)
t
.
Fatal
(
"dont have the same addresses"
)
}
have
:=
map
[
string
]
struct
{}{}
...
...
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