Commit f5fe9328 authored by mstorsjo's avatar mstorsjo

Actually parse the auth headers in RTSP


git-svn-id: file:///var/local/repositories/ffmpeg/trunk@22677 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b
parent 50b86893
...@@ -2756,7 +2756,7 @@ static int rtsp_parse_request(HTTPContext *c) ...@@ -2756,7 +2756,7 @@ static int rtsp_parse_request(HTTPContext *c)
len = sizeof(line) - 1; len = sizeof(line) - 1;
memcpy(line, p, len); memcpy(line, p, len);
line[len] = '\0'; line[len] = '\0';
ff_rtsp_parse_line(header, line); ff_rtsp_parse_line(header, line, NULL);
p = p1 + 1; p = p1 + 1;
} }
......
...@@ -838,7 +838,8 @@ static void rtsp_parse_transport(RTSPMessageHeader *reply, const char *p) ...@@ -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; const char *p;
...@@ -871,6 +872,12 @@ void ff_rtsp_parse_line(RTSPMessageHeader *reply, const char *buf) ...@@ -871,6 +872,12 @@ void ff_rtsp_parse_line(RTSPMessageHeader *reply, const char *buf)
} else if (av_stristart(p, "Location:", &p)) { } else if (av_stristart(p, "Location:", &p)) {
skip_spaces(&p); skip_spaces(&p);
av_strlcpy(reply->location, p , sizeof(reply->location)); 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, ...@@ -951,7 +958,7 @@ int ff_rtsp_read_reply(AVFormatContext *s, RTSPMessageHeader *reply,
get_word(buf1, sizeof(buf1), &p); get_word(buf1, sizeof(buf1), &p);
reply->status_code = atoi(buf1); reply->status_code = atoi(buf1);
} else { } 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, p, sizeof(rt->last_reply));
av_strlcat(rt->last_reply, "\n", sizeof(rt->last_reply)); av_strlcat(rt->last_reply, "\n", sizeof(rt->last_reply));
} }
......
...@@ -322,7 +322,8 @@ typedef struct RTSPStream { ...@@ -322,7 +322,8 @@ typedef struct RTSPStream {
//@} //@}
} RTSPStream; } RTSPStream;
void ff_rtsp_parse_line(RTSPMessageHeader *reply, const char *buf); void ff_rtsp_parse_line(RTSPMessageHeader *reply, const char *buf,
HTTPAuthState *auth_state);
#if LIBAVFORMAT_VERSION_INT < (53 << 16) #if LIBAVFORMAT_VERSION_INT < (53 << 16)
extern int rtsp_default_protocols; extern int rtsp_default_protocols;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment