# HG changeset patch # User reimar # Date 1275238202 0 # Node ID d739cbeb0e38a60b623e528bea36ef4dff02f90a # Parent 45641752640732e996334bcabf32a73590258603 Add a referrer option to set the HTTP Referer field. Patch by chocolateboy [chocolate cpan org] diff -r 456417526407 -r d739cbeb0e38 DOCS/man/en/mplayer.1 --- a/DOCS/man/en/mplayer.1 Sun May 30 16:48:18 2010 +0000 +++ b/DOCS/man/en/mplayer.1 Sun May 30 16:50:02 2010 +0000 @@ -1789,6 +1789,10 @@ .PD 1 . .TP +.B \-referrer (network only) +Specify a referrer path or URL for HTTP requests. +. +.TP .B \-rtsp\-port Used with 'rtsp://' URLs to force the client's port number. This option may be useful if you are behind a router and want to forward diff -r 456417526407 -r d739cbeb0e38 cfg-common-opts.h --- a/cfg-common-opts.h Sun May 30 16:48:18 2010 +0000 +++ b/cfg-common-opts.h Sun May 30 16:50:02 2010 +0000 @@ -78,6 +78,7 @@ {"passwd", &network_password, CONF_TYPE_STRING, 0, 0, 0, NULL}, {"bandwidth", &network_bandwidth, CONF_TYPE_INT, CONF_MIN, 0, 0, NULL}, {"user-agent", &network_useragent, CONF_TYPE_STRING, 0, 0, 0, NULL}, + {"referrer", &network_referrer, CONF_TYPE_STRING, 0, 0, 0, NULL}, {"cookies", &network_cookies_enabled, CONF_TYPE_FLAG, 0, 0, 1, NULL}, {"nocookies", &network_cookies_enabled, CONF_TYPE_FLAG, 0, 1, 0, NULL}, {"cookies-file", &cookies_file, CONF_TYPE_STRING, 0, 0, 0, NULL}, diff -r 456417526407 -r d739cbeb0e38 cfg-common.h --- a/cfg-common.h Sun May 30 16:48:18 2010 +0000 +++ b/cfg-common.h Sun May 30 16:50:02 2010 +0000 @@ -47,6 +47,7 @@ extern char *network_password; extern int network_bandwidth; extern char *network_useragent; +extern char *network_referrer; extern int network_cookies_enabled; extern char *cookies_file; diff -r 456417526407 -r d739cbeb0e38 stream/network.c --- a/stream/network.c Sun May 30 16:48:18 2010 +0000 +++ b/stream/network.c Sun May 30 16:50:02 2010 +0000 @@ -62,6 +62,7 @@ int network_bandwidth=0; int network_cookies_enabled = 0; char *network_useragent=NULL; +char *network_referrer=NULL; /* IPv6 options */ int network_ipv4_only_proxy = 0; @@ -226,6 +227,23 @@ else http_set_field( http_hdr, "User-Agent: MPlayer/"VERSION); + if (network_referrer) { + char *referrer = NULL; + size_t len = strlen(network_referrer) + 10; + + // Check len to ensure we don't do something really bad in case of an overflow + if (len > 10) + referrer = malloc(len); + + if (referrer == NULL) { + mp_msg(MSGT_NETWORK, MSGL_FATAL, MSGTR_MemAllocFailed); + } else { + snprintf(referrer, len, "Referer: %s", network_referrer); + http_set_field(http_hdr, referrer); + free(referrer); + } + } + if( strcasecmp(url->protocol, "noicyx") ) http_set_field(http_hdr, "Icy-MetaData: 1");