[Live-devel] Proxy Server rtsperver timeout with 400 error

Craig Matsuura cmatsuura at vivint.com
Sun Nov 3 01:51:01 PST 2013


Ok, so I did a quick run of the liveProxyServer.  See 400 Bad Request below, this is when I connect my RTSPClient to rtsp://172.16.10.100/proxyStream (The client was gstreamer playbin2)

root at custom:~# live555ProxyServer -V rtsp://172.16.10.109/live.s
dp
LIVE555 Proxy Server
        (LIVE555 Streaming Media library version 2013.10.25)

Opening connection to 172.16.10.109, port 554...
RTSP stream, proxying the stream "rtsp://172.16.10.109/live.sdp"<rtsp://172.16.10.109/live.sdp>
        Play this stream using the URL: rtsp://172.16.10.100/proxyStream

(We use port 80 for optional RTSP-over-HTTP tunneling.)
...remote connection opened
Sending request: DESCRIBE rtsp://172.16.10.109/live.sdp RTSP/1.0
CSeq: 2
User-Agent: ProxyRTSPClient (LIVE555 Streaming Media v2013.10.25)
Accept: application/sdp


Received 509 new bytes of response data.
Received a complete DESCRIBE response:
RTSP/1.0 200 OK
CSeq: 2
Date: Sun, 3 Nov 2013 1:43:44 GMT
Content-Base: rtsp://172.16.10.109/live.sdp/
Content-Type: application/sdp
Content-Length: 348

v=0
o=RTSP 1383443024 281 IN IP4 0.0.0.0
s=RTSP server
c=IN IP4 0.0.0.0
t=0 0
a=charset:Shift_JIS
a=range:npt=0-
a=control:*
a=etag:1234567890
m=video 0 RTP/AVP 98
b=AS:0
a=rtpmap:98 H264/90000
a=control:trackID=1
a=fmtp:98 packetization-mode=1; profile-level-id=64401f; sprop-parameter-sets=J2RAH6wsagFAFumoKDAqAAAH0gAB1MAo,KO4EYsA=

ProxyServerMediaSession["rtsp://172.16.10.109/live.sdp/"<rtsp://172.16.10.109/live.sdp/>] added new "ProxyServerMediaSubsession" for RTP/video/H264 track

Opening connection to 172.16.10.109, port 554...
...remote connection opened
Sending request: OPTIONS rtsp://172.16.10.109/live.sdp/ RTSP/1.0
CSeq: 3
User-Agent: ProxyRTSPClient (LIVE555 Streaming Media v2013.10.25)


Received 143 new bytes of response data.
Received a complete OPTIONS response:
RTSP/1.0 200 OK
CSeq: 3
Date: Sun, 3 Nov 2013 1:44:32 GMT
Public: OPTIONS, DESCRIBE, PLAY, SETUP, GET_PARAMETER, SET_PARAMETER, TEARDOWN

ProxyServerMediaSubsession["H264"]::createNewStreamSource(session id 0)
        Initiated: ProxyServerMediaSubsession["H264"]
ProxyServerMediaSubsession["H264"]::createNewRTPSink()
ProxyServerMediaSubsession["H264"]::closeStreamSource()
ProxyServerMediaSubsession["H264"]::createNewStreamSource(session id 4232835661)
Opening connection to 172.16.10.109, port 554...
ProxyServerMediaSubsession["H264"]::createNewRTPSink()
...remote connection opened
Sending request: SETUP rtsp://172.16.10.109/live.sdp/trackID=1 RTSP/1.0
CSeq: 4
User-Agent: ProxyRTSPClient (LIVE555 Streaming Media v2013.10.25)
Transport: RTP/AVP;unicast;client_port=60278-60279


Received 37 new bytes of response data.
Received a complete SETUP response:
RTSP/1.0 400 Bad Request
CSeq: 4



ProxyServerMediaSubsession["H264"]::closeStreamSource()
ProxyServerMediaSubsession["H264"]::createNewStreamSource(session id 468786568)
Opening connection to 172.16.10.109, port 554...
ProxyServerMediaSubsession["H264"]::createNewRTPSink()
...remote connection opened
Opening connection to 172.16.10.109, port 554...
...remote connection opened
Sending request: OPTIONS rtsp://172.16.10.109/live.sdp/ RTSP/1.0
CSeq: 6
User-Agent: ProxyRTSPClient (LIVE555 Streaming Media v2013.10.25)


Received 143 new bytes of response data.
Received a complete OPTIONS response:
RTSP/1.0 200 OK
CSeq: 6
Date: Sun, 3 Nov 2013 1:45:26 GMT
Public: OPTIONS, DESCRIBE, PLAY, SETUP, GET_PARAMETER, SET_PARAMETER, TEARDOWN


-----------


I was looking into the RTSPClient code and in the handleResponseBytes(), it does not a handle a 400 Bad request.  Which maybe ideal when not a proxy server.  However in the case of being a proxy server you would want to treat a failure such as a 400  as a disconnect (I would think) and reconnect as if the liveness responded with an error?

As a test I modified handleResponseBytes() to call a virtual function that I can override in the ProxyRTSPClient to handle 400 like a disconnect. As if the continueAfterLivenessCommand() was called with a resultCode < 0.  It sometimes recovers now, but it causes problems with my RTSP Client and fails too.  So I wait for your guidence.

Thanks,
Craig



On 11/03/2013 01:32 AM, Ross Finlayson wrote:
Please post an example of the diagnostic output from the *unmodified* proxy server, when run with the back-end server that causes you a problem.  I.e., run the server with the "-V" command-line option.

(And, as always, make sure you're using the most up-to-date version of the code.)

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/20131103/e5b81a76/attachment-0001.html>


More information about the live-devel mailing list