p2p: use an error type for disconnect requests

Test-tastic.
pull/204/head
Felix Lange 10 years ago
parent 65e39bf20e
commit f0f6727778
  1. 9
      p2p/peer_error.go
  2. 3
      p2p/protocol.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

@ -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)

Loading…
Cancel
Save