[Live-devel] RTSP/1.0 Transport parsing conformance questions in LIVE555 2026.07.08
曹博程
213220597 at seu.edu.cn
Wed Jul 8 22:39:46 PDT 2026
Dear Ross,
Thank you for the clarification about RTSP/2.0 vs RTSP/1.0. I agree that the independent TCP interpretation of "RTP/AVP/TCP" without "interleaved" is RTSP/2.0-specific, so I will not treat that case as a LIVE555 RTSP/1.0 conformance issue.
I continued testing RTSP/1.0 Transport header parsing in LIVE555 and found several other cases that seem to be independent of the RTSP/2.0 issue.
Tested target:
LIVE555 Streaming Media version: 2026.07.08
Commit: 5470e10ecc3e97374d1d73cbaec7a9de727dc77f
Program: testOnDemandRTSPServer
URL: rtsp://127.0.0.1:8554/wavAudioTest
All tests were local. I repeated each case 20 times, and the behavior was stable: SETUP returned 200 OK, a Session was created, and a following PLAY also returned 200 OK.
1. Empty Transport or missing transport-id still creates a session
Requests:
Transport:
Transport: ;unicast;client_port=1234-1235
LIVE555 responds with default RTP/UDP parameters:
Transport: RTP/AVP;unicast;destination=127.0.0.1;source=127.0.0.1;client_port=0-1;server_port=0-0
My reading of RFC 2326 is that Transport must contain at least one transport-spec, and a transport-spec must begin with a transport/protocol/profile identifier.
2. Out-of-range interleaved channel values are accepted and truncated
Requests:
Transport: RTP/AVP/TCP;unicast;interleaved=256-257
Transport: RTP/AVP/TCP;unicast;interleaved=999-1000
LIVE555 responds with:
interleaved=0-1
interleaved=231-232
This appears to be caused by casting the parsed values to unsigned char without checking the range.
3. unicast and multicast are accepted in the same transport-spec
Requests:
Transport: RTP/AVP;unicast;multicast;client_port=1234-1235
Transport: RTP/AVP/TCP;unicast;multicast;interleaved=0-1
LIVE555 accepts both and responds using unicast. RFC 2326 describes unicast and multicast as mutually exclusive.
4. Multiple comma-separated transport-specs appear to be parsed across spec boundaries
Request:
Transport: RTP/AVP;unicast;client_port=1234-1235, FROB/1.0;unicast;client_port=1111-1112
LIVE555 responds with RTP/AVP, but uses the client_port from the later FROB/1.0 spec:
Transport: RTP/AVP;unicast;destination=127.0.0.1;source=127.0.0.1;client_port=1111-1112;server_port=6970-6971
Similarly:
Transport: RTP/AVP;unicast;client_port=1234-1235, RTP/AVP;unicast;client_port=2234-2235
returns:
client_port=2234-2235
My reading of RFC 2326 is that comma-separated transports are separate options listed in preference order, and the server should return the single option that was actually chosen.
5. Out-of-range client_port values are accepted and truncated
Requests:
Transport: RTP/AVP;unicast;client_port=65535-65536
Transport: RTP/AVP;unicast;client_port=99999-100000
LIVE555 responds with:
client_port=65535-0;server_port=6970-0
client_port=34463-34464;server_port=6970-6971
This seems to be another range-checking issue. I understand that RFC 2326 defines port syntactically as digits, but these values are ultimately UDP/TCP port numbers, so silently wrapping them seems surprising.
Could you please confirm whether these are intentional compatibility behaviors, or whether they should be treated as Transport parser bugs?
I can provide the exact request/response logs if useful.
Best regards,
Bocheng Cao
曹博程
213220597 at seu.edu.cn
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.live555.com/pipermail/live-devel/attachments/20260709/47e5531d/attachment-0001.htm>
More information about the live-devel
mailing list