1
Fork 0
mirror of https://github.com/SapphireServer/Sapphire.git synced 2025-04-25 22:17:45 +00:00

Merge pull request #325 from itsMaru/packet_work

Fix packet object slicing;
This commit is contained in:
Mordred 2018-06-28 15:19:05 +02:00 committed by GitHub
commit 6d2b43e4c3
4 changed files with 12 additions and 9 deletions

View file

@ -24,8 +24,10 @@ namespace Core
namespace Packets
{
class GamePacket;
class FFXIVPacketBase;
typedef boost::shared_ptr< GamePacket > GamePacketPtr;
typedef boost::shared_ptr< FFXIVPacketBase > FFXIVPacketBasePtr;
}
}

View file

@ -1,6 +1,7 @@
#include "PacketContainer.h"
#include "Common.h"
#include "Forwards.h"
#include <boost/format.hpp>
@ -19,11 +20,11 @@ Core::Network::Packets::PacketContainer::~PacketContainer()
m_entryList.clear();
}
void Core::Network::Packets::PacketContainer::addPacket( FFXIVPacketBase entry )
void Core::Network::Packets::PacketContainer::addPacket( Core::Network::Packets::FFXIVPacketBasePtr entry )
{
m_entryList.push_back( entry );
m_ipcHdr.size += entry.getSize();
m_ipcHdr.size += entry->getSize();
m_ipcHdr.count++;
}
@ -50,9 +51,9 @@ void Core::Network::Packets::PacketContainer::fillSendBuffer( std::vector< uint8
for( ; it != m_entryList.end(); ++it )
{
auto data = it->getData();
memcpy( &tempBuffer[0] + sizeof( FFXIVARR_PACKET_HEADER ) + offset, &data[0], it->getSize() );
offset += it->getSize();
auto data = (*it)->getData();
memcpy( &tempBuffer[0] + sizeof( FFXIVARR_PACKET_HEADER ) + offset, &data[0], (*it)->getSize() );
offset += (*it)->getSize();
}
sendBuffer.assign( &tempBuffer[0], &tempBuffer[0] + m_ipcHdr.size );

View file

@ -19,11 +19,11 @@ public:
PacketContainer();
~PacketContainer();
void addPacket( FFXIVPacketBase entry );
void addPacket( FFXIVPacketBasePtr entry );
FFXIVARR_PACKET_HEADER m_ipcHdr;
std::vector< FFXIVPacketBase > m_entryList;
std::vector< FFXIVPacketBasePtr > m_entryList;
std::string toString();

View file

@ -303,7 +303,7 @@ void Core::Network::GameConnection::processOutQueue()
break;
}
pRP.addPacket( *pPacket );
pRP.addPacket( pPacket );
totalSize += pPacket->getSize();
}
@ -315,7 +315,7 @@ void Core::Network::GameConnection::processOutQueue()
void Core::Network::GameConnection::sendSinglePacket( Core::Network::Packets::FFXIVPacketBasePtr pPacket )
{
PacketContainer pRP = PacketContainer();
pRP.addPacket( *pPacket );
pRP.addPacket( pPacket );
sendPackets( &pRP );
}