On 04/22/2012 06:46 AM, Ross Finlayson wrote:
2. Also I have seen possible ServerMediaSession object relations bug
in RTSPServer::addServerMediaSession/RTSPServer::removeServerMediaSession
methods.
Method addServerMediaSession adds a ServerMediaSession object to
hashmap fServerMediaSessions and call removeServerMediaSession on
ServerMediaSession object previously set in the hashmap (if both
objects have same stream name). Method removeServerMediaSession
removes from the hashmap new ServerMediaSession object just added by
addServerMediaSession.
Yes, this is a bug. It will get fixed in a future release.
I'm sorry, but I fail to see how this was a bug. Seems to me that
RTSPServer::addServerMediaSession was removing an existing
ServerMediaSession with the same name as the one being created, if any.
Which sounded about right.
The current fix, however, as introduced a nasty bug to our application.
We are running a streaming server in which we use a DynamicRTSPServer,
similar to the one of the LIVE555 Media Server application, on which it
is based.
With the current solution, the
DynamicRTSPServer::lookupServerMediaSession method calls
RTSPServer::addServerMediaSession (as before) which calls
RTSPServer::removeServerMediaSession(char const* streamName) which, in
turn, calls DynamicRTSPServer::lookupServerMediaSession again. This
happens recursively until our application crashes.
I tested the live555MediaServer app to see if it was a problem with our
implementation but it exhibits a similar behavior, although, in this
case, recursion only happens about 1000 times and then stops.
I don't know why recursion stops in one case and not on the other, but I
don't think it was supposed to happen at all, anyway. I added a log
message to RTSPServer::addServerMediaSession and LIVE555 Media Server's
DynamicRTSPServer::lookupServerMediaSession and this was the output:
LIVE555 Media Server
version 0.74 (LIVE555 Streaming Media library version 2012.05.11).
...
accept()ed connection from 192.168.1.10
DynamicRTSPServer::lookupServerMediaSession: picolo.264
RTSPServer::addServerMediaSession: picolo.264
DynamicRTSPServer::lookupServerMediaSession: picolo.264
RTSPServer::addServerMediaSession: picolo.264
DynamicRTSPServer::lookupServerMediaSession: picolo.264
RTSPServer::addServerMediaSession: picolo.264
...
last 2 messages repeated about 1000 times
So, I have a question: is this a bug or isn't
DynamicRTSPServer::lookupServerMediaSession supposed to call
RTSPServer::addServerMediaSession?
If it isn't a bug we'll have to fix our app, and I guess the same will
have to be done to LIVE555 Media Server, although it still works.
Otherwise I think the current solution still needs some improvement.
Thank you,
Bruno Abreu
--
Living Data - Sistemas de Informação e Apoio à Decisão, Lda.
LxFactory - Rua Rodrigues de Faria, 103,
edifício I - 4º piso Phone: +351 213622163
1300-501 LISBOA Fax: +351 213622165
Portugal URL: www.livingdata.pt
_______________________________________________
live-devel mailing list
live-devel@lists.live555.com
http://lists.live555.com/mailman/listinfo/live-devel