rtsp: skip malformed RTSP interleaved frame data

Some IP cameras send malformed RTSP interleaved frames sometimes, which
can cause curl_easy_perform return 1 (CURLE_UNSUPPORTED_PROTOCOL).  This
change attempts to skip clearly incorrect RTSP interleaving frame data.

Closes #10808
This commit is contained in:
dengjfzh 2023-03-21 15:45:59 +08:00 committed by Daniel Stenberg
parent 61f52a97e9
commit 6c6306f300
No known key found for this signature in database
GPG key ID: 5CC908FDB71E12C2
6 changed files with 174 additions and 50 deletions

View file

@ -19,6 +19,7 @@ RTSP/1.0 200 OK
Server: RTSPD/libcurl-test
Session: asdf
CSeq: 1
Transport: RTP/AVP/TCP;unicast;interleaved=0-1
</data1>
@ -54,6 +55,7 @@ rtp: part 2 channel 0 size 500
rtp: part 2 channel 0 size 196
rtp: part 2 channel 0 size 124
rtp: part 2 channel 0 size 824
rtp: part 2 channel 0 size 18 size_err -6
rtp: part 3 channel 1 size 10
rtp: part 3 channel 0 size 50
rtp: part 4 channel 0 size 798
@ -62,6 +64,12 @@ rtp: part 4 channel 1 size 30
rtp: part 4 channel 0 size 2048
rtp: part 4 channel 0 size 85
rtp: part 4 channel 1 size 24
rtp: part 4 channel 0 size 17 size_err -4
rtp: part 4 channel 0 size 33
rtp: part 4 channel 0 size 127
rtp: part 4 channel 1 size 24 size_err 11
rtp: part 4 channel 0 size 37
rtp: part 4 channel 0 size 63
</servercmd>
</reply>
@ -89,6 +97,7 @@ RTP: message size 500, channel 0
RTP: message size 196, channel 0
RTP: message size 124, channel 0
RTP: message size 824, channel 0
RTP: message size 12, channel 0
RTP: message size 10, channel 1
RTP: message size 50, channel 0
RTP: message size 798, channel 0
@ -97,6 +106,12 @@ RTP: message size 30, channel 1
RTP: message size 2048, channel 0
RTP: message size 85, channel 0
RTP: message size 24, channel 1
RTP: message size 13, channel 0
RTP: message size 33, channel 0
RTP: message size 127, channel 0
RTP: message size 35, channel 1
RTP PAYLOAD END CORRUPTED (11), [$]
RTP: message size 63, channel 0
</stdout>
<file name="log/protofile%TESTNUMBER.txt">