[SCM] libav/experimental: RTSP: Use the same authentication for the HTTP POST session as for the GET

siretart at users.alioth.debian.org siretart at users.alioth.debian.org
Sun Jun 30 17:08:55 UTC 2013


The following commit has been merged in the experimental branch:
commit a8ead3322fdbe4670101185204b55fef8e7e0422
Author: Martin Storsjö <martin at martin.st>
Date:   Mon Jun 21 19:41:02 2010 +0000

    RTSP: Use the same authentication for the HTTP POST session as for the GET
    
    Originally committed as revision 23686 to svn://svn.ffmpeg.org/ffmpeg/trunk

diff --git a/libavformat/rtsp.c b/libavformat/rtsp.c
index 9801fc9..fe64a5d 100644
--- a/libavformat/rtsp.c
+++ b/libavformat/rtsp.c
@@ -1616,6 +1616,24 @@ redirect:
         ff_http_set_headers(rt->rtsp_hd_out, headers);
         ff_http_set_chunked_transfer_encoding(rt->rtsp_hd_out, 0);
 
+        /* Initialize the authentication state for the POST session. The HTTP
+         * protocol implementation doesn't properly handle multi-pass
+         * authentication for POST requests, since it would require one of
+         * the following:
+         * - implementing Expect: 100-continue, which many HTTP servers
+         *   don't support anyway, even less the RTSP servers that do HTTP
+         *   tunneling
+         * - sending the whole POST data until getting a 401 reply specifying
+         *   what authentication method to use, then resending all that data
+         * - waiting for potential 401 replies directly after sending the
+         *   POST header (waiting for some unspecified time)
+         * Therefore, we copy the full auth state, which works for both basic
+         * and digest. (For digest, we would have to synchronize the nonce
+         * count variable between the two sessions, if we'd do more requests
+         * with the original session, though.)
+         */
+        ff_http_init_auth_state(rt->rtsp_hd_out, rt->rtsp_hd);
+
     } else {
         /* open the tcp connection */
         ff_url_join(tcpname, sizeof(tcpname), "tcp", NULL, host, port, NULL);

-- 
Libav/FFmpeg packaging



More information about the pkg-multimedia-commits mailing list