diff --git a/zone/client.cpp b/zone/client.cpp index e2a94638e..2321797e3 100644 --- a/zone/client.cpp +++ b/zone/client.cpp @@ -697,12 +697,13 @@ bool Client::AddPacket(const EQApplicationPacket *pApp, bool bAckreq) { //drop the packet because it will never get sent. return(false); } - auto c = new CLIENTPACKET; + + auto c = std::unique_ptr(new CLIENTPACKET); c->ack_req = bAckreq; c->app = pApp->Copy(); - clientpackets.Append(c); + clientpackets.push_back(std::move(c)); return true; } @@ -714,26 +715,23 @@ bool Client::AddPacket(EQApplicationPacket** pApp, bool bAckreq) { //drop the packet because it will never get sent. return(false); } - auto c = new CLIENTPACKET; + auto c = std::unique_ptr(new CLIENTPACKET); c->ack_req = bAckreq; c->app = *pApp; *pApp = nullptr; - clientpackets.Append(c); + clientpackets.push_back(std::move(c)); return true; } bool Client::SendAllPackets() { - LinkedListIterator iterator(clientpackets); - CLIENTPACKET* cp = nullptr; - iterator.Reset(); - while(iterator.MoreElements()) { - cp = iterator.GetData(); + while (!clientpackets.empty()) { + cp = clientpackets.front().get(); if(eqs) eqs->FastQueuePacket((EQApplicationPacket **)&cp->app, cp->ack_req); - iterator.RemoveCurrent(); + clientpackets.pop_front(); Log(Logs::Moderate, Logs::Client_Server_Packet, "Transmitting a packet"); } return true; diff --git a/zone/client.h b/zone/client.h index aeabbd63a..f47ac2b31 100644 --- a/zone/client.h +++ b/zone/client.h @@ -70,6 +70,7 @@ namespace EQEmu #include #include #include +#include #define CLIENT_TIMEOUT 90000 @@ -1424,7 +1425,7 @@ private: bool AddPacket(const EQApplicationPacket *, bool); bool AddPacket(EQApplicationPacket**, bool); bool SendAllPackets(); - LinkedList clientpackets; + std::deque> clientpackets; //Zoning related stuff void SendZoneCancel(ZoneChange_Struct *zc);