ignore protocol minor version 0

The change from 0 -> 1 included incompatible changes
to CMD_BEACON and several others.

Ignore any UDP messages (beacon or search),
and disconnect any TCP peers, with version==0.
This commit is contained in:
Michael Davidsaver
2019-03-06 15:52:49 -08:00
parent dfeb9fd5a5
commit 1ea70a302b
3 changed files with 12 additions and 4 deletions

View File

@ -120,6 +120,10 @@ bool processSearchResponse(osiSockAddr const & responseFrom, ByteBuffer & receiv
// second byte version
int8 version = receiveBuffer.getByte();
if(version == 0) {
// 0 -> 1 included incompatible changes
return false;
}
// only data for UDP
int8 flags = receiveBuffer.getByte();

View File

@ -341,6 +341,10 @@ bool BlockingUDPTransport::processBuffer(Transport::shared_pointer const & trans
// second byte version
int8 version = receiveBuffer->getByte();
if(version==0) {
// 0 -> 1 included incompatible changes
return false;
}
int8 flags = receiveBuffer->getByte();
if (flags & 0x80)

View File

@ -159,12 +159,12 @@ void AbstractCodec::processHeader() {
_payloadSize = _socketBuffer.getInt();
// check magic code
if (magicCode != PVA_MAGIC)
if (magicCode != PVA_MAGIC || _version==0)
{
LOG(logLevelError,
"Invalid header received from the client at %s:%d: %s.,"
" disconnecting...",
__FILE__, __LINE__, inetAddressToString(*getLastReadBufferSocketAddress()).c_str());
"Invalid header received from the client : %s %02x%02x%02x%02x disconnecting...",
inetAddressToString(*getLastReadBufferSocketAddress()).c_str(),
unsigned(magicCode), unsigned(_version), unsigned(_flags), unsigned(_command));
invalidDataStreamHandler();
throw invalid_data_stream_exception("invalid header received");
}