mirror of
https://github.com/overte-org/overte.git
synced 2025-04-25 23:56:29 +02:00
Move unfilteredHandlers processing back into main loop
This commit is contained in:
parent
c2ac2b9ab0
commit
b45b0f54e4
1 changed files with 14 additions and 22 deletions
|
@ -361,28 +361,6 @@ void Socket::processPendingDatagrams(int) {
|
||||||
// setup a HifiSockAddr to read into
|
// setup a HifiSockAddr to read into
|
||||||
HifiSockAddr senderSockAddr;
|
HifiSockAddr senderSockAddr;
|
||||||
|
|
||||||
// Process unfiltered packets first.
|
|
||||||
for (auto datagramIter = _incomingDatagrams.begin(); datagramIter != _incomingDatagrams.end(); ++datagramIter) {
|
|
||||||
senderSockAddr.setAddress(datagramIter->_senderAddress);
|
|
||||||
senderSockAddr.setPort(datagramIter->_senderPort);
|
|
||||||
auto it = _unfilteredHandlers.find(senderSockAddr);
|
|
||||||
if (it != _unfilteredHandlers.end()) {
|
|
||||||
// we have a registered unfiltered handler for this HifiSockAddr (eg. STUN packet) - call that and return
|
|
||||||
if (it->second) {
|
|
||||||
auto basePacket = BasePacket::fromReceivedPacket(std::move(datagramIter->_datagram),
|
|
||||||
datagramIter->_datagramLength,
|
|
||||||
senderSockAddr);
|
|
||||||
basePacket->setReceiveTime(datagramIter->_receiveTime);
|
|
||||||
it->second(std::move(basePacket));
|
|
||||||
}
|
|
||||||
|
|
||||||
datagramIter = _incomingDatagrams.erase(datagramIter);
|
|
||||||
if (datagramIter == _incomingDatagrams.end()) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
while (!_incomingDatagrams.empty()) {
|
while (!_incomingDatagrams.empty()) {
|
||||||
auto& datagram = _incomingDatagrams.front();
|
auto& datagram = _incomingDatagrams.front();
|
||||||
senderSockAddr.setAddress(datagram._senderAddress);
|
senderSockAddr.setAddress(datagram._senderAddress);
|
||||||
|
@ -397,6 +375,20 @@ void Socket::processPendingDatagrams(int) {
|
||||||
_lastPacketSizeRead = datagramSize;
|
_lastPacketSizeRead = datagramSize;
|
||||||
_lastPacketSockAddr = senderSockAddr;
|
_lastPacketSockAddr = senderSockAddr;
|
||||||
|
|
||||||
|
// Process unfiltered packets first.
|
||||||
|
auto it = _unfilteredHandlers.find(senderSockAddr);
|
||||||
|
if (it != _unfilteredHandlers.end()) {
|
||||||
|
// we have a registered unfiltered handler for this HifiSockAddr (eg. STUN packet) - call that and return
|
||||||
|
if (it->second) {
|
||||||
|
auto basePacket = BasePacket::fromReceivedPacket(std::move(datagram._datagram),
|
||||||
|
datagramSize, senderSockAddr);
|
||||||
|
basePacket->setReceiveTime(receiveTime);
|
||||||
|
it->second(std::move(basePacket));
|
||||||
|
}
|
||||||
|
_incomingDatagrams.pop_front();
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
// check if this was a control packet or a data packet
|
// check if this was a control packet or a data packet
|
||||||
bool isControlPacket = *reinterpret_cast<uint32_t*>(datagram._datagram.get()) & CONTROL_BIT_MASK;
|
bool isControlPacket = *reinterpret_cast<uint32_t*>(datagram._datagram.get()) & CONTROL_BIT_MASK;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue