mirror of
https://github.com/overte-org/overte.git
synced 2025-08-05 23:39:26 +02:00
add support for sending unverified datagrams to nodes
This commit is contained in:
parent
0e124eca3c
commit
334f688e4e
3 changed files with 37 additions and 1 deletions
|
@ -2205,7 +2205,7 @@ void Application::queryOctree(NodeType_t serverType, PacketType packetType, Node
|
||||||
int packetLength = endOfQueryPacket - queryPacket;
|
int packetLength = endOfQueryPacket - queryPacket;
|
||||||
|
|
||||||
// make sure we still have an active socket
|
// make sure we still have an active socket
|
||||||
nodeList->writeDatagram(reinterpret_cast<const char*>(queryPacket), packetLength, node);
|
nodeList->writeUnverifiedDatagram(reinterpret_cast<const char*>(queryPacket), packetLength, node);
|
||||||
|
|
||||||
// Feed number of bytes to corresponding channel of the bandwidth meter
|
// Feed number of bytes to corresponding channel of the bandwidth meter
|
||||||
_bandwidthMeter.outputStream(BandwidthMeter::VOXELS).updateValue(packetLength);
|
_bandwidthMeter.outputStream(BandwidthMeter::VOXELS).updateValue(packetLength);
|
||||||
|
|
|
@ -234,6 +234,30 @@ qint64 LimitedNodeList::writeDatagram(const QByteArray& datagram, const SharedNo
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
qint64 LimitedNodeList::writeUnverifiedDatagram(const QByteArray& datagram, const SharedNodePointer& destinationNode,
|
||||||
|
const HifiSockAddr& overridenSockAddr) {
|
||||||
|
if (destinationNode) {
|
||||||
|
// if we don't have an ovveriden address, assume they want to send to the node's active socket
|
||||||
|
const HifiSockAddr* destinationSockAddr = &overridenSockAddr;
|
||||||
|
if (overridenSockAddr.isNull()) {
|
||||||
|
if (destinationNode->getActiveSocket()) {
|
||||||
|
// use the node's active socket as the destination socket
|
||||||
|
destinationSockAddr = destinationNode->getActiveSocket();
|
||||||
|
} else {
|
||||||
|
// we don't have a socket to send to, return 0
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// don't use the node secret!
|
||||||
|
writeDatagram(datagram, *destinationSockAddr, QUuid());
|
||||||
|
}
|
||||||
|
|
||||||
|
// didn't have a destinationNode to send to, return 0
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
qint64 LimitedNodeList::writeUnverifiedDatagram(const QByteArray& datagram, const HifiSockAddr& destinationSockAddr) {
|
qint64 LimitedNodeList::writeUnverifiedDatagram(const QByteArray& datagram, const HifiSockAddr& destinationSockAddr) {
|
||||||
return writeDatagram(datagram, destinationSockAddr, QUuid());
|
return writeDatagram(datagram, destinationSockAddr, QUuid());
|
||||||
}
|
}
|
||||||
|
@ -243,6 +267,11 @@ qint64 LimitedNodeList::writeDatagram(const char* data, qint64 size, const Share
|
||||||
return writeDatagram(QByteArray(data, size), destinationNode, overridenSockAddr);
|
return writeDatagram(QByteArray(data, size), destinationNode, overridenSockAddr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
qint64 LimitedNodeList::writeUnverifiedDatagram(const char* data, qint64 size, const SharedNodePointer& destinationNode,
|
||||||
|
const HifiSockAddr& overridenSockAddr) {
|
||||||
|
return writeUnverifiedDatagram(QByteArray(data, size), destinationNode, overridenSockAddr);
|
||||||
|
}
|
||||||
|
|
||||||
void LimitedNodeList::processNodeData(const HifiSockAddr& senderSockAddr, const QByteArray& packet) {
|
void LimitedNodeList::processNodeData(const HifiSockAddr& senderSockAddr, const QByteArray& packet) {
|
||||||
// the node decided not to do anything with this packet
|
// the node decided not to do anything with this packet
|
||||||
// if it comes from a known source we should keep that node alive
|
// if it comes from a known source we should keep that node alive
|
||||||
|
|
|
@ -66,10 +66,17 @@ public:
|
||||||
|
|
||||||
qint64 writeDatagram(const QByteArray& datagram, const SharedNodePointer& destinationNode,
|
qint64 writeDatagram(const QByteArray& datagram, const SharedNodePointer& destinationNode,
|
||||||
const HifiSockAddr& overridenSockAddr = HifiSockAddr());
|
const HifiSockAddr& overridenSockAddr = HifiSockAddr());
|
||||||
|
|
||||||
|
qint64 writeUnverifiedDatagram(const QByteArray& datagram, const SharedNodePointer& destinationNode,
|
||||||
|
const HifiSockAddr& overridenSockAddr = HifiSockAddr());
|
||||||
|
|
||||||
qint64 writeUnverifiedDatagram(const QByteArray& datagram, const HifiSockAddr& destinationSockAddr);
|
qint64 writeUnverifiedDatagram(const QByteArray& datagram, const HifiSockAddr& destinationSockAddr);
|
||||||
qint64 writeDatagram(const char* data, qint64 size, const SharedNodePointer& destinationNode,
|
qint64 writeDatagram(const char* data, qint64 size, const SharedNodePointer& destinationNode,
|
||||||
const HifiSockAddr& overridenSockAddr = HifiSockAddr());
|
const HifiSockAddr& overridenSockAddr = HifiSockAddr());
|
||||||
|
|
||||||
|
qint64 writeUnverifiedDatagram(const char* data, qint64 size, const SharedNodePointer& destinationNode,
|
||||||
|
const HifiSockAddr& overridenSockAddr = HifiSockAddr());
|
||||||
|
|
||||||
void(*linkedDataCreateCallback)(Node *);
|
void(*linkedDataCreateCallback)(Node *);
|
||||||
|
|
||||||
NodeHash getNodeHash();
|
NodeHash getNodeHash();
|
||||||
|
|
Loading…
Reference in a new issue