mirror of
https://github.com/JulianGro/overte.git
synced 2025-08-08 11:07:40 +02:00
fix for broken move in NLPacket/Packet
This commit is contained in:
parent
a8618ab3d5
commit
3901dbae33
5 changed files with 15 additions and 12 deletions
|
@ -566,7 +566,7 @@ void LimitedNodeList::sendSTUNRequest() {
|
|||
|
||||
flagTimeForConnectionStep(ConnectionStep::SendSTUNRequest);
|
||||
|
||||
_nodeSocket.writeDatagram(stunRequestPacket, _stunSockAddr);
|
||||
_nodeSocket.writeDatagram(QByteArray::fromRawData(stunRequestPacket, sizeof(stunRequestPacket)), _stunSockAddr);
|
||||
}
|
||||
|
||||
bool LimitedNodeList::processSTUNResponse(QSharedPointer<NLPacket> packet) {
|
||||
|
|
|
@ -90,7 +90,7 @@ NLPacket::NLPacket(PacketType::Value type) :
|
|||
}
|
||||
|
||||
NLPacket::NLPacket(std::unique_ptr<Packet> packet) :
|
||||
Packet(*packet)
|
||||
Packet(std::move(*packet.release()))
|
||||
{
|
||||
adjustPayloadStartAndCapacity(_payloadSize > 0);
|
||||
|
||||
|
@ -122,7 +122,7 @@ NLPacket::NLPacket(std::unique_ptr<char> data, qint64 size, const HifiSockAddr&
|
|||
}
|
||||
|
||||
NLPacket::NLPacket(NLPacket&& other) :
|
||||
Packet(other)
|
||||
Packet(other)
|
||||
{
|
||||
_sourceID = std::move(other._sourceID);
|
||||
_verificationHash = std::move(other._verificationHash);
|
||||
|
@ -130,7 +130,7 @@ NLPacket::NLPacket(NLPacket&& other) :
|
|||
|
||||
NLPacket& NLPacket::operator=(NLPacket&& other) {
|
||||
|
||||
Packet::operator=(other);
|
||||
Packet::operator=(std::move(other));
|
||||
|
||||
_sourceID = std::move(other._sourceID);
|
||||
_verificationHash = std::move(other._verificationHash);
|
||||
|
|
|
@ -267,7 +267,7 @@ void PacketReceiver::handleVerifiedPacket(std::unique_ptr<udt::Packet> packet) {
|
|||
|
||||
bool listenerIsDead = false;
|
||||
|
||||
auto it = _packetListenerMap.find(packet->getType());
|
||||
auto it = _packetListenerMap.find(nlPacket->getType());
|
||||
|
||||
if (it != _packetListenerMap.end()) {
|
||||
|
||||
|
@ -285,16 +285,16 @@ void PacketReceiver::handleVerifiedPacket(std::unique_ptr<udt::Packet> packet) {
|
|||
|
||||
_directConnectSetMutex.unlock();
|
||||
|
||||
PacketType::Value packetType = packet->getType();
|
||||
PacketType::Value packetType = nlPacket->getType();
|
||||
|
||||
if (matchingNode) {
|
||||
// if this was a sequence numbered packet we should store the last seq number for
|
||||
// a packet of this type for this node
|
||||
if (SEQUENCE_NUMBERED_PACKETS.contains(packet->getType())) {
|
||||
if (SEQUENCE_NUMBERED_PACKETS.contains(nlPacket->getType())) {
|
||||
matchingNode->setLastSequenceNumberForPacketType(packet->readSequenceNumber(), packet->getType());
|
||||
}
|
||||
|
||||
emit dataReceived(matchingNode->getType(), packet->getDataSize());
|
||||
emit dataReceived(matchingNode->getType(), nlPacket->getDataSize());
|
||||
QMetaMethod metaMethod = listener.second;
|
||||
|
||||
static const QByteArray QSHAREDPOINTER_NODE_NORMALIZED = QMetaObject::normalizedType("QSharedPointer<Node>");
|
||||
|
@ -327,7 +327,7 @@ void PacketReceiver::handleVerifiedPacket(std::unique_ptr<udt::Packet> packet) {
|
|||
}
|
||||
|
||||
} else {
|
||||
emit dataReceived(NodeType::Unassigned, packet->getDataSize());
|
||||
emit dataReceived(NodeType::Unassigned, nlPacket->getDataSize());
|
||||
|
||||
success = listener.second.invoke(listener.first,
|
||||
Q_ARG(QSharedPointer<NLPacket>, QSharedPointer<NLPacket>(nlPacket.release())));
|
||||
|
@ -344,8 +344,8 @@ void PacketReceiver::handleVerifiedPacket(std::unique_ptr<udt::Packet> packet) {
|
|||
}
|
||||
|
||||
if (listenerIsDead) {
|
||||
qDebug().nospace() << "Listener for packet" << packet->getType()
|
||||
<< " (" << qPrintable(nameForPacketType(packet->getType())) << ")"
|
||||
qDebug().nospace() << "Listener for packet" << nlPacket->getType()
|
||||
<< " (" << qPrintable(nameForPacketType(nlPacket->getType())) << ")"
|
||||
<< " has been destroyed. Removing from listener map.";
|
||||
it = _packetListenerMap.erase(it);
|
||||
|
||||
|
@ -356,7 +356,7 @@ void PacketReceiver::handleVerifiedPacket(std::unique_ptr<udt::Packet> packet) {
|
|||
}
|
||||
|
||||
} else {
|
||||
qWarning() << "No listener found for packet type " << nameForPacketType(packet->getType());
|
||||
qWarning() << "No listener found for packet type " << nameForPacketType(nlPacket->getType());
|
||||
|
||||
// insert a dummy listener so we don't print this again
|
||||
_packetListenerMap.insert(packet->getType(), { nullptr, QMetaMethod() });
|
||||
|
|
|
@ -138,6 +138,8 @@ Packet& Packet::operator=(Packet&& other) {
|
|||
|
||||
_payloadSize = other._payloadSize;
|
||||
|
||||
_senderSockAddr = std::move(other._senderSockAddr);
|
||||
|
||||
if (other.isOpen() && !isOpen()) {
|
||||
open(other.openMode());
|
||||
}
|
||||
|
|
|
@ -58,6 +58,7 @@ void Socket::setBufferSizes(int numBytes) {
|
|||
}
|
||||
|
||||
qint64 Socket::writeDatagram(const QByteArray& datagram, const HifiSockAddr& sockAddr) {
|
||||
|
||||
qint64 bytesWritten = _udpSocket.writeDatagram(datagram, sockAddr.getAddress(), sockAddr.getPort());
|
||||
|
||||
if (bytesWritten < 0) {
|
||||
|
|
Loading…
Reference in a new issue