[Live-devel] Stream cutoff because openRTSP ignores timeout in Session header

Ross Finlayson finlayson at live555.com
Fri Jul 16 08:05:04 PDT 2010


>We currently discovered a problem when we used openRTSP to download a
>stream. The server includes a timeout parameter in the Session header
>but openRTSP ignores it. The timeout is set to 50 s and after 60 s
>play time the server stops sending RTP packets and sends TCP-RST on
>the RTSP port. Of course, the RTCP RRs are sent from openRTSP and we
>know that they are recieved on the server. However, it's not enough as
>keep-alive indication.

Then that's a problem with the server; it should be using these 
incoming RTCP "RR"s as a 'keep-alive'.


>I saw in the changelog that in 2006 you added parsing the timeout
>parameter of the Session header and the sessionTimeoutParameter()
>function. However, openRTSP doesn't use it. Is this a bug or intended
>behaviour?

Intended behavior.  The standard mechanism by which servers detect 
the continued liveness of clients is via RTCP "RR"s.  Note that the 
intention of the "timeout" parameter in the RTSP "SETUP" response is 
to indicate how long the server can wait after the last detection of 
client liveness before closing the session.  It is *not* intended to 
indicate the desired frequency of some alternative 'keep-alive' 
mechanism (such as sending periodic "GET_PARAMETER" requests, for 
example).

I think that VLC, however, might be using the "timeout" parameter 
this way (as the frequency for sending "GET_PARAMETER" requests). 
However, this is non-standard, and there are no plans to do this for 
"openRTSP".  (It might conceivable be added as an option (i.e., not 
default behavior) sometime in the future, but this would be 
low-priority, as is support for non-standards-complant servers in 
general.)


>PS: Are you interested in a patch that allows to set the User-Agent
>header in openRTSP on the command line? In our experience in mobile
>networks it's only possible to get a reasonable stream quality if the
>User-Agent matches one of some known mobile types.

Mumble...  I detest the idea that some servers may be modifying their 
behavior based on the client's "User-Agent" field.  Can you give some 
examples of this?

However, I might consider a patch for setting the "User-Agent" field 
in "openRTSP", because it should be quite simple (because there's 
already a function "RTSPClient::setUserAgentString()" for doing 
this).  I suggest using the "-U" (upper-case) option for this.

If you make a patch, be sure to do so against the latest version of 
the code - 2010.07.13 - because "openRTSP" has undergone extensive 
changes in that version (to use the new asynchronous RTSPClient 
interface exclusively).
-- 

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


More information about the live-devel mailing list