r3493 - trunk/libmsip/source/transports

mikma at minisip.org mikma at minisip.org
Sun Nov 18 22:58:05 CET 2007


Author: mikma
Date: 2007-11-18 22:58:05 +0100 (Sun, 18 Nov 2007)
New Revision: 3493

Modified:
   trunk/libmsip/source/transports/SipTransport.cxx
   trunk/libmsip/source/transports/SipTransport.h
   trunk/libmsip/source/transports/SipTransportDtlsUdp.h
   trunk/libmsip/source/transports/SipTransportTcp.h
   trunk/libmsip/source/transports/SipTransportTls.h
   trunk/libmsip/source/transports/SipTransportUdp.h
Log:
Add support for NAPTR service fields to SipTransport:s


Modified: trunk/libmsip/source/transports/SipTransport.cxx
===================================================================
--- trunk/libmsip/source/transports/SipTransport.cxx	2007-11-18 21:26:24 UTC (rev 3492)
+++ trunk/libmsip/source/transports/SipTransport.cxx	2007-11-18 21:58:05 UTC (rev 3493)
@@ -65,6 +65,31 @@
 #endif
 }
 
+list<string> SipTransportRegistry::getNaptrServices( bool secureOnly ) const{
+	list<string> services;
+	list< MRef<MPlugin*> >::const_iterator iter;
+	list< MRef<MPlugin*> >::const_iterator stop = plugins.end();
+
+	for( iter = plugins.begin(); iter != stop; iter++ ){
+		MRef<MPlugin*> plugin = *iter;
+
+		if( !plugin )
+			continue;
+
+		MRef<SipTransport*> transport =
+			dynamic_cast<SipTransport*>( *plugin );
+
+		if( !transport )
+			continue;
+
+		if( !secureOnly || transport->isSecure() ){
+			services.push_back( transport->getNaptrService() );
+		}
+	}
+
+	return services;
+}
+
 MRef<SipTransport*> SipTransportRegistry::findTransport( const string &protocol, bool secure ) const{
 	string lcProt = protocol;
 	list< MRef<MPlugin*> >::const_iterator iter;
@@ -158,3 +183,28 @@
 
 	return NULL;
 }
+
+MRef<SipTransport*> SipTransportRegistry::findTransportByNaptr( const std::string &service ) const{
+	list< MRef<MPlugin*> >::const_iterator iter;
+	list< MRef<MPlugin*> >::const_iterator stop = plugins.end();
+
+	for( iter = plugins.begin(); iter != stop; iter++ ){
+		MRef<MPlugin*> plugin = *iter;
+
+		if( !plugin )
+			continue;
+
+		MRef<SipTransport*> transport =
+			dynamic_cast<SipTransport*>( *plugin );
+
+		if( !transport )
+			continue;
+
+		if( transport->getNaptrService() == service ){
+			mdbg << "SipTransport: NAPTR service found!!! =  " << service << endl;
+			return transport;
+		}
+	}
+
+	return NULL;
+}

Modified: trunk/libmsip/source/transports/SipTransport.h
===================================================================
--- trunk/libmsip/source/transports/SipTransport.h	2007-11-18 21:26:24 UTC (rev 3492)
+++ trunk/libmsip/source/transports/SipTransport.h	2007-11-18 21:58:05 UTC (rev 3493)
@@ -64,6 +64,9 @@
 		/** @return srv prefix used when looking up SRV RR */
 		virtual std::string getSrv() const;
 
+		/** @return NAPTR services field value */
+		virtual std::string getNaptrService() const=0;
+
 		/**
 		 * One of SOCKET_TYPE_*
 		 */
@@ -90,6 +93,8 @@
 	public:
 		virtual std::string getPluginType(){ return "SipTransport"; }
 
+		std::list<std::string> getNaptrServices( bool secureOnly ) const;
+
 		MRef<SipTransport*> findTransport( const std::string &protocol, bool secure=false ) const;
 
 		MRef<SipTransport*> findViaTransport( const std::string &protocol ) const;
@@ -100,6 +105,9 @@
 		/** Search for transport by plugin name */  
 		MRef<SipTransport*> findTransportByName( const std::string &name ) const;
 
+		/** Search for transport by NAPTR service field */
+		MRef<SipTransport*> findTransportByNaptr( const std::string &service ) const;
+
 	protected:
 		SipTransportRegistry();
 

Modified: trunk/libmsip/source/transports/SipTransportDtlsUdp.h
===================================================================
--- trunk/libmsip/source/transports/SipTransportDtlsUdp.h	2007-11-18 21:26:24 UTC (rev 3492)
+++ trunk/libmsip/source/transports/SipTransportDtlsUdp.h	2007-11-18 21:58:05 UTC (rev 3493)
@@ -43,6 +43,8 @@
 
 		virtual int32_t getSocketType() const { return SOCKET_TYPE_DTLS_UDP; }
 
+		virtual std::string getNaptrService() const { return "SIPS+D2U"; }
+
 		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

Modified: trunk/libmsip/source/transports/SipTransportTcp.h
===================================================================
--- trunk/libmsip/source/transports/SipTransportTcp.h	2007-11-18 21:26:24 UTC (rev 3492)
+++ trunk/libmsip/source/transports/SipTransportTcp.h	2007-11-18 21:58:05 UTC (rev 3493)
@@ -42,6 +42,8 @@
 
 		virtual int32_t getSocketType() const { return SOCKET_TYPE_TCP; }
 
+		virtual std::string getNaptrService() const { return "SIP+D2T"; }
+
 		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 21:26:24 UTC (rev 3492)
+++ trunk/libmsip/source/transports/SipTransportTls.h	2007-11-18 21:58:05 UTC (rev 3493)
@@ -42,6 +42,8 @@
 
 		virtual int32_t getSocketType() const { return SOCKET_TYPE_TLS; }
 
+		virtual std::string getNaptrService() const { return "SIPS+D2T"; }
+
 		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 21:26:24 UTC (rev 3492)
+++ trunk/libmsip/source/transports/SipTransportUdp.h	2007-11-18 21:58:05 UTC (rev 3493)
@@ -42,6 +42,8 @@
 
 		virtual int32_t getSocketType() const { return SOCKET_TYPE_UDP; }
 
+		virtual std::string getNaptrService() const { return "SIP+D2U"; }
+
 		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