Commit e4fb5f2f authored by Erik Janssen's avatar Erik Janssen Committed by Daniel Stenberg
Browse files

rtsp: support basic/digest authentication

parent e67e71d6
Loading
Loading
Loading
Loading
+23 −2
Original line number Diff line number Diff line
@@ -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;