rtsp: Retry authentication if failed due to being stale

Signed-off-by: Martin Storsjö <martin@martin.st>
This commit is contained in:
Martin Storsjö 2012-03-12 13:59:53 +02:00
parent 8a3360d18a
commit 2f96cc1fc4

View File

@ -1122,7 +1122,7 @@ int ff_rtsp_send_cmd_with_content(AVFormatContext *s,
{ {
RTSPState *rt = s->priv_data; RTSPState *rt = s->priv_data;
HTTPAuthType cur_auth_type; HTTPAuthType cur_auth_type;
int ret; int ret, attempts = 0;
retry: retry:
cur_auth_type = rt->auth_state.auth_type; cur_auth_type = rt->auth_state.auth_type;
@ -1133,9 +1133,11 @@ retry:
if ((ret = ff_rtsp_read_reply(s, reply, content_ptr, 0, method) ) < 0) if ((ret = ff_rtsp_read_reply(s, reply, content_ptr, 0, method) ) < 0)
return ret; return ret;
attempts++;
if (reply->status_code == 401 && cur_auth_type == HTTP_AUTH_NONE && if (reply->status_code == 401 &&
rt->auth_state.auth_type != HTTP_AUTH_NONE) (cur_auth_type == HTTP_AUTH_NONE || rt->auth_state.stale) &&
rt->auth_state.auth_type != HTTP_AUTH_NONE && attempts < 2)
goto retry; goto retry;
if (reply->status_code > 400){ if (reply->status_code > 400){