本文整理汇总了C++中SipMessage::addVia方法的典型用法代码示例。如果您正苦于以下问题:C++ SipMessage::addVia方法的具体用法?C++ SipMessage::addVia怎么用?C++ SipMessage::addVia使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SipMessage
的用法示例。
在下文中一共展示了SipMessage::addVia方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: run
//.........这里部分代码省略.........
if(dnsSrvRecords[0].isValidServerT())
{
// Get the highest priority address and port from the
// list with randomization of those according to the
// weights.
// Note: we are not doing any failover here as that is
// a little tricky with the NAT stuff. We cannot change
// addresses with every transaction as we may get different
// ports and addresses every time we send a ping. For now
// we do one DNS SRV lookup at the begining of time and
// stick to that result.
dnsSrvRecords[0].getIpAddressFromServerT(address);
port = dnsSrvRecords[0].getPortFromServerT();
// If the ping URL or DNS SRV did not specify a port
// bind it to the default port.
if (!portIsValid(port))
{
port = SIP_PORT;
}
}
// Did not get a valid response from the DNS lookup
else
{
// Configured with a bad DNS name that did not resolve.
// Or the DNS server did not respond.
if(!rawAddress.isNull())
{
OsSysLog::add(FAC_SIP, PRI_INFO,
"SipUdpServer::run DNS lookup failed for ping host: %s in URI: %s",
rawAddress.data(), mNatPingUrl.data());
}
// Else no ping address, this means we are not supposed to
// do a ping
}
// Free the list of server addresses.
delete[] dnsSrvRecords;
// Get the address to be used in the callId scoping
int dummyPort;
UtlString callId;
if (mSipUserAgent)
{
mSipUserAgent->getViaInfo(OsSocket::UDP, callId, dummyPort);
}
// Make up a call Id
long epochTime = OsDateTime::getSecsSinceEpoch();
int randNum = rand();
char callIdPrefix[80];
sprintf(callIdPrefix, "%ld%[email protected]", epochTime, randNum);
callId.insert(0,callIdPrefix);
while(mNatPingFrequencySeconds > 0 &&
!mNatPingUrl.isNull() &&
!mNatPingMethod.isNull() &&
!address.isNull())
{
// Send a no-op SIP message to the
// server to keep a port open through a NAT
// based firewall
SipMessage pingMessage;
pingMessage.setRequestData(mNatPingMethod, cannonizedPingUrl.data(),
from.data(), mNatPingUrl.data(), callId, cseq, contact.data());
// Get the UDP via info from the SipUserAgent
UtlString viaAddress;
int viaPort;
if (mSipUserAgent)
{
mSipUserAgent->getViaInfo(OsSocket::UDP, viaAddress, viaPort);
}
pingMessage.addVia(viaAddress.data(), viaPort, SIP_TRANSPORT_UDP);
// Mark the via so the receiver knows we support and want the
// received port to be set
pingMessage.setLastViaTag("", "rport");
# ifdef TEST_PRINT
osPrintf("Sending ping to %s %d, From: %s\n",
address.data(), port, contact.data());
# endif
// Send from the same UDP port that we receive from
if (mSipUserAgent)
{
mSipUserAgent->sendSymmetricUdp(pingMessage, address.data(), port);
}
cseq++;
// Wait until it is time to send another ping
delay(mNatPingFrequencySeconds * 1000);
}
}
return(mNatPingFrequencySeconds);
}