pidgin: a35d515d: disapproval of revision '32e63a51dbb65b8...

darkrain42 at pidgin.im darkrain42 at pidgin.im
Thu Dec 3 00:50:40 EST 2009


-----------------------------------------------------------------
Revision: a35d515dd2c8f385ed4563358fccee9108573018
Ancestor: 32e63a51dbb65b8b63d134bde098d40167574148
Author: darkrain42 at pidgin.im
Date: 2009-12-03T05:45:30
Branch: im.pidgin.pidgin
URL: http://d.pidgin.im/viewmtn/revision/info/a35d515dd2c8f385ed4563358fccee9108573018

Modified files:
        libpurple/proxy.c

ChangeLog: 

disapproval of revision '32e63a51dbb65b8b63d134bde098d40167574148'

This change has produced regressions when using HTTP/1.0, as the proxy closes the connection, which is treated as a connection failure.  Closes #10880, #10856 for examples.  Refs #2910.

-------------- next part --------------
============================================================
--- libpurple/proxy.c	d2f4232885d1987d012511c354e31560180ecae5
+++ libpurple/proxy.c	9635445cccc76924bbfb3b4cf2934a0ea2425e74
@@ -1099,6 +1099,36 @@ http_start_connect_tunneling(PurpleProxy
 			connect_data->host, connect_data->port,
 			connect_data->host, connect_data->port);
 
+	if (purple_proxy_info_get_username(connect_data->gpi) != NULL)
+	{
+		char *t1, *t2, *ntlm_type1;
+		char hostname[256];
+
+		ret = gethostname(hostname, sizeof(hostname));
+		hostname[sizeof(hostname) - 1] = '\0';
+		if (ret < 0 || hostname[0] == '\0') {
+			purple_debug_warning("proxy", "gethostname() failed -- is your hostname set?");
+			strcpy(hostname, "localhost");
+		}
+
+		t1 = g_strdup_printf("%s:%s",
+			purple_proxy_info_get_username(connect_data->gpi),
+			purple_proxy_info_get_password(connect_data->gpi) ?
+				purple_proxy_info_get_password(connect_data->gpi) : "");
+		t2 = purple_base64_encode((const guchar *)t1, strlen(t1));
+		g_free(t1);
+
+		ntlm_type1 = purple_ntlm_gen_type1(hostname, "");
+
+		g_string_append_printf(request,
+			"Proxy-Authorization: Basic %s\r\n"
+			"Proxy-Authorization: NTLM %s\r\n"
+			"Proxy-Connection: Keep-Alive\r\n",
+			t2, ntlm_type1);
+		g_free(ntlm_type1);
+		g_free(t2);
+	}
+
 	g_string_append(request, "\r\n");
 
 	connect_data->write_buf_len = request->len;


More information about the Commits mailing list