I did not ran into the limit of sockets per thread but using netstat, I
found out that sometimes two pairs of sockets used the same RTP and RTCP
port numbers.

It's the server that decides what port numbers are used for RTP and RTCP for each stream. If RTP and/or RTCP port numbers are being reused, then that appears to be a bug in your server. (Our RTSP server code should not be doing this, so I hope your server is not using our code.)


Also, in the MediaSubsession::initiate(int useSpecialRTPoffset) function
only the pointer value of fRT(C)PSocket is checked after the creation of a
Groupsock object. But if the socket creation call returns -1 in the
constructor, the program will continue using the invalid socket handle.
Apart from the pointer value of fRT(C)PSocket, the value of fSocketNum
should be checked.

Yes, you're probably right.


A last remark in the MediaSubsession::initiate(int useSpecialRTPoffset)
function: I noticed that when the user does not specify a start port value
(fClientsPortNum) sockets are created and checked if they are bound to an
even port. If they don't they are added to a socketHashTable and a new
socket is created until successful. Why not just create two sockets and
trying to bind them to a given port number, just as is done when the user
actually does give a start port number

Because that's not what we want to do. Instead, we want the operating system to chose a port number for itself (this is, by convention, called an "ephemeral port number"). We just have to make sure that even port numbers are used for RTP.
--

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

Reply via email to