aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteven Liu <lq@chinaffmpeg.org>2018-02-01 10:56:51 +0800
committerSteven Liu <lq@chinaffmpeg.org>2018-02-01 10:56:51 +0800
commit44f343067455e09ce4da16b2169e89d9c062dbca (patch)
tree906e67a0e99f40a1ab2255ee93969e2233d57ea4
parent27fe8930e0b9e7881e61eb9ed0b8b526f718abfe (diff)
downloadffmpeg-44f343067455e09ce4da16b2169e89d9c062dbca.tar.gz
avformat/http: add referer option into http
add Referer message if referer have been set. Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
-rw-r--r--doc/protocols.texi3
-rw-r--r--libavformat/http.c8
2 files changed, 11 insertions, 0 deletions
diff --git a/doc/protocols.texi b/doc/protocols.texi
index 98deb73005..c24dc74505 100644
--- a/doc/protocols.texi
+++ b/doc/protocols.texi
@@ -296,6 +296,9 @@ Use persistent connections if set to 1, default is 0.
@item post_data
Set custom HTTP post data.
+@item referer
+Set the Referer header. Include 'Referer: URL' header in HTTP request.
+
@item user_agent
Override the User-Agent header. If not specified the protocol will use a
string describing the libavformat build. ("Lavf/<version>")
diff --git a/libavformat/http.c b/libavformat/http.c
index aa80e314df..344fd603cb 100644
--- a/libavformat/http.c
+++ b/libavformat/http.c
@@ -76,6 +76,7 @@ typedef struct HTTPContext {
char *mime_type;
char *http_version;
char *user_agent;
+ char *referer;
#if FF_API_HTTP_USER_AGENT
char *user_agent_deprecated;
#endif
@@ -138,6 +139,7 @@ static const AVOption options[] = {
{ "headers", "set custom HTTP headers, can override built in default headers", OFFSET(headers), AV_OPT_TYPE_STRING, { .str = NULL }, 0, 0, D | E },
{ "content_type", "set a specific content type for the POST messages", OFFSET(content_type), AV_OPT_TYPE_STRING, { .str = NULL }, 0, 0, D | E },
{ "user_agent", "override User-Agent header", OFFSET(user_agent), AV_OPT_TYPE_STRING, { .str = DEFAULT_USER_AGENT }, 0, 0, D },
+ { "referer", "override referer header", OFFSET(referer), AV_OPT_TYPE_STRING, { .str = NULL }, 0, 0, D },
#if FF_API_HTTP_USER_AGENT
{ "user-agent", "override User-Agent header", OFFSET(user_agent_deprecated), AV_OPT_TYPE_STRING, { .str = DEFAULT_USER_AGENT }, 0, 0, D },
#endif
@@ -1198,6 +1200,12 @@ static int http_connect(URLContext *h, const char *path, const char *local_path,
if (!has_header(s->headers, "\r\nUser-Agent: "))
len += av_strlcatf(headers + len, sizeof(headers) - len,
"User-Agent: %s\r\n", s->user_agent);
+ if (s->referer) {
+ /* set default headers if needed */
+ if (!has_header(s->headers, "\r\nReferer: "))
+ len += av_strlcatf(headers + len, sizeof(headers) - len,
+ "Referer: %s\r\n", s->referer);
+ }
if (!has_header(s->headers, "\r\nAccept: "))
len += av_strlcpy(headers + len, "Accept: */*\r\n",
sizeof(headers) - len);