Mercurial > pidgin
comparison libpurple/proxy.c @ 26162:0a19fa42f8ce
propagate from branch 'im.pidgin.pidgin' (head eeaad582dcb34b6753c78371c4aa03af92b095f5)
to branch 'im.pidgin.soc.2008.yahoo' (head 182668e30410a6c12e970fad010f219ee6b59e73)
author | Sulabh Mahajan <sulabh@soc.pidgin.im> |
---|---|
date | Tue, 20 Jan 2009 17:44:36 +0000 |
parents | 95ef7beb926b |
children | de01d4aa4571 a6e3cb32cdd2 4670851af098 |
comparison
equal
deleted
inserted
replaced
26161:90ffe6f71fa9 | 26162:0a19fa42f8ce |
---|---|
619 * was destroyed via purple_proxy_connect_cancel(), we may get here with a freed connect_data. | 619 * was destroyed via purple_proxy_connect_cancel(), we may get here with a freed connect_data. |
620 */ | 620 */ |
621 if (!PURPLE_PROXY_CONNECT_DATA_IS_VALID(connect_data)) | 621 if (!PURPLE_PROXY_CONNECT_DATA_IS_VALID(connect_data)) |
622 return; | 622 return; |
623 | 623 |
624 purple_debug_info("proxy", "Connected to %s:%d.\n", | 624 purple_debug_info("proxy", "Connecting to %s:%d.\n", |
625 connect_data->host, connect_data->port); | 625 connect_data->host, connect_data->port); |
626 | 626 |
627 /* | 627 /* |
628 * purple_input_get_error after a non-blocking connect returns -1 if something is | 628 * purple_input_get_error after a non-blocking connect returns -1 if something is |
629 * really messed up (bad descriptor, usually). Otherwise, it returns 0 and | 629 * really messed up (bad descriptor, usually). Otherwise, it returns 0 and |
942 | 942 |
943 g_free(response); | 943 g_free(response); |
944 | 944 |
945 } else if((header = g_strrstr((const char *)connect_data->read_buffer, "Proxy-Authenticate: Basic"))) { | 945 } else if((header = g_strrstr((const char *)connect_data->read_buffer, "Proxy-Authenticate: Basic"))) { |
946 gchar *t1, *t2; | 946 gchar *t1, *t2; |
947 const char *username, *password; | |
948 | |
949 username = purple_proxy_info_get_username(connect_data->gpi); | |
950 password = purple_proxy_info_get_password(connect_data->gpi); | |
947 | 951 |
948 t1 = g_strdup_printf("%s:%s", | 952 t1 = g_strdup_printf("%s:%s", |
949 purple_proxy_info_get_username(connect_data->gpi), | 953 username ? username : "", |
950 purple_proxy_info_get_password(connect_data->gpi) ? | 954 password ? password : ""); |
951 purple_proxy_info_get_password(connect_data->gpi) : ""); | 955 t2 = purple_base64_encode((guchar *)t1, strlen(t1)); |
952 t2 = purple_base64_encode((const guchar *)t1, strlen(t1)); | |
953 g_free(t1); | 956 g_free(t1); |
954 | 957 |
955 request = g_strdup_printf( | 958 request = g_strdup_printf( |
956 "CONNECT %s:%d HTTP/1.1\r\n" | 959 "CONNECT %s:%d HTTP/1.1\r\n" |
957 "Host: %s:%d\r\n" | 960 "Host: %s:%d\r\n" |
1340 if(connect_data->read_len < 4) | 1343 if(connect_data->read_len < 4) |
1341 return; | 1344 return; |
1342 | 1345 |
1343 if ((buf[0] != 0x05) || (buf[1] != 0x00)) { | 1346 if ((buf[0] != 0x05) || (buf[1] != 0x00)) { |
1344 if ((buf[0] == 0x05) && (buf[1] < 0x09)) { | 1347 if ((buf[0] == 0x05) && (buf[1] < 0x09)) { |
1345 purple_debug_error("socks5 proxy", socks5errors[buf[1]]); | 1348 purple_debug_error("socks5 proxy", "%s", socks5errors[buf[1]]); |
1346 purple_proxy_connect_data_disconnect(connect_data, | 1349 purple_proxy_connect_data_disconnect(connect_data, |
1347 socks5errors[buf[1]]); | 1350 socks5errors[buf[1]]); |
1348 } else { | 1351 } else { |
1349 purple_debug_error("socks5 proxy", "Bad data.\n"); | 1352 purple_debug_error("socks5 proxy", "Bad data.\n"); |
1350 purple_proxy_connect_data_disconnect(connect_data, | 1353 purple_proxy_connect_data_disconnect(connect_data, |