From feaea31b787070f4ea45c4829d4833d728a15d6f Mon Sep 17 00:00:00 2001 From: madmaxoft Date: Wed, 30 Oct 2013 23:38:55 +0100 Subject: Protocol 1.7: Added status ping handling. --- source/Protocol/Protocol17x.cpp | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'source/Protocol/Protocol17x.cpp') diff --git a/source/Protocol/Protocol17x.cpp b/source/Protocol/Protocol17x.cpp index b93a95e12..aef1cc8c2 100644 --- a/source/Protocol/Protocol17x.cpp +++ b/source/Protocol/Protocol17x.cpp @@ -103,6 +103,7 @@ void cProtocol172::HandlePacket(UInt32 a_PacketType, UInt32 a_RemainingBytes) switch (a_PacketType) { case 0x00: HandlePacketStatusRequest(a_RemainingBytes); return; + case 0x01: HandlePacketStatusPing (a_RemainingBytes); return; } break; } @@ -157,6 +158,30 @@ void cProtocol172::HandlePacketStatusRequest(UInt32 a_RemainingBytes) +void cProtocol172::HandlePacketStatusPing(UInt32 a_RemainingBytes) +{ + ASSERT(a_RemainingBytes == 8); + if (a_RemainingBytes != 8) + { + m_Client->PacketError(0x01); + m_ReceivedData.SkipRead(a_RemainingBytes); + m_ReceivedData.CommitRead(); + return; + } + Int64 Timestamp; + m_ReceivedData.ReadBEInt64(Timestamp); + m_ReceivedData.CommitRead(); + + cByteBuffer Packet(18); + Packet.WriteVarInt(0x01); + Packet.WriteBEInt64(Timestamp); + WritePacket(Packet); +} + + + + + void cProtocol172::WritePacket(cByteBuffer & a_Packet) { cCSLock Lock(m_CSPacket); -- cgit v1.2.3