diff options
author | Erik Janssen <erik.janssen@axis.com> | 2015-08-20 23:02:28 +0200 |
---|---|---|
committer | Daniel Stenberg <daniel@haxx.se> | 2015-08-20 23:02:28 +0200 |
commit | e4fb5f2f61487caa7229ab358754658ef072f537 (patch) | |
tree | d666a8c440887a3da31a56b84dce29708222502e /lib | |
parent | e67e71d62b6e3f90678631004a6c267ca72df1cd (diff) |
rtsp: support basic/digest authentication
Diffstat (limited to 'lib')
-rw-r--r-- | lib/rtsp.c | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/lib/rtsp.c b/lib/rtsp.c index c30afd39d..f8e6b23dc 100644 --- a/lib/rtsp.c +++ b/lib/rtsp.c @@ -249,6 +249,8 @@ static CURLcode rtsp_do(struct connectdata *conn, bool *done) const char *p_stream_uri = NULL; const char *p_transport = NULL; const char *p_uagent = NULL; + const char *p_proxyuserpwd = NULL; + const char *p_userpwd = NULL; *done = TRUE; @@ -326,7 +328,6 @@ static CURLcode rtsp_do(struct connectdata *conn, bool *done) return CURLE_BAD_FUNCTION_ARGUMENT; } - /* TODO: auth? */ /* TODO: proxy? */ /* Stream URI. Default to server '*' if not specified */ @@ -392,6 +393,14 @@ static CURLcode rtsp_do(struct connectdata *conn, bool *done) p_uagent = conn->allocptr.uagent; } + /* setup the authentication headers */ + result = Curl_http_output_auth(conn, p_request, p_stream_uri, FALSE); + if(result) + return result; + + p_proxyuserpwd = conn->allocptr.proxyuserpwd; + p_userpwd = conn->allocptr.userpwd; + /* Referrer */ Curl_safefree(conn->allocptr.ref); if(data->change.referer && !Curl_checkheaders(conn, "Referer:")) @@ -464,13 +473,25 @@ static CURLcode rtsp_do(struct connectdata *conn, bool *done) "%s" /* range */ "%s" /* referrer */ "%s" /* user-agent */ + "%s" /* proxyuserpwd */ + "%s" /* userpwd */ , p_transport ? p_transport : "", p_accept ? p_accept : "", p_accept_encoding ? p_accept_encoding : "", p_range ? p_range : "", p_referrer ? p_referrer : "", - p_uagent ? p_uagent : ""); + p_uagent ? p_uagent : "", + p_proxyuserpwd ? p_proxyuserpwd : "", + p_userpwd ? p_userpwd : ""); + + /* + * Free userpwd now --- cannot reuse this for Negotiate and possibly NTLM + * with basic and digest, it will be freed anyway by the next request + */ + Curl_safefree (conn->allocptr.userpwd); + conn->allocptr.userpwd = NULL; + if(result) return result; |