# HG changeset patch # User cboesch # Date 1291417836 0 # Node ID 31a65f4ca3bbd0d7ded2f9d6bcd436786b1714d2 # Parent be61988fb5c4760b93a522b14834021f50f0cad7 Add support for login/password in http_proxy env variable. diff -r be61988fb5c4 -r 31a65f4ca3bb stream/network.c --- a/stream/network.c Fri Dec 03 19:52:10 2010 +0000 +++ b/stream/network.c Fri Dec 03 23:10:36 2010 +0000 @@ -164,14 +164,14 @@ #endif mp_msg(MSGT_NETWORK,MSGL_V,"Using HTTP proxy: %s\n", proxy_url->url ); - len = strlen( proxy_url->hostname ) + strlen( url->url ) + 20; // 20 = http_proxy:// + port - new_url = malloc( len+1 ); + len = make_http_proxy_url(proxy_url, url->url, NULL, 0) + 1; + new_url = malloc(len); if( new_url==NULL ) { mp_msg(MSGT_NETWORK,MSGL_FATAL,MSGTR_MemAllocFailed); url_free(proxy_url); return url_out; } - sprintf(new_url, "http_proxy://%s:%d/%s", proxy_url->hostname, proxy_url->port, url->url ); + make_http_proxy_url(proxy_url, url->url, new_url, len); tmp_url = url_new( new_url ); if( tmp_url==NULL ) { free( new_url ); diff -r be61988fb5c4 -r 31a65f4ca3bb stream/url.c --- a/stream/url.c Fri Dec 03 19:52:10 2010 +0000 +++ b/stream/url.c Fri Dec 03 23:10:36 2010 +0000 @@ -68,6 +68,19 @@ url->hostname, url->file); } +int make_http_proxy_url(URL_t *proxy, const char *host_url, char *dst, + int dst_size) +{ + if (proxy->username) + return snprintf(dst, dst_size, "http_proxy://%s:%s@%s:%d/%s", + proxy->username, + proxy->password ? proxy->password : "", + proxy->hostname, proxy->port, host_url); + else + return snprintf(dst, dst_size, "http_proxy://%s:%d/%s", + proxy->hostname, proxy->port, host_url); +} + URL_t* url_new(const char* url) { int pos1, pos2,v6addr = 0, noauth_len; diff -r be61988fb5c4 -r 31a65f4ca3bb stream/url.h --- a/stream/url.h Fri Dec 03 19:52:10 2010 +0000 +++ b/stream/url.h Fri Dec 03 23:10:36 2010 +0000 @@ -37,6 +37,9 @@ } URL_t; URL_t *url_redirect(URL_t **url, const char *redir); + +int make_http_proxy_url(URL_t *proxy, const char *host_url, char *dst, int dst_size); + URL_t* url_new(const char* url); void url_free(URL_t* url);