mirror of
https://github.com/overte-org/overte.git
synced 2025-04-25 14:13:47 +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()) {
|
||||
auto packet = pendingMessage.removeNextPacket();
|
||||
_parentSocket->messageReceived(std::move(packet));
|
||||
}
|
||||
|
||||
if (pendingMessage.isComplete()) {
|
||||
_pendingReceivedMessages.erase(messageNumber);
|
||||
auto packetPosition = packet->getPacketPosition();
|
||||
|
||||
_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 {
|
||||
public:
|
||||
void enqueuePacket(std::unique_ptr<Packet> packet);
|
||||
bool isComplete() const { return _hasLastPacket && _numPackets == _packets.size(); }
|
||||
bool hasAvailablePackets() const;
|
||||
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,
|
||||
MessageNumber currentMessageNumber, bool hasReceivedHandshakeACK) :
|
||||
_packets(currentMessageNumber),
|
||||
_socket(socket),
|
||||
_destination(dest),
|
||||
_packets(currentMessageNumber)
|
||||
_destination(dest)
|
||||
{
|
||||
// set our member variables from current sequence number
|
||||
_currentSequenceNumber = currentSequenceNumber;
|
||||
|
|
Loading…
Reference in a new issue