summaryrefslogtreecommitdiff
path: root/libavformat/rtsp.c
diff options
context:
space:
mode:
authorMartin Storsjö <martin@martin.st>2010-03-25 21:48:58 +0000
committerMartin Storsjö <martin@martin.st>2010-03-25 21:48:58 +0000
commit2626308abb1dc59afa9a9b36cf767ea6823b6cf2 (patch)
treed9c48477d0debe8d8496ddd6b5d14d14cd0a41e6 /libavformat/rtsp.c
parentaa8bf2fb8062880e02c0b8ffeb3bd5fce0753733 (diff)
Actually parse the auth headers in RTSP
Originally committed as revision 22677 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavformat/rtsp.c')
-rw-r--r--libavformat/rtsp.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/libavformat/rtsp.c b/libavformat/rtsp.c
index 231795a31f..f0ec5982ad 100644
--- a/libavformat/rtsp.c
+++ b/libavformat/rtsp.c
@@ -838,7 +838,8 @@ static void rtsp_parse_transport(RTSPMessageHeader *reply, const char *p)
}
}
-void ff_rtsp_parse_line(RTSPMessageHeader *reply, const char *buf)
+void ff_rtsp_parse_line(RTSPMessageHeader *reply, const char *buf,
+ HTTPAuthState *auth_state)
{
const char *p;
@@ -871,6 +872,12 @@ void ff_rtsp_parse_line(RTSPMessageHeader *reply, const char *buf)
} else if (av_stristart(p, "Location:", &p)) {
skip_spaces(&p);
av_strlcpy(reply->location, p , sizeof(reply->location));
+ } else if (av_stristart(p, "WWW-Authenticate:", &p) && auth_state) {
+ skip_spaces(&p);
+ ff_http_auth_handle_header(auth_state, "WWW-Authenticate", p);
+ } else if (av_stristart(p, "Authentication-Info:", &p) && auth_state) {
+ skip_spaces(&p);
+ ff_http_auth_handle_header(auth_state, "Authentication-Info", p);
}
}
@@ -951,7 +958,7 @@ int ff_rtsp_read_reply(AVFormatContext *s, RTSPMessageHeader *reply,
get_word(buf1, sizeof(buf1), &p);
reply->status_code = atoi(buf1);
} else {
- ff_rtsp_parse_line(reply, p);
+ ff_rtsp_parse_line(reply, p, &rt->auth_state);
av_strlcat(rt->last_reply, p, sizeof(rt->last_reply));
av_strlcat(rt->last_reply, "\n", sizeof(rt->last_reply));
}