[Live-devel] Set a limit for RTSP Client connections.

Ross Finlayson finlayson at live555.com
Wed Sep 16 16:50:35 PDT 2009


>When too many clients connect to the server, the CPU can't cope with 
>the load, and I start losing frames or get read errors from the pipe 
>I read the frames from (it's a realtime application, and I think the 
>kernel starts to be unstable when the system CPU time is very high).

More likely: You don't have enough OS buffering on your pipe.  You 
can probably increase this.


>So, I'd like to set a static limit to the number of users who can 
>get the live stream at the same time. Is there a way?

No, not without writing new code.


>If there isn't, couldn't I just create a derived class of the 
>RTPsinks I'm using, increase a shared counter everytime their 
>CreateNew() method is called and decrease it in the destructor of 
>the sink?

A better solution would be make changes just to the RTSP server, 
rather than to the (more general) RTP code.  I.e., subclass 
"RTSPServer" and "RTSPClientSession".  Specifically:
- Write a subclass of "RTSPServer" that
	- adds a 'client session counter' member variable
	- redefines the "createNewClientSession()" member function to
		- just return if the counter is already at its limit
		- otherwise increment the counter and create a new 
object of your "RTSPClientSession" subclass (instead of the original 
""RTSPClientSession")
- Write a subclass of "RTSPClientSession" that:
	- has its own destructor that decrements the parent server's counter


>Additionally, the increase and decrease counter operations wouldn't 
>have to be mutually exclusive because the library works in a 
>non-threaded fashion, is it right?

Yes.
-- 

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


More information about the live-devel mailing list