diff options
author | Martin Storsjö <martin@martin.st> | 2010-03-25 21:47:33 +0000 |
---|---|---|
committer | Martin Storsjö <martin@martin.st> | 2010-03-25 21:47:33 +0000 |
commit | aa8bf2fb8062880e02c0b8ffeb3bd5fce0753733 (patch) | |
tree | 6748e4ac3bc4ad7306ecdf523c85c8a245d80b0d /libavformat/rtsp.c | |
parent | b17d11c6329848b6f6e3af90baf2bcf044275ce9 (diff) | |
download | ffmpeg-aa8bf2fb8062880e02c0b8ffeb3bd5fce0753733.tar.gz |
Make RTSP use the generic http authentication code
Still hardcoded to use Basic auth, without parsing the reply headers
Originally committed as revision 22676 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavformat/rtsp.c')
-rw-r--r-- | libavformat/rtsp.c | 22 |
1 files changed, 9 insertions, 13 deletions
diff --git a/libavformat/rtsp.c b/libavformat/rtsp.c index c5502bbed4..231795a31f 100644 --- a/libavformat/rtsp.c +++ b/libavformat/rtsp.c @@ -612,7 +612,6 @@ void ff_rtsp_close_streams(AVFormatContext *s) av_close_input_stream (rt->asf_ctx); rt->asf_ctx = NULL; } - av_freep(&rt->auth_b64); } static void *rtsp_rtp_mux_open(AVFormatContext *s, AVStream *st, @@ -1013,10 +1012,13 @@ void ff_rtsp_send_cmd_with_content_async(AVFormatContext *s, snprintf(buf1, sizeof(buf1), "Session: %s\r\n", rt->session_id); av_strlcat(buf, buf1, sizeof(buf)); } - if (rt->auth_b64) - av_strlcatf(buf, sizeof(buf), - "Authorization: Basic %s\r\n", - rt->auth_b64); + if (rt->auth[0]) { + char *str = ff_http_auth_create_response(&rt->auth_state, + rt->auth, url, method); + if (str) + av_strlcat(buf, str, sizeof(buf)); + av_free(str); + } if (send_content_length > 0 && send_content) av_strlcatf(buf, sizeof(buf), "Content-Length: %d\r\n", send_content_length); av_strlcat(buf, "\r\n", sizeof(buf)); @@ -1437,14 +1439,8 @@ redirect: ff_url_split(NULL, 0, auth, sizeof(auth), host, sizeof(host), &port, path, sizeof(path), s->filename); if (*auth) { - int auth_len = strlen(auth), b64_len = ((auth_len + 2) / 3) * 4 + 1; - - if (!(rt->auth_b64 = av_malloc(b64_len))) - return AVERROR(ENOMEM); - if (!av_base64_encode(rt->auth_b64, b64_len, auth, auth_len)) { - err = AVERROR(EINVAL); - goto fail; - } + av_strlcpy(rt->auth, auth, sizeof(rt->auth)); + rt->auth_state.auth_type = HTTP_AUTH_BASIC; } if (port < 0) port = RTSP_DEFAULT_PORT; |