Le seed est pas bon, mais ON A LES DROITS!
This commit is contained in:
@@ -71,42 +71,46 @@ int Connector::Connect(const char* srv_addr, std::string name) {
|
||||
|
||||
bool ready = false;
|
||||
int errors = 0;
|
||||
std::vector<netprot::Packet> lsPck;
|
||||
std::vector<char*> lsPck;
|
||||
while (!ready) {
|
||||
lsPck = netprot::recvPacks(m_sock_tcp, &bf);
|
||||
|
||||
for (auto& pck : lsPck) {
|
||||
bool bypass_delete = false;
|
||||
uint32_t bsize = bf.len - (pck - bf.ptr);
|
||||
netprot::PlayerInfo* pl = nullptr;
|
||||
switch (pck.type) {
|
||||
switch (netprot::getType(pck, 1)) {
|
||||
using enum netprot::PACKET_TYPE;
|
||||
case LOGINF:
|
||||
m_loginfo = netprot::LoginInfo((netprot::LoginInfo*)pck.ptr);
|
||||
if (!netprot::Deserialize(&m_loginfo, pck, &bsize))
|
||||
++errors;
|
||||
break;
|
||||
case GAMEINFO:
|
||||
m_gameinfo = netprot::GameInfo((netprot::GameInfo*)pck.ptr);
|
||||
if (!netprot::Deserialize(&m_gameinfo, pck, &bsize))
|
||||
++errors;
|
||||
break;
|
||||
case PLAYINF:
|
||||
pl = (netprot::PlayerInfo*)pck.ptr;
|
||||
m_players[pl->id] = pl;
|
||||
bypass_delete = true;
|
||||
pl = new netprot::PlayerInfo();
|
||||
if (!netprot::Deserialize(pl, pck, &bsize))
|
||||
++errors;
|
||||
else m_players[pl->id] = pl;
|
||||
break;
|
||||
case TEAMINF:
|
||||
// TODO: Faire dequoi avec TeamInfo si on fini par avoir des teams.
|
||||
break;
|
||||
case SYNC:
|
||||
m_origin = netprot::Sync((netprot::Sync*)pck.ptr);
|
||||
if (!netprot::Deserialize(&m_origin, pck, &bsize))
|
||||
++errors;
|
||||
ready = true;
|
||||
break;
|
||||
default:
|
||||
errors++;
|
||||
break;
|
||||
}
|
||||
if (!bypass_delete)
|
||||
netprot::emptyPack(pck);
|
||||
}
|
||||
if (lsPck.empty())
|
||||
errors++;
|
||||
lsPck.clear();
|
||||
if (errors > 100)
|
||||
if (errors > 1000000)
|
||||
return 4;
|
||||
}
|
||||
return 0;
|
||||
|
Reference in New Issue
Block a user