[Live-devel] New "LIVE555 Streaming Media" version, makes servers handle RTP/RTCP-over-TCP send() failures more gracefully
Ross Finlayson
finlayson at live555.com
Tue Oct 16 13:22:55 PDT 2012
After running some tests, I was able to confirm that my suspicions on the cause of the RTP/RTCP-over-TCP issues that Ralf Globisch has been seeing was correct: The problems are caused by some of the server's "send()" calls (on the TCP socket) failing with the 'EAGAIN' error, presumably because the data stream's bit rate has (at least temporarily) exceeded the capacity of the TCP connection. Because transmitting a RTP or RTCP packet over a TCP connection involves four different "send()"s (the '$', the 'stream channel id', packet size, and the packet data), the failure of one - but not all - of these four "send()"s will cause incomplete binary data to appear on the receiver's TCP connection.
I have installed a new version (2012.10.16) of the "LIVE555 Streaming Media" software that makes servers handle this a bit more gracefully. If the initial '$' send succeeds, but one of the remaining data send()s (i.e, the 'stream channel id', packet size, or packet data) fails with 'EAGAIN', then we force those send()s to succeed, by temporarily blocking if necessary.
(So, Ralf should now upgrade his server(s) to use the latest version of the software.)
However, a reminder to everyone, once again, that RTP/RTCP-over-TCP streaming should be used *only* if you are behind a firewall that blocks UDP packets.
Ross Finlayson
Live Networks, Inc.
http://www.live555.com/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.live555.com/pipermail/live-devel/attachments/20121016/ee034024/attachment.html>
More information about the live-devel
mailing list