Mercurial > pidgin.yaz
comparison src/proxy.c @ 8262:b5dbd1839716
[gaim-migrate @ 8985]
this is jabber new-style file transfer receive support. this doesn't do much error checking or handling, but I managed to send pictures to myself from Exodus on my laptop in the living room, which would have taken twice as long were it not for VNC. i said i was going to bed 1, 2, and 3 hours ago. i should go to bed.
committer: Tailor Script <tailor@pidgin.im>
author | Nathan Walp <nwalp@pidgin.im> |
---|---|
date | Sun, 15 Feb 2004 10:11:38 +0000 |
parents | f50c059b6384 |
children | 79b834d7c2a2 |
comparison
equal
deleted
inserted
replaced
8261:7b57c3bd9db6 | 8262:b5dbd1839716 |
---|---|
1312 struct PHB *phb = data; | 1312 struct PHB *phb = data; |
1313 | 1313 |
1314 gaim_input_remove(phb->inpa); | 1314 gaim_input_remove(phb->inpa); |
1315 gaim_debug(GAIM_DEBUG_INFO, "socks5 proxy", "Able to read again.\n"); | 1315 gaim_debug(GAIM_DEBUG_INFO, "socks5 proxy", "Able to read again.\n"); |
1316 | 1316 |
1317 if (read(source, buf, 10) < 10) { | 1317 if (read(source, buf, 4) < 4) { |
1318 gaim_debug(GAIM_DEBUG_WARNING, "socks5 proxy", "or not...\n"); | 1318 gaim_debug(GAIM_DEBUG_WARNING, "socks5 proxy", "or not...\n"); |
1319 close(source); | 1319 close(source); |
1320 | 1320 |
1321 if (phb->account == NULL || | 1321 if (phb->account == NULL || |
1322 gaim_account_get_connection(phb->account) != NULL) { | 1322 gaim_account_get_connection(phb->account) != NULL) { |
1343 | 1343 |
1344 g_free(phb->host); | 1344 g_free(phb->host); |
1345 g_free(phb); | 1345 g_free(phb); |
1346 return; | 1346 return; |
1347 } | 1347 } |
1348 | |
1349 /* Skip past BND.ADDR */ | |
1350 switch(buf[3]) { | |
1351 case 0x01: /* the address is a version-4 IP address, with a length of 4 octets */ | |
1352 lseek(source, 4, SEEK_CUR); | |
1353 break; | |
1354 case 0x03: /* the address field contains a fully-qualified domain name. The first | |
1355 octet of the address field contains the number of octets of name that | |
1356 follow, there is no terminating NUL octet. */ | |
1357 read(source, buf+4, 1); | |
1358 lseek(source, buf[4], SEEK_CUR); | |
1359 break; | |
1360 case 0x04: /* the address is a version-6 IP address, with a length of 16 octets */ | |
1361 lseek(source, 16, SEEK_CUR); | |
1362 break; | |
1363 } | |
1364 | |
1365 /* Skip past BND.PORT */ | |
1366 lseek(source, 2, SEEK_CUR); | |
1348 | 1367 |
1349 if (phb->account == NULL || | 1368 if (phb->account == NULL || |
1350 gaim_account_get_connection(phb->account) != NULL) { | 1369 gaim_account_get_connection(phb->account) != NULL) { |
1351 | 1370 |
1352 phb->func(phb->data, source, GAIM_INPUT_READ); | 1371 phb->func(phb->data, source, GAIM_INPUT_READ); |
1760 } | 1779 } |
1761 | 1780 |
1762 return gaim_gethostbyname_async(connecthost, connectport, | 1781 return gaim_gethostbyname_async(connecthost, connectport, |
1763 connection_host_resolved, phb); | 1782 connection_host_resolved, phb); |
1764 } | 1783 } |
1784 | |
1785 int | |
1786 gaim_proxy_connect_socks5(GaimProxyInfo *gpi, const char *host, int port, | |
1787 GaimInputFunction func, gpointer data) | |
1788 { | |
1789 struct PHB *phb; | |
1790 | |
1791 phb = g_new0(struct PHB, 1); | |
1792 phb->gpi = gpi; | |
1793 phb->func = func; | |
1794 phb->data = data; | |
1795 phb->host = g_strdup(host); | |
1796 phb->port = port; | |
1797 | |
1798 return gaim_gethostbyname_async(gaim_proxy_info_get_host(gpi), gaim_proxy_info_get_port(gpi), | |
1799 connection_host_resolved, phb); | |
1800 } | |
1801 | |
1765 | 1802 |
1766 static void | 1803 static void |
1767 proxy_pref_cb(const char *name, GaimPrefType type, gpointer value, | 1804 proxy_pref_cb(const char *name, GaimPrefType type, gpointer value, |
1768 gpointer data) | 1805 gpointer data) |
1769 { | 1806 { |