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