Hi,

It seems that the RTSPClient doesn't accept folded headers from the server, at least for OPTIONS responses and possibly other requests as well. The relevant code is around RTSPClient.cpp:586:

   // Look for a "Public:" header (which will contain our result str):
   char* lineStart;
   while (1) {
     lineStart = nextLineStart;
     if (lineStart == NULL) break;

     nextLineStart = getLine(lineStart);

     if (_strncasecmp(lineStart, "Public: ", 8) == 0) {
   delete[] result; result = strDup(&lineStart[8]);
#ifdef SUPPORT_REAL_RTSP
     } else if (_strncasecmp(lineStart, "RealChallenge1: ", 16) == 0) {
   delete[] fRealChallengeStr; fRealChallengeStr = strDup(&lineStart[16]);
#endif
     }
   }

This just looks for a line beginning "Public: " without worrying whether a subsequent line is a header fold beginning with whitespace. This is allowed in the RFC 2326 grammar (check out token 'LWS'), which it inherits from HTTP and SMTP.

We've tripped over this because VLC now uses the present of GET_PARAMETER in the OPTIONS response to determine whether to send GET_PARAMETER 'keepalives', which our server requires. The OPTIONS request/response is as follows:

---
Sending request: OPTIONS rtsp://barque/testcard RTSP/1.0
CSeq: 29
User-Agent: VLC media player (LIVE555 Streaming Media v2008.07.24)

Received OPTIONS response: RTSP/1.0 200 OK
CSeq: 29
Server: Packet Ship RTSP Server v2.3.0
Date: Fri, Nov 14 2008 14:11:35 GMT
Public: OPTIONS, DESCRIBE, SETUP, PLAY, PAUSE, TEARDOWN,
 GET_PARAMETER, SET_PARAMETER
---

Because the GET_PARAMETER has been (correctly) folded to the next line, it isn't picked up by VLC and hence no keepalive is sent.

We can (and have) worked round this by putting GET_PARAMETER at the front of the OPTIONS list, but I thought I should point this out as a protocol issue in the library.

Many thanks

Paul
--
Paul Clark
Packet Ship Technologies Limited
http://www.packetship.com

_______________________________________________
live-devel mailing list
live-devel@lists.live555.com
http://lists.live555.com/mailman/listinfo/live-devel

Reply via email to