r2749 - in trunk/libminisip: include/libminisip/mediahandler source/mediahandler

mikma at minisip.org mikma at minisip.org
Thu Sep 7 13:51:39 CEST 2006


Author: mikma
Date: 2006-09-07 13:51:38 +0200 (Thu, 07 Sep 2006)
New Revision: 2749

Modified:
   trunk/libminisip/include/libminisip/mediahandler/MediaHandler.h
   trunk/libminisip/source/mediahandler/MediaHandler.cxx
Log:
Add IPv6 support to MediaHandler


Modified: trunk/libminisip/include/libminisip/mediahandler/MediaHandler.h
===================================================================
--- trunk/libminisip/include/libminisip/mediahandler/MediaHandler.h	2006-09-07 11:38:00 UTC (rev 2748)
+++ trunk/libminisip/include/libminisip/mediahandler/MediaHandler.h	2006-09-07 11:51:38 UTC (rev 2749)
@@ -52,7 +52,7 @@
 		 * @param ipProvider reference to the public IP provider, used
 		 * for NAT traversal mechanisms
 		 */
-		MediaHandler( MRef<SipSoftPhoneConfiguration *> config, MRef<IpProvider *> ipProvider );
+		MediaHandler( MRef<SipSoftPhoneConfiguration *> config, MRef<IpProvider *> ipProvider, MRef<IpProvider *> ip6Provider = NULL );
 		virtual ~MediaHandler();
 		
 		/**
@@ -133,6 +133,7 @@
 
 		MRef<AudioMedia *> audioMedia;
 		MRef<IpProvider *> ipProvider;
+		MRef<IpProvider *> ip6Provider;
 		MRef<SipSoftPhoneConfiguration *> config;
                 
                 MRef<CommandReceiver*> messageRouterCallback;

Modified: trunk/libminisip/source/mediahandler/MediaHandler.cxx
===================================================================
--- trunk/libminisip/source/mediahandler/MediaHandler.cxx	2006-09-07 11:38:00 UTC (rev 2748)
+++ trunk/libminisip/source/mediahandler/MediaHandler.cxx	2006-09-07 11:51:38 UTC (rev 2749)
@@ -55,7 +55,7 @@
 
 using namespace std;
 
-MediaHandler::MediaHandler( MRef<SipSoftPhoneConfiguration *> config, MRef<IpProvider *> ipProvider ){
+MediaHandler::MediaHandler( MRef<SipSoftPhoneConfiguration *> config, MRef<IpProvider *> ipProvider, MRef<IpProvider *> ip6Provider ): ip6Provider(ip6Provider){
 
 	this->ipProvider = ipProvider;
 	this->config = config;
@@ -108,25 +108,35 @@
 
 	list< MRef<Media *> >::iterator i;
 	MRef<Session *> session;
-	MRef<MediaStreamReceiver *> rStream;
-	MRef<MediaStreamSender *> sStream;
 	MRef<RtpReceiver *> rtpReceiver = NULL;
+	MRef<RtpReceiver *> rtp6Receiver;
 	string contactIp;
+	string contactIp6;
 #ifdef ZRTP_SUPPORT
 	MRef<ZrtpHostBridgeMinisip *> zhb = NULL;
 #endif
 
-	contactIp = ipProvider->getExternalIp();
+	if( ipProvider )
+		contactIp = ipProvider->getExternalIp();
 
-	session = new Session( contactIp, securityConfig );
+	if( ip6Provider )
+		contactIp6 = ip6Provider->getExternalIp();
+
+	session = new Session( contactIp, securityConfig, contactIp6 );
 	session->setCallId( callId );
 
 	for( i = media.begin(); i != media.end(); i++ ){
 		MRef<Media *> media = *i;
 
 		if( media->receive ){
-			rtpReceiver = new RtpReceiver( ipProvider );
-			rStream = new MediaStreamReceiver( media, rtpReceiver );
+			if( ipProvider )
+				rtpReceiver = new RtpReceiver( ipProvider );
+
+			if( ip6Provider )
+				rtp6Receiver = new RtpReceiver( ip6Provider );
+
+			MRef<MediaStreamReceiver *> rStream;
+			rStream = new MediaStreamReceiver( media, rtpReceiver, rtp6Receiver );
 			session->addMediaStreamReceiver( rStream );
 			if( (*i) == this->audioMedia ) {
 				CallRecorder * cr;
@@ -147,10 +157,24 @@
 		}
 		
 		if( media->send ){
-		    if( !rtpReceiver ){
+		    if( !rtpReceiver && !ipProvider.isNull() ){
 			rtpReceiver = new RtpReceiver( ipProvider );
 		    }
-		    sStream = new MediaStreamSender( media, rtpReceiver->getSocket() );
+
+		    if( !rtp6Receiver && !ip6Provider.isNull() ){
+		      rtp6Receiver = new RtpReceiver( ip6Provider );
+		    }
+
+		    MRef<UDPSocket *> sock;
+		    MRef<UDPSocket *> sock6;
+
+		    if( rtpReceiver )
+			    sock = rtpReceiver->getSocket();
+		    if( rtp6Receiver )
+			    sock6 = rtp6Receiver->getSocket();
+
+		    MRef<MediaStreamSender *> sStream;
+		    sStream = new MediaStreamSender( media, sock, sock6 );
 		    session->addMediaStreamSender( sStream );
 #ifdef ZRTP_SUPPORT
 		    if(securityConfig.use_zrtp) {



More information about the Minisip-devel mailing list