void SIPTransaction::writeMessage(SIPMessage::Ptr pMsg, const OSS::IPAddress& remoteAddress) { OSS::mutex_lock lock(_mutex); if (!_transport) { OSS_LOG_ERROR("SIPTransaction::writeMessage does not have a transport to use"); return; } if (SIPXOR::isEnabled() && _isXOREncrypted) { pMsg->setProperty("xor", "1"); } if (_fsm->onSendMessage(pMsg)) { std::ostringstream logMsg; logMsg << _logId << ">>> " << pMsg->startLine() << " LEN: " << pMsg->data().size() << " SRC: " << _transport->getLocalAddress().toIpPortString() << " DST: " << remoteAddress.toIpPortString() << " ENC: " << _isXOREncrypted << " PROT: " << _transport->getTransportScheme(); OSS::log_information(logMsg.str()); if (OSS::log_get_level() >= OSS::PRIO_DEBUG) OSS::log_debug(pMsg->createLoggerData()); _transport->writeMessage(pMsg, remoteAddress.toString(), OSS::string_from_number<unsigned short>(remoteAddress.getPort())); } }
void SIPTransaction::writeMessage(SIPMessage::Ptr pMsg) { OSS::mutex_lock lock(_mutex); if (!_transport) { OSS_LOG_ERROR("SIPTransaction::writeMessage - Transport is NULL while attempting to send a request."); return; } if (SIPXOR::isEnabled() && _isXOREncrypted) { pMsg->setProperty("xor", "1"); } std::ostringstream logMsg; logMsg << _logId << ">>> " << pMsg->startLine() << " LEN: " << pMsg->data().size() << " SRC: " << _transport->getLocalAddress().toIpPortString() << " DST: " << _transport->getRemoteAddress().toIpPortString() << " ENC: " << _isXOREncrypted << " PROT: " << _transport->getTransportScheme(); OSS::log_information(logMsg.str()); if (OSS::log_get_level() >= OSS::PRIO_DEBUG) OSS::log_debug(pMsg->createLoggerData()); if (_fsm->onSendMessage(pMsg)) { _transport->writeMessage(pMsg); } }
void EndpointListener::dispatchMessage(const SIPMessage::Ptr& pRequest) { if (_dispatch) { OSS_LOG_DEBUG(pRequest->createContextId(true) << "EndpointListener::dispatchMessage( " << pRequest->startLine() << " )"); pRequest->setProperty(OSS::PropertyMap::PROP_EndpointName, _endpointName); pRequest->commitData(); _dispatch(pRequest, _pConnection); } else { OSS_LOG_ERROR(pRequest->createContextId(true) << "EndpointListener::dispatchMessage( NULL )"); } }
void SIPTransaction::sendAckFor2xx( const SIPMessage::Ptr& pAck, const OSS::IPAddress& dialogTarget) { OSS::mutex_lock lock(_mutex); if (!_dialogTarget.isValid()) _dialogTarget = dialogTarget; if (SIPXOR::isEnabled() && _isXOREncrypted) { pAck->setProperty("xor", "1"); } if (_transport->isReliableTransport()) { writeMessage(pAck); } else { writeMessage(pAck, dialogTarget); } }