diff options
author | Felix Lange <fjl@twurst.com> | 2014-12-12 18:58:39 +0800 |
---|---|---|
committer | Felix Lange <fjl@twurst.com> | 2014-12-15 07:28:20 +0800 |
commit | f0f672777866a524c36e767a6c313f93f574dd8c (patch) | |
tree | 4d9424c3a42153d412f6a4aac31208071a7001cc /p2p | |
parent | 65e39bf20eecf7f3296fba531efb72ac28dc0124 (diff) | |
download | dexon-f0f672777866a524c36e767a6c313f93f574dd8c.tar.gz dexon-f0f672777866a524c36e767a6c313f93f574dd8c.tar.zst dexon-f0f672777866a524c36e767a6c313f93f574dd8c.zip |
p2p: use an error type for disconnect requests
Test-tastic.
Diffstat (limited to 'p2p')
-rw-r--r-- | p2p/peer_error.go | 9 | ||||
-rw-r--r-- | p2p/protocol.go | 3 |
2 files changed, 10 insertions, 2 deletions
diff --git a/p2p/peer_error.go b/p2p/peer_error.go index 88b870fbd..0eb7ec838 100644 --- a/p2p/peer_error.go +++ b/p2p/peer_error.go @@ -100,7 +100,16 @@ func (d DiscReason) String() string { return discReasonToString[d] } +type discRequestedError DiscReason + +func (err discRequestedError) Error() string { + return fmt.Sprintf("disconnect requested: %v", DiscReason(err)) +} + func discReasonForError(err error) DiscReason { + if reason, ok := err.(discRequestedError); ok { + return DiscReason(reason) + } peerError, ok := err.(*peerError) if !ok { return DiscSubprotocolError diff --git a/p2p/protocol.go b/p2p/protocol.go index 5af586f13..3f52205f5 100644 --- a/p2p/protocol.go +++ b/p2p/protocol.go @@ -158,8 +158,7 @@ func (bp *baseProtocol) handle(rw MsgReadWriter) error { if err := msg.Decode(&reason); err != nil { return err } - bp.peer.Disconnect(reason[0]) - return nil + return discRequestedError(reason[0]) case pingMsg: return bp.rw.EncodeMsg(pongMsg) |