r3482 - in trunk/libmsip/source: . transports

mikma at minisip.org mikma at minisip.org
Sun Nov 18 11:21:07 CET 2007


Author: mikma
Date: 2007-11-18 11:21:07 +0100 (Sun, 18 Nov 2007)
New Revision: 3482

Modified:
   trunk/libmsip/source/SipLayerTransport.cxx
   trunk/libmsip/source/transports/SipTransport.cxx
   trunk/libmsip/source/transports/SipTransport.h
Log:
Implement SipTransport::getDefaultPort


Modified: trunk/libmsip/source/SipLayerTransport.cxx
===================================================================
--- trunk/libmsip/source/SipLayerTransport.cxx	2007-11-18 10:10:14 UTC (rev 3481)
+++ trunk/libmsip/source/SipLayerTransport.cxx	2007-11-18 10:21:07 UTC (rev 3482)
@@ -512,17 +512,6 @@
 	pack->addBefore( hdr );
 }
 
-static int32_t getDefaultPort(const string &transport)
-{
-	if( transport == "TLS" ){
-		return 5061;
-	}
-	else{
-		return 5060;
-	}
-}
-
-
 static bool lookupDestSrv(const string &domain, const string &transport,
 			  string &destAddr, int32_t &destPort)
 {
@@ -551,7 +540,7 @@
 }
 
 // RFC 3263 4.2 Determining Port and IP Address
-static bool lookupDestIpPort(const SipUri &uri, const string &transport,
+static bool lookupDestIpPort(const SipUri &uri, MRef<SipTransport*> transport,
 			     string &destAddr, int32_t &destPort)
 {
 	bool res = false;
@@ -566,7 +555,7 @@
 		if( IPAddress::isNumeric( addr ) ){
 			res = true;
 			if( !port ){
-				port = getDefaultPort( transport );
+				port = transport->getDefaultPort();
 			}
 		}
 		// Not numeric	
@@ -575,13 +564,13 @@
 			res = true;
 		}
 		// Lookup SRV
-		else if( lookupDestSrv( uri.getIp(), transport,
+		else if( lookupDestSrv( uri.getIp(), transport->getName(),
 					addr, port )){
 			res = true;
 		}
 		else{
 			// Lookup A or AAAA
-			port = getDefaultPort( transport );
+			port = transport->getDefaultPort();
 			res = true;
 		}
 	}
@@ -700,7 +689,7 @@
 					return false;
 				}
 
-				return lookupDestIpPort(uri, destTransport->getName(), 
+				return lookupDestIpPort(uri, destTransport, 
 							destAddr, destPort);
 			}
 		}

Modified: trunk/libmsip/source/transports/SipTransport.cxx
===================================================================
--- trunk/libmsip/source/transports/SipTransport.cxx	2007-11-18 10:10:14 UTC (rev 3481)
+++ trunk/libmsip/source/transports/SipTransport.cxx	2007-11-18 10:21:07 UTC (rev 3482)
@@ -35,6 +35,10 @@
 SipTransport::SipTransport( MRef<Library *> lib ): MPlugin( lib ){
 }
 
+int32_t SipTransport::getDefaultPort(){
+	return isSecure() ? 5061 : 5060;
+}
+
 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:10:14 UTC (rev 3481)
+++ trunk/libmsip/source/transports/SipTransport.h	2007-11-18 10:21:07 UTC (rev 3482)
@@ -53,6 +53,11 @@
 		 */
 		virtual std::string getViaProtocol() const=0;
 
+		/**
+		 * @return 5061 for secure transports and 5060 otherwise.
+		 */
+		virtual int32_t getDefaultPort();
+
 		/** 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