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