I just wanted to update with my findings.  As I suspected, the issue at hand
was that occasionally 2 different RTPClients in the same process would be
assigned the same client_port (either from the server or the algorithm in
MediaSession).    

Basically, my finding is that if the 2 RTSPClient¹s (in separate threads and
usage environments) initiated at about the same time, they would both be
assigned the same port in their bind call.  I notice that in GroupsockHelper
the library does set SO_REUSEADDR and SO_REUSEPORT so multiple binds binds
on the same port will work.  Although on the same port in the same process,
in my experience only 1 receiver will be able to process the incoming UDP
packets.  I have not tried this in multiple processes yet as you suggested,
I will try and do that and report back my findings.

I will be changing the plugin model to share a single UsageEnvironment and
TaskScheduler across many plugins to work around these issues.    This
definitely appears to be the better way forward, and the way the library was
designed to be used.

Stuart



On 3/7/09 6:09 PM, "Ross Finlayson" <[email protected]> wrote:

>>> 1.      My understanding is that so long as each instance of the library
>>> uses its own usageenvironment and event loop, it is ok to have multiple
>>> instances in multiple threads (although I agree this is really not advised).
> 
> Yes, this should work, in principle.  However, it has not been extensively
> tested, and I can't guarantee  that there's not still some inadvertently
> shared state somewhere.  (If anyone finds some, though, please let us know,
> and I'll try to remove it.)
> 
> Have you tried putting your RTSP server in a separate *process* from your
> input plugins.  (Since your plugins are communicating with the server via
> pipes, this should be straightforward, I think...)
> 
>>> 3.      Would it make sense to add an optional base port for the client to
>>> use, similar to RTSPServer?
> 
> No, because there's no standard port number for RTSP *clients*.


- ------------------------------------------------------------------------------
Confidentiality Notice: The information contained in this transmission is 
legally privileged and confidential, intended only for the use of the 
individual(s) or entities named above. This email and any files transmitted 
with it are the property of Pelco. If the reader of this message is not the 
intended recipient, or an employee or agent responsible for delivering this 
message to the intended recipient, you are hereby notified that any review, 
disclosure, copying, distribution, retention, or any action taken or omitted to 
be taken in reliance on it is prohibited and may be unlawful. If you receive 
this communication in error, please notify us immediately by telephone call to 
+1-559-292-1981 or forward the e-mail to [email protected] and then 
permanently delete the e-mail and destroy all soft and hard copies of the 
message and any attachments. Thank you for your cooperation. 
- ------------------------------------------------------------------------------
_______________________________________________
live-devel mailing list
[email protected]
http://lists.live555.com/mailman/listinfo/live-devel

Reply via email to