r3484 - in trunk/libmsip/source: . transports

mikma at minisip.org mikma at minisip.org
Sun Nov 18 11:40:46 CET 2007


Author: mikma
Date: 2007-11-18 11:40:45 +0100 (Sun, 18 Nov 2007)
New Revision: 3484

Modified:
   trunk/libmsip/source/SipLayerTransport.cxx
   trunk/libmsip/source/SipLayerTransport.h
   trunk/libmsip/source/transports/SipTransport.h
   trunk/libmsip/source/transports/SipTransportTcp.h
   trunk/libmsip/source/transports/SipTransportTls.h
   trunk/libmsip/source/transports/SipTransportUdp.h
Log:
Implement SipTransport::getSocketType(),
and update SipLayerTransport to use it.


Modified: trunk/libmsip/source/SipLayerTransport.cxx
===================================================================
--- trunk/libmsip/source/SipLayerTransport.cxx	2007-11-18 10:32:42 UTC (rev 3483)
+++ trunk/libmsip/source/SipLayerTransport.cxx	2007-11-18 10:40:45 UTC (rev 3484)
@@ -712,11 +712,11 @@
 	}
 
 	sendMessage( pack, /* **destAddr */ destAddr, destPort,
-		     branch, destTransport->getName(), addVia );
+		     branch, destTransport, addVia );
 }
 
 
-bool SipLayerTransport::findSocket(const string &transport,
+bool SipLayerTransport::findSocket(MRef<SipTransport*> transport,
 				   IPAddress &destAddr,
 				   uint16_t port,
 				   MRef<SipSocketServer*> &server,
@@ -726,17 +726,8 @@
 	int32_t type = 0;
 
 	ipv6 = (destAddr.getType() == IP_ADDRESS_TYPE_V6);
+	type = transport->getSocketType();
 
-	if( transport == "UDP" ){
-		type = SOCKET_TYPE_UDP;
-	}
-	else if( transport == "TCP" ){
-		type = SOCKET_TYPE_TCP;
-	}
-	else if( transport == "TLS" ){
-		type = SOCKET_TYPE_TLS;
-	}
-
 	serversLock.lock();
 	server = findServer(type, ipv6);
 	serversLock.unlock();
@@ -748,18 +739,8 @@
 			 * create one */
 			cerr << "SipLayerTransport: sendMessage: creating new socket" << endl;
 
-			// TODO cleanup
-			bool secure = false;
-			string protocol = transport;
-			if( protocol == "TLS" || protocol == "tls" ){
-				protocol = "TCP";
-				secure = true;
-			}
-
-			MRef<SipTransport*> plugin =
-				SipTransportRegistry::getInstance()->findTransport( protocol, secure );
-			ssocket = plugin->connect( destAddr, port,
-						   cert_db, getCertificateChain() );
+			ssocket = transport->connect( destAddr, port,
+						      cert_db, getCertificateChain() );
 			addSocket( ssocket );
 		} else cerr << "SipLayerTransport: sendMessage: reusing old socket" << endl;
 		socket = *ssocket;
@@ -847,7 +828,7 @@
 				      const string &ip_addr,
 				      int32_t port, 
 				      string branch,
-				      string preferredTransport,
+				      MRef<SipTransport*> transport,
 				      bool addVia)
 {
 	MRef<Socket *> socket;
@@ -876,7 +857,7 @@
 		}
 
 		if( !socket ){
-			findSocket(preferredTransport, **destAddr, (uint16_t)port, server, socket);
+			findSocket(transport, **destAddr, (uint16_t)port, server, socket);
 			pack->setSocket( socket );
 
 			if( !socket ){

Modified: trunk/libmsip/source/SipLayerTransport.h
===================================================================
--- trunk/libmsip/source/SipLayerTransport.h	2007-11-18 10:32:42 UTC (rev 3483)
+++ trunk/libmsip/source/SipLayerTransport.h	2007-11-18 10:40:45 UTC (rev 3484)
@@ -93,7 +93,7 @@
 				 const std::string &toaddr,
 				int32_t port, 
 				std::string branch,
-				std::string preferredTransport,
+				MRef<SipTransport*> transport,
 				bool addVia
 				);
 
@@ -119,7 +119,7 @@
 				    int32_t &destPort, MRef<SipTransport*> &destTransport);
 		void addViaHeader( MRef<SipMessage*> pack, MRef<SipSocketServer*> server, MRef<Socket *> socket, std::string branch );
 		MRef<StreamSocket *> findStreamSocket(IPAddress&, uint16_t);
-		bool findSocket(const std::string &transport,
+		bool findSocket( MRef<SipTransport*> transport,
 					 IPAddress &addr,
 					 uint16_t port,
 					 MRef<SipSocketServer*> &server,

Modified: trunk/libmsip/source/transports/SipTransport.h
===================================================================
--- trunk/libmsip/source/transports/SipTransport.h	2007-11-18 10:32:42 UTC (rev 3483)
+++ trunk/libmsip/source/transports/SipTransport.h	2007-11-18 10:40:45 UTC (rev 3484)
@@ -61,6 +61,11 @@
 		/** @return srv prefix used when looking up SRV RR */
 		virtual std::string getSrv() const;
 
+		/**
+		 * One of SOCKET_TYPE_*
+		 */
+		virtual int32_t getSocketType() const=0;
+
 		/** 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;
 		/**

Modified: trunk/libmsip/source/transports/SipTransportTcp.h
===================================================================
--- trunk/libmsip/source/transports/SipTransportTcp.h	2007-11-18 10:32:42 UTC (rev 3483)
+++ trunk/libmsip/source/transports/SipTransportTcp.h	2007-11-18 10:40:45 UTC (rev 3484)
@@ -40,6 +40,8 @@
 
 		virtual std::string getViaProtocol() const { return "TCP"; }
 
+		virtual int32_t getSocketType() const { return SOCKET_TYPE_TCP; }
+
 		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 );
 
 		virtual MRef<StreamSocket *> connect( const IPAddress &addr, uint16_t port, MRef<CertificateSet *> cert_db = NULL, MRef<CertificateChain *> certChain = NULL );

Modified: trunk/libmsip/source/transports/SipTransportTls.h
===================================================================
--- trunk/libmsip/source/transports/SipTransportTls.h	2007-11-18 10:32:42 UTC (rev 3483)
+++ trunk/libmsip/source/transports/SipTransportTls.h	2007-11-18 10:40:45 UTC (rev 3484)
@@ -40,6 +40,8 @@
 
 		virtual std::string getViaProtocol() const { return "TLS"; }
 
+		virtual int32_t getSocketType() const { return SOCKET_TYPE_TLS; }
+
 		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 );
 
 		virtual MRef<StreamSocket *> connect( const IPAddress &addr, uint16_t port, MRef<CertificateSet *> cert_db = NULL, MRef<CertificateChain *> certChain = NULL );

Modified: trunk/libmsip/source/transports/SipTransportUdp.h
===================================================================
--- trunk/libmsip/source/transports/SipTransportUdp.h	2007-11-18 10:32:42 UTC (rev 3483)
+++ trunk/libmsip/source/transports/SipTransportUdp.h	2007-11-18 10:40:45 UTC (rev 3484)
@@ -40,6 +40,8 @@
 
 		virtual std::string getViaProtocol() const { return "UDP"; }
 
+		virtual int32_t getSocketType() const { return SOCKET_TYPE_UDP; }
+
 		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 );
 
 		// MPlugin



More information about the Minisip-devel mailing list