[PATCH] Add support for login/password in http_proxy env variable
Clément Bœsch
ubitux at gmail.com
Wed Nov 24 20:29:12 CET 2010
---
stream/network.c | 10 +++++-----
stream/url.c | 12 ++++++++++++
stream/url.h | 3 +++
3 files changed, 20 insertions(+), 5 deletions(-)
diff --git a/stream/network.c b/stream/network.c
index 74da18f..b38af23 100644
--- a/stream/network.c
+++ b/stream/network.c
@@ -168,14 +168,14 @@ check4proxies( URL_t *url ) {
#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 );
- if( new_url==NULL ) {
- mp_msg(MSGT_NETWORK,MSGL_FATAL,MSGTR_MemAllocFailed);
+ len = make_http_proxy_url(proxy_url, url->url, NULL, 0) + 1;
+ new_url = malloc(len);
+ if (!new_url) {
+ 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 --git a/stream/url.c b/stream/url.c
index e1f89a1..2bee177 100644
--- a/stream/url.c
+++ b/stream/url.c
@@ -68,6 +68,18 @@ static int make_noauth_url(URL_t *url, char *dst, int dst_size)
url->hostname, url->file);
}
+int make_http_proxy_url(URL_t *proxy, const char *host_url, char *dst,
+ int dst_size)
+{
+ if (proxy->username && proxy->password)
+ return snprintf(dst, dst_size, "http_proxy://%s:%s@%s:%d/%s",
+ proxy->username, 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 --git a/stream/url.h b/stream/url.h
index c89d91a..b75978a 100644
--- a/stream/url.h
+++ b/stream/url.h
@@ -37,6 +37,9 @@ typedef struct {
} 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);
--
1.7.3.2
--UHN/qo2QbUvPLonB--
More information about the MPlayer-dev-eng
mailing list