aboutsummaryrefslogtreecommitdiffstats
path: root/p2p
diff options
context:
space:
mode:
authorFelix Lange <fjl@twurst.com>2015-05-14 09:04:04 +0800
committerFelix Lange <fjl@twurst.com>2015-05-14 20:53:29 +0800
commit691cb90284b9b63dc9c80bf0716ba35036ca78fe (patch)
treedd169615d057af4f35b619c44fb66219760749ba /p2p
parent7efeb4bd9647b6ab5376e171c1ff7cb516da5698 (diff)
downloaddexon-691cb90284b9b63dc9c80bf0716ba35036ca78fe.tar.gz
dexon-691cb90284b9b63dc9c80bf0716ba35036ca78fe.tar.zst
dexon-691cb90284b9b63dc9c80bf0716ba35036ca78fe.zip
p2p: log remote reason when disconnect is requested
The returned reason is currently not used except for the log message. This change makes the log messages a bit more useful. The handshake code also returns the remote reason.
Diffstat (limited to 'p2p')
-rw-r--r--p2p/peer.go5
-rw-r--r--p2p/peer_test.go13
2 files changed, 10 insertions, 8 deletions
diff --git a/p2p/peer.go b/p2p/peer.go
index ac691f2ce..c7ec08887 100644
--- a/p2p/peer.go
+++ b/p2p/peer.go
@@ -131,10 +131,11 @@ func (p *Peer) run() DiscReason {
case err := <-p.protoErr:
reason = discReasonForError(err)
case reason = <-p.disc:
+ p.politeDisconnect(reason)
+ reason = DiscRequested
}
close(p.closed)
- p.politeDisconnect(reason)
p.wg.Wait()
glog.V(logger.Debug).Infof("%v: Disconnected: %v\n", p, reason)
return reason
@@ -191,7 +192,7 @@ func (p *Peer) handle(msg Msg) error {
// check errors because, the connection will be closed after it.
rlp.Decode(msg.Payload, &reason)
glog.V(logger.Debug).Infof("%v: Disconnect Requested: %v\n", p, reason[0])
- return DiscRequested
+ return reason[0]
case msg.Code < baseProtocolLength:
// ignore other base protocol messages
return msg.Discard()
diff --git a/p2p/peer_test.go b/p2p/peer_test.go
index fb76818a0..7d17d447c 100644
--- a/p2p/peer_test.go
+++ b/p2p/peer_test.go
@@ -172,12 +172,13 @@ func TestPeerDisconnect(t *testing.T) {
if err := SendItems(rw, discMsg, DiscQuitting); err != nil {
t.Fatal(err)
}
- if err := ExpectMsg(rw, discMsg, []interface{}{DiscRequested}); err != nil {
- t.Error(err)
- }
- closer()
- if reason := <-disc; reason != DiscRequested {
- t.Errorf("run returned wrong reason: got %v, want %v", reason, DiscRequested)
+ select {
+ case reason := <-disc:
+ if reason != DiscQuitting {
+ t.Errorf("run returned wrong reason: got %v, want %v", reason, DiscRequested)
+ }
+ case <-time.After(500 * time.Millisecond):
+ t.Error("peer did not return")
}
}