forked from Mirrorlandia_minetest/minetest
Client: better m_proto_ver initialisation
Previously, m_proto_ver was set to the serialisation version inside the legacy init packet. Now, if the server doesn't send a protocol version (protocols < 25), we set m_proto_ver to some value < 25 and > 0.
This commit is contained in:
parent
a93838707a
commit
d92d376148
@ -229,6 +229,7 @@ Client::Client(
|
|||||||
m_con(PROTOCOL_ID, 512, CONNECTION_TIMEOUT, ipv6, this),
|
m_con(PROTOCOL_ID, 512, CONNECTION_TIMEOUT, ipv6, this),
|
||||||
m_device(device),
|
m_device(device),
|
||||||
m_server_ser_ver(SER_FMT_VER_INVALID),
|
m_server_ser_ver(SER_FMT_VER_INVALID),
|
||||||
|
m_proto_ver(0),
|
||||||
m_playeritem(0),
|
m_playeritem(0),
|
||||||
m_inventory_updated(false),
|
m_inventory_updated(false),
|
||||||
m_inventory_from_server(NULL),
|
m_inventory_from_server(NULL),
|
||||||
|
@ -595,8 +595,14 @@ private:
|
|||||||
Mapper *m_mapper;
|
Mapper *m_mapper;
|
||||||
// Server serialization version
|
// Server serialization version
|
||||||
u8 m_server_ser_ver;
|
u8 m_server_ser_ver;
|
||||||
|
|
||||||
// Used version of the protocol with server
|
// Used version of the protocol with server
|
||||||
|
// Values smaller than 25 only mean they are smaller than 25,
|
||||||
|
// and aren't accurate. We simply just don't know, because
|
||||||
|
// the server didn't send the version back then.
|
||||||
|
// If 0, server init hasn't been received yet.
|
||||||
u8 m_proto_ver;
|
u8 m_proto_ver;
|
||||||
|
|
||||||
u16 m_playeritem;
|
u16 m_playeritem;
|
||||||
bool m_inventory_updated;
|
bool m_inventory_updated;
|
||||||
Inventory *m_inventory_from_server;
|
Inventory *m_inventory_from_server;
|
||||||
|
@ -151,20 +151,23 @@ void Client::handleCommand_InitLegacy(NetworkPacket* pkt)
|
|||||||
if (pkt->getSize() < 1)
|
if (pkt->getSize() < 1)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
u8 deployed;
|
u8 server_ser_ver;
|
||||||
*pkt >> deployed;
|
*pkt >> server_ser_ver;
|
||||||
|
|
||||||
infostream << "Client: TOCLIENT_INIT_LEGACY received with "
|
infostream << "Client: TOCLIENT_INIT_LEGACY received with "
|
||||||
"deployed=" << ((int)deployed & 0xff) << std::endl;
|
"server_ser_ver=" << ((int)server_ser_ver & 0xff) << std::endl;
|
||||||
|
|
||||||
if (!ser_ver_supported(deployed)) {
|
if (!ser_ver_supported(server_ser_ver)) {
|
||||||
infostream << "Client: TOCLIENT_INIT_LEGACY: Server sent "
|
infostream << "Client: TOCLIENT_INIT_LEGACY: Server sent "
|
||||||
<< "unsupported ser_fmt_ver"<< std::endl;
|
<< "unsupported ser_fmt_ver"<< std::endl;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_server_ser_ver = deployed;
|
m_server_ser_ver = server_ser_ver;
|
||||||
m_proto_ver = deployed;
|
|
||||||
|
// We can be totally wrong with this guess
|
||||||
|
// but we only need some value < 25.
|
||||||
|
m_proto_ver = 24;
|
||||||
|
|
||||||
// Get player position
|
// Get player position
|
||||||
v3s16 playerpos_s16(0, BS * 2 + BS * 20, 0);
|
v3s16 playerpos_s16(0, BS * 2 + BS * 20, 0);
|
||||||
|
Loading…
Reference in New Issue
Block a user