lib/protocol: Remove support for v0.13 hello messages (#5461)

This commit is contained in:
Jakob Borg
2019-01-17 20:48:43 +01:00
committed by GitHub
parent c2cc1dadea
commit 76af0cf07b
5 changed files with 37 additions and 255 deletions

View File

@@ -26,12 +26,9 @@ type HelloResult struct {
}
var (
// ErrTooOldVersion12 is returned by ExchangeHello when the other side
// speaks the older, incompatible version 0.12 of the protocol.
ErrTooOldVersion12 = errors.New("the remote device speaks an older version of the protocol (v0.12) not compatible with this version")
// ErrTooOldVersion13 is returned by ExchangeHello when the other side
// speaks the older, incompatible version 0.12 of the protocol.
ErrTooOldVersion13 = errors.New("the remote device speaks an older version of the protocol (v0.13) not compatible with this version")
// ErrTooOldVersion is returned by ExchangeHello when the other side
// speaks an older, incompatible version of the protocol.
ErrTooOldVersion = errors.New("the remote device speaks an older version of the protocol not compatible with this version")
// ErrUnknownMagic is returned by ExchangeHellow when the other side
// speaks something entirely unknown.
ErrUnknownMagic = errors.New("the remote device speaks an unknown (newer?) version of the protocol")
@@ -48,7 +45,7 @@ func ExchangeHello(c io.ReadWriter, h HelloIntf) (HelloResult, error) {
// version mismatch that we might want to alert the user about.
func IsVersionMismatch(err error) bool {
switch err {
case ErrTooOldVersion12, ErrTooOldVersion13, ErrUnknownMagic:
case ErrTooOldVersion, ErrUnknownMagic:
return true
default:
return false
@@ -87,31 +84,11 @@ func readHello(c io.Reader) (HelloResult, error) {
}
return res, nil
case Version13HelloMagic:
// This is a v0.13 Hello message in XDR format
if _, err := io.ReadFull(c, header[:4]); err != nil {
return HelloResult{}, err
}
msgSize := binary.BigEndian.Uint32(header[:4])
if msgSize > 1024 {
return HelloResult{}, fmt.Errorf("hello message too big")
}
buf := make([]byte, msgSize)
if _, err := io.ReadFull(c, buf); err != nil {
return HelloResult{}, err
}
var hello Version13HelloMessage
if err := hello.UnmarshalXDR(buf); err != nil {
return HelloResult{}, err
}
res := HelloResult(hello)
return res, ErrTooOldVersion13
case 0x00010001, 0x00010000:
// This is the first word of a v0.12 cluster config message.
// (Version 0, message ID 1, message type 0, compression enabled or disabled)
return HelloResult{}, ErrTooOldVersion12
case 0x00010001, 0x00010000, Version13HelloMagic:
// This is the first word of an older cluster config message or an
// old magic number. (Version 0, message ID 1, message type 0,
// compression enabled or disabled)
return HelloResult{}, ErrTooOldVersion
}
return HelloResult{}, ErrUnknownMagic