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