[Live-devel] bug in BasicTaskScheduler.cpp ?

Ross Finlayson finlayson at live555.com
Tue Nov 11 01:22:59 PST 2008


>2. What happen is very tricky, it has taken some time to understand 
>why it was getting stuck after some BYEs. Even if RTP-over-TCP is 
>used, the UDP handlers are registered. They never get called because 
>the select in SingleStep never "activate" them, since there are no 
>UDP packets incoming.

That doesn't matter, because *TCP* packets will still be arriving (on 
the TCP socket), and will be handled.  This is a Red Herring.

As I said before, if your code properly closes your "RTPInterface" 
objects, all of the sockets will end up being closed properly (and 
all of its event loop handlers will also be deleted).  So it won't 
matter if the same socket number(s) end up getting used again later.

In the current code, there are two possible ways that "RTPInterface" 
objects (when used for RTP-over-TCP) get closed.
1/ By calling "RTPInterface::removeStreamSocket()" (e.g, as is done 
in "OnDemandServerMediaSubsession.cpp"), or
2/ By calling "RTPInterface::stopNetworkReading()" (e.g., as is done 
in "MultiFramedRTPSource.cpp")

Only then should you actually delete the "RTPinterface" object.

I'm sorry, but because we're talking about your own custom code, I 
can't help you any more with this.  (So this will probably be my last 
posting on this topic.)  But there is nothing wrong with 
"BasicTaskScheduler", and there are no plans to modify that code.
-- 

Ross Finlayson
Live Networks, Inc.
http://www.live555.com/


More information about the live-devel mailing list