Hello,
 
Thanks for the fix.  And I will take your advise and use a different email 
account when I post a new issue.  For the moment, I am running into another 
senario of a runaway RTP-over-TCP session, and it is preventing me from testing 
your last fix.  
 
The problem is in the SocketDescriptor::tcpReadHandler1() function between the 
lines 362-368 in RTPInterface.cpp.  What happens is that the handler could not 
complete to frame the TEARDOWN command before the client shuts the socket.  It 
results in a socket read error, and there is no provision to teardown the 
client session.  For whatever reason, this senario keeps happening to me 
nowadays although I am using the same client program [VLC 0.9.6] as before, and 
I cannot verify your last fix.
 
Regards,
John Tam
 
> Date: Tue, 31 Aug 2010 11:11:37 -0700
> To: [email protected]
> From: [email protected]
> Subject: Re: [Live-devel] Server runaway streams for shared session for 
> RTP-over-TCP client
> 
> >I am using the RTSP server functionality of the LiveMedia library, 
> >and I might have resolved a client session management issue. The 
> >senario is when a ServerMediaSubsession is shared 
> >[reuseFirstSource=True] and clients choose RTP-over-TCP for 
> >streaming mode, only the last requested RTP-over-TCP 
> >RTSPClientSession can be torn down. All of the objects under the 
> >ServerMediaSession will be runaways. The MediaSink keeps playing, 
> >and the RTPInstance writes with socket error. The stderr shows 
> >socket write attempts after all of the RTSP clients are closed.
> >
> >I am trying to limit the scope of the impacted code, and there seems 
> >to be two area in the RTPInstance.cpp that are contributing to the 
> >problem. #1, The 
> >RTPInterface::setServerRequestAlternativeByteHandler() function is 
> >overwriting the handler and clientData of an already assigned 
> >SocketDescriptor object. It makes all existing socket descriptor of 
> >the server media subsession to map to the latest RTSPClientSession 
> >instance. #2, When RTCPInstance::addStreamSocket() function adds a 
> >new stream channel, the RTPInterface::stopNetworkReading() function 
> >calls deregisterSocket() and wipes out the existing SocketDescriptor 
> >to RTSPClientSession mapping. Therefore, only the last newly added 
> >SocketDescriptor has a valid fServerRequestAlternativeByteHandler to 
> >notify of RTSP TEARDOWN command.
> 
> At first I didn't pay much attention to this email, both because you 
> were (at first) working with an old version of the code, but also 
> because you were using a "@hotmail.com" email address, which serious 
> professionals do not use. (If you want to be taken seriously on this 
> mailing list, then you should not use "@hotmail", "@yahoo", 
> "@gmail"-type addresses :-)
> 
> But your analysis of the problem was exactly right. I have now 
> installed a new version of the code (2010.08.31) that should, I hope, 
> fix this problem.
> -- 
> 
> Ross Finlayson
> Live Networks, Inc.
> http://www.live555.com/
> _______________________________________________
> live-devel mailing list
> [email protected]
> http://lists.live555.com/mailman/listinfo/live-devel
                                          
_______________________________________________
live-devel mailing list
[email protected]
http://lists.live555.com/mailman/listinfo/live-devel

Reply via email to