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

Reply via email to