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