r3483 - in trunk/libmsip/source: . transports
mikma at minisip.org
mikma at minisip.org
Sun Nov 18 11:32:42 CET 2007
Author: mikma
Date: 2007-11-18 11:32:42 +0100 (Sun, 18 Nov 2007)
New Revision: 3483
Modified:
trunk/libmsip/source/SipLayerTransport.cxx
trunk/libmsip/source/transports/SipTransport.cxx
trunk/libmsip/source/transports/SipTransport.h
Log:
Implement SipTransport:getSrv().
Modified: trunk/libmsip/source/SipLayerTransport.cxx
===================================================================
--- trunk/libmsip/source/SipLayerTransport.cxx 2007-11-18 10:21:07 UTC (rev 3482)
+++ trunk/libmsip/source/SipLayerTransport.cxx 2007-11-18 10:32:42 UTC (rev 3483)
@@ -512,19 +512,13 @@
pack->addBefore( hdr );
}
-static bool lookupDestSrv(const string &domain, const string &transport,
+static bool lookupDestSrv(const string &domain, MRef<SipTransport*> transport,
string &destAddr, int32_t &destPort)
{
//Do a SRV lookup according to the transport ...
- string srv;
+ string srv = transport->getSrv();
uint16_t port = 0;
- if( transport == "TLS" || transport == "tls") { srv = "_sips._tcp"; }
- else if( transport == "TCP" || transport == "tcp") { srv = "_sip._tcp"; }
- else { //if( trans == "UDP" || trans == "udp") {
- srv = "_sip._udp";
- }
-
string addr = NetworkFunctions::getHostHandlingService(srv, domain, port);
#ifdef DEBUG_OUTPUT
cerr << "getDestIpPort : srv=" << srv << "; domain=" << domain << "; port=" << port << "; target=" << addr << endl;
@@ -564,7 +558,7 @@
res = true;
}
// Lookup SRV
- else if( lookupDestSrv( uri.getIp(), transport->getName(),
+ else if( lookupDestSrv( uri.getIp(), transport,
addr, port )){
res = true;
}
Modified: trunk/libmsip/source/transports/SipTransport.cxx
===================================================================
--- trunk/libmsip/source/transports/SipTransport.cxx 2007-11-18 10:21:07 UTC (rev 3482)
+++ trunk/libmsip/source/transports/SipTransport.cxx 2007-11-18 10:32:42 UTC (rev 3483)
@@ -35,10 +35,17 @@
SipTransport::SipTransport( MRef<Library *> lib ): MPlugin( lib ){
}
-int32_t SipTransport::getDefaultPort(){
+int32_t SipTransport::getDefaultPort() const{
return isSecure() ? 5061 : 5060;
}
+string SipTransport::getSrv() const{
+ string service = isSecure() ? "sips" : "sip";
+ const string &proto = getProtocol();
+
+ return "_" + service + "._" + proto;
+}
+
MRef<StreamSocket *> SipTransport::connect( const IPAddress &addr, uint16_t port, MRef<CertificateSet *> cert_db, MRef<CertificateChain *> certChain ){
throw Exception("Connection less transport");
}
Modified: trunk/libmsip/source/transports/SipTransport.h
===================================================================
--- trunk/libmsip/source/transports/SipTransport.h 2007-11-18 10:21:07 UTC (rev 3482)
+++ trunk/libmsip/source/transports/SipTransport.h 2007-11-18 10:32:42 UTC (rev 3483)
@@ -56,8 +56,11 @@
/**
* @return 5061 for secure transports and 5060 otherwise.
*/
- virtual int32_t getDefaultPort();
+ virtual int32_t getDefaultPort() const;
+ /** @return srv prefix used when looking up SRV RR */
+ virtual std::string getSrv() const;
+
/** Setup a new listening socket */
virtual MRef<SipSocketServer *> createServer( MRef<SipLayerTransport*> receiver, bool ipv6, const std::string &ipString, int32_t prefPort, MRef<CertificateSet *> cert_db = NULL, MRef<CertificateChain *> certChain = NULL ) = 0;
/**
More information about the Minisip-devel
mailing list