mirror of
https://github.com/overte-org/overte.git
synced 2025-04-25 23:36:41 +02:00
fix message erase in conn, SendQueue ctor order
This commit is contained in:
parent
34c1c27455
commit
cf28fdf188
3 changed files with 11 additions and 7 deletions
|
@ -193,11 +193,16 @@ void Connection::queueReceivedMessagePacket(std::unique_ptr<Packet> packet) {
|
||||||
|
|
||||||
while (pendingMessage.hasAvailablePackets()) {
|
while (pendingMessage.hasAvailablePackets()) {
|
||||||
auto packet = pendingMessage.removeNextPacket();
|
auto packet = pendingMessage.removeNextPacket();
|
||||||
_parentSocket->messageReceived(std::move(packet));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (pendingMessage.isComplete()) {
|
auto packetPosition = packet->getPacketPosition();
|
||||||
_pendingReceivedMessages.erase(messageNumber);
|
|
||||||
|
_parentSocket->messageReceived(std::move(packet));
|
||||||
|
|
||||||
|
// if this was the last or only packet, then we can remove the pending message from our hash
|
||||||
|
if (packetPosition == Packet::PacketPosition::LAST ||
|
||||||
|
packetPosition == Packet::PacketPosition::ONLY) {
|
||||||
|
_pendingReceivedMessages.erase(messageNumber);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -37,7 +37,6 @@ class Socket;
|
||||||
class PendingReceivedMessage {
|
class PendingReceivedMessage {
|
||||||
public:
|
public:
|
||||||
void enqueuePacket(std::unique_ptr<Packet> packet);
|
void enqueuePacket(std::unique_ptr<Packet> packet);
|
||||||
bool isComplete() const { return _hasLastPacket && _numPackets == _packets.size(); }
|
|
||||||
bool hasAvailablePackets() const;
|
bool hasAvailablePackets() const;
|
||||||
std::unique_ptr<Packet> removeNextPacket();
|
std::unique_ptr<Packet> removeNextPacket();
|
||||||
|
|
||||||
|
|
|
@ -87,9 +87,9 @@ std::unique_ptr<SendQueue> SendQueue::create(Socket* socket, HifiSockAddr destin
|
||||||
|
|
||||||
SendQueue::SendQueue(Socket* socket, HifiSockAddr dest, SequenceNumber currentSequenceNumber,
|
SendQueue::SendQueue(Socket* socket, HifiSockAddr dest, SequenceNumber currentSequenceNumber,
|
||||||
MessageNumber currentMessageNumber, bool hasReceivedHandshakeACK) :
|
MessageNumber currentMessageNumber, bool hasReceivedHandshakeACK) :
|
||||||
|
_packets(currentMessageNumber),
|
||||||
_socket(socket),
|
_socket(socket),
|
||||||
_destination(dest),
|
_destination(dest)
|
||||||
_packets(currentMessageNumber)
|
|
||||||
{
|
{
|
||||||
// set our member variables from current sequence number
|
// set our member variables from current sequence number
|
||||||
_currentSequenceNumber = currentSequenceNumber;
|
_currentSequenceNumber = currentSequenceNumber;
|
||||||
|
|
Loading…
Reference in a new issue