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