libgaim/proxy.c

changeset 15032
65a111aba7a8
parent 15015
7af69d172538
child 15041
18a6f6cdce33
--- a/libgaim/proxy.c	Tue Nov 14 16:32:40 2006 +0000
+++ b/libgaim/proxy.c	Wed Nov 15 06:00:51 2006 +0000
@@ -1688,6 +1688,13 @@
 	GaimProxyInfo *gpi;
 	const gchar *tmp;
 
+	/* This is used as a fallback so we don't overwrite the selected proxy type */
+	static GaimProxyInfo *tmp_none_proxy_info = NULL;
+	if (!tmp_none_proxy_info) {
+		tmp_none_proxy_info = gaim_proxy_info_new();
+		gaim_proxy_info_set_type(tmp_none_proxy_info, GAIM_PROXY_NONE);
+	}
+
 	if (account && gaim_account_get_proxy_info(account) != NULL)
 		gpi = gaim_account_get_proxy_info(account);
 	else if (gaim_running_gnome())
@@ -1696,41 +1703,41 @@
 		gpi = gaim_global_proxy_get_info();
 
 	if (gaim_proxy_info_get_type(gpi) == GAIM_PROXY_USE_ENVVAR) {
+#ifdef _WIN32
+		wgaim_check_for_proxy_changes();
+#endif
 		if ((tmp = g_getenv("HTTP_PROXY")) != NULL ||
 			(tmp = g_getenv("http_proxy")) != NULL ||
 			(tmp = g_getenv("HTTPPROXY")) != NULL) {
-			char *proxyhost,*proxypath,*proxyuser,*proxypasswd;
+			char *proxyhost, *proxyuser, *proxypasswd;
 			int proxyport;
 
 			/* http_proxy-format:
 			 * export http_proxy="http://user:passwd@your.proxy.server:port/"
 			 */
-			if(gaim_url_parse(tmp, &proxyhost, &proxyport, &proxypath, &proxyuser, &proxypasswd)) {
+			if(gaim_url_parse(tmp, &proxyhost, &proxyport, NULL, &proxyuser, &proxypasswd)) {
 				gaim_proxy_info_set_host(gpi, proxyhost);
 				g_free(proxyhost);
-				g_free(proxypath);
-				if (proxyuser != NULL) {
-					gaim_proxy_info_set_username(gpi, proxyuser);
-					g_free(proxyuser);
-				}
-				if (proxypasswd != NULL) {
-					gaim_proxy_info_set_password(gpi, proxypasswd);
-					g_free(proxypasswd);
-				}
+
+				gaim_proxy_info_set_username(gpi, proxyuser);
+				g_free(proxyuser);
+
+				gaim_proxy_info_set_password(gpi, proxypasswd);
+				g_free(proxypasswd);
 
 				/* only for backward compatibility */
 				if (proxyport == 80 &&
 				    ((tmp = g_getenv("HTTP_PROXY_PORT")) != NULL ||
 				     (tmp = g_getenv("http_proxy_port")) != NULL ||
 				     (tmp = g_getenv("HTTPPROXYPORT")) != NULL))
-				    proxyport = atoi(tmp);
+					proxyport = atoi(tmp);
 
 				gaim_proxy_info_set_port(gpi, proxyport);
 			}
 		} else {
 			/* no proxy environment variable found, don't use a proxy */
 			gaim_debug_info("proxy", "No environment settings found, not using a proxy\n");
-			gaim_proxy_info_set_type(gpi, GAIM_PROXY_NONE);
+			gpi = tmp_none_proxy_info;
 		}
 
 		/* XXX: Do we want to skip this step if user/password were part of url? */

mercurial