bool OsNatSocketBaseImpl::handleSturnData(char* buffer, int& bufferLength, UtlString& receivedIp, int& receivedPort) { bool bHandled = false ; bool bDataIndication = false ; if ((bufferLength > 0) && TurnMessage::isTurnMessage(buffer, bufferLength, &bDataIndication)) { if (bDataIndication) { bufferLength = handleTurnDataIndication(buffer, bufferLength, &receivedIp, &receivedPort) ; // We need to recurse for DIs -- it may be an encapsulated STUN // message (e.g. ICE) return handleSturnData(buffer, bufferLength, receivedIp, receivedPort) ; } else { handleTurnMessage(buffer, bufferLength, receivedIp, receivedPort) ; bHandled = true ; } } else if ((bufferLength > 0) && StunMessage::isStunMessage(buffer, bufferLength)) { handleStunMessage(buffer, bufferLength, receivedIp, receivedPort) ; bHandled = true ; } return bHandled ; }
void Controller::handleMessage(Message &msg) { if (msg.getName() == Constants::MESSAGE_KEY_TURN) { handleTurnMessage(msg); } else if (msg.getName() == Constants::MESSAGE_KEY_INIT) { handleInitMessage(msg); } else if (msg.getName() == Constants::MESSAGE_KEY_SHUTDOWN || msg.getName() == Constants::MESSAGE_KEY_WRONG_TOKEN) { network->terminate(); } }