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

erik at minisip.org erik at minisip.org
Wed Feb 14 14:15:29 CET 2007


Author: erik
Date: 2007-02-14 14:15:28 +0100 (Wed, 14 Feb 2007)
New Revision: 3204

Modified:
   trunk/libminisip/include/libminisip/mediahandler/MediaHandler.h
   trunk/libminisip/source/mediahandler/MediaStream.cxx
   trunk/libminisip/source/mediahandler/RtpReceiver.cxx
Log:

 * ...this commit is mainly done to trigger a build - might as well do
   somehting useful:
 * The RTP port has not been closed after a call for quite a while
   (I think the CallRecorder introduced a reference loop that we need
   to break). This commit makes minisip explicitely stop the RtpReceiver
   and "join" the threads.
   This does not break the MRef loop (it's a TODO), but makes minisip
   release the udp port, and join the threads.



Modified: trunk/libminisip/include/libminisip/mediahandler/MediaHandler.h
===================================================================
--- trunk/libminisip/include/libminisip/mediahandler/MediaHandler.h	2007-02-14 11:19:13 UTC (rev 3203)
+++ trunk/libminisip/include/libminisip/mediahandler/MediaHandler.h	2007-02-14 13:15:28 UTC (rev 3204)
@@ -33,7 +33,6 @@
 #include<libminisip/mediahandler/AudioMedia.h>
 #include<libminisip/mediahandler/MediaStream.h>
 #include<libminisip/mediahandler/Session.h>
-#include<libminisip/mediahandler/RtpReceiver.h>
 #include<libminisip/ipprovider/IpProvider.h>
 #include<libmutil/CommandString.h>
 #include<libmutil/MessageRouter.h>

Modified: trunk/libminisip/source/mediahandler/MediaStream.cxx
===================================================================
--- trunk/libminisip/source/mediahandler/MediaStream.cxx	2007-02-14 11:19:13 UTC (rev 3203)
+++ trunk/libminisip/source/mediahandler/MediaStream.cxx	2007-02-14 13:15:28 UTC (rev 3204)
@@ -304,11 +304,20 @@
 
 void MediaStreamReceiver::stop(){
 	list<uint32_t>::iterator i;
-	if( rtpReceiver )
+	if( rtpReceiver ){
 		rtpReceiver->unregisterMediaStream( this );
-	if( rtp6Receiver )
+		rtpReceiver->stop();
+	}
+	if( rtp6Receiver ){
 		rtp6Receiver->unregisterMediaStream( this );
+		rtp6Receiver->stop();
+	}
+	if( rtpReceiver )
+		rtpReceiver->join();
 
+	if( rtp6Receiver )
+		rtp6Receiver->join();
+
 	ssrcListLock.lock();
 	for( i = ssrcList.begin(); i != ssrcList.end(); i++ ){
 		media->unRegisterMediaSource( *i );

Modified: trunk/libminisip/source/mediahandler/RtpReceiver.cxx
===================================================================
--- trunk/libminisip/source/mediahandler/RtpReceiver.cxx	2007-02-14 11:19:13 UTC (rev 3203)
+++ trunk/libminisip/source/mediahandler/RtpReceiver.cxx	2007-02-14 13:15:28 UTC (rev 3204)
@@ -203,7 +203,7 @@
 		tv.tv_sec = 0;
 		tv.tv_usec = 100000;
 
-		while( ret < 0 ){
+		while( !kill && ret < 0 ){
 			ret = select( socket->getFd() + 1, &rfds, NULL, NULL, &tv );
 			if( ret < 0 ){
 				#ifdef DEBUG_OUTPUT
@@ -282,4 +282,5 @@
 
                 packet = NULL;
 	}
+	socket=NULL;
 }



More information about the Minisip-devel mailing list