1
mirror of https://github.com/mpv-player/mpv synced 2024-12-24 07:33:46 +01:00

Fix lots of bugs in mp_http URL handling

Many instances of "http" were not changed to "mp_http", which made many
aspects of the mp_http protocol handler broken.
This commit is contained in:
Rudolf Polzer 2013-01-10 14:11:26 +01:00
parent 7c40d8a36e
commit 944be9d24b
3 changed files with 22 additions and 9 deletions

View File

@ -26,12 +26,18 @@
struct mp_resolve_result *mp_resolve_quvi(const char *url, struct MPOpts *opts)
{
QUVIcode rc;
bool mp_url = false;
quvi_t q;
rc = quvi_init(&q);
if (rc != QUVI_OK)
return NULL;
if (!strncmp(url, "mp_", 3)) {
url += 3;
mp_url = true;
}
// Don't try to use quvi on an URL that's not directly supported, since
// quvi will do a network access anyway in order to check for HTTP
// redirections etc.
@ -65,8 +71,12 @@ struct mp_resolve_result *mp_resolve_quvi(const char *url, struct MPOpts *opts)
char *val;
if (quvi_getprop(m, QUVIPROP_MEDIAURL, &val) == QUVI_OK)
result->url = talloc_strdup(result, val);
if (quvi_getprop(m, QUVIPROP_MEDIAURL, &val) == QUVI_OK) {
if (mp_url)
result->url = talloc_asprintf(result, "mp_%s", val);
else
result->url = talloc_strdup(result, val);
}
if (quvi_getprop(m, QUVIPROP_PAGETITLE, &val) == QUVI_OK)
result->title = talloc_strdup(result, val);

View File

@ -110,12 +110,12 @@ check4proxies( const URL_t *url ) {
URL_t *url_out = NULL;
if( url==NULL ) return NULL;
url_out = url_new( url->url );
if( !strcasecmp(url->protocol, "http_proxy") ) {
if( !strcasecmp(url->protocol, "mp_http_proxy") ) {
mp_msg(MSGT_NETWORK,MSGL_V,"Using HTTP proxy: http://%s:%d\n", url->hostname, url->port );
return url_out;
}
// Check if the http_proxy environment variable is set.
if( !strcasecmp(url->protocol, "http") ) {
if( !strcasecmp(url->protocol, "mp_http") ) {
char *proxy;
proxy = getenv("http_proxy");
if( proxy!=NULL ) {
@ -180,9 +180,12 @@ http_send_request( URL_t *url, int64_t pos ) {
http_hdr = http_new_header();
if( !strcasecmp(url->protocol, "http_proxy") ) {
if( !strcasecmp(url->protocol, "mp_http_proxy") ) {
proxy = 1;
server_url = url_new( (url->file)+1 );
if (!strncasecmp(url->file, "/mp_", 3))
server_url = url_new( (url->file)+4 );
else
server_url = url_new( (url->file)+1 );
if (!server_url) {
mp_msg(MSGT_NETWORK, MSGL_ERR, "Invalid URL '%s' to proxify\n", url->file+1);
goto err_out;

View File

@ -61,7 +61,7 @@ end:
}
static int is_proxy(const URL_t *url) {
return !strcasecmp(url->protocol, "http_proxy") && url->file && strstr(url->file, "://");
return !strcasecmp(url->protocol, "mp_http_proxy") && url->file && strstr(url->file, "://");
}
int url_is_protocol(const URL_t *url, const char *proto) {
@ -137,12 +137,12 @@ static char *get_noauth_url(const URL_t *url)
char *get_http_proxy_url(const URL_t *proxy, const char *host_url)
{
if (proxy->username)
return mp_asprintf("http_proxy://%s:%s@%s:%d/%s",
return mp_asprintf("mp_http_proxy://%s:%s@%s:%d/%s",
proxy->username,
proxy->password ? proxy->password : "",
proxy->hostname, proxy->port, host_url);
else
return mp_asprintf("http_proxy://%s:%d/%s",
return mp_asprintf("mp_http_proxy://%s:%d/%s",
proxy->hostname, proxy->port, host_url);
}