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/
_______________________________________________
live-devel mailing list
live-devel@lists.live555.com
http://lists.live555.com/mailman/listinfo/live-devel