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