Mercurial > pidgin.yaz
comparison src/proxy.c @ 10305:9bfcb5eb12bd
[gaim-migrate @ 11490]
Remove what was apparently the only goto in Gaim.
I almost didn't do this because this is probably Syd Logan's
last few lines of code, or something. Eh.
committer: Tailor Script <tailor@pidgin.im>
| author | Mark Doliner <mark@kingant.net> |
|---|---|
| date | Fri, 03 Dec 2004 00:10:19 +0000 |
| parents | 36b7335d3452 |
| children | 2ac21bf20e04 |
comparison
equal
deleted
inserted
replaced
| 10304:842c424078a3 | 10305:9bfcb5eb12bd |
|---|---|
| 634 | 634 |
| 635 #elif defined _WIN32 /* end __unix__ */ | 635 #elif defined _WIN32 /* end __unix__ */ |
| 636 | 636 |
| 637 /* Note: The below win32 implementation is actually platform independent. | 637 /* Note: The below win32 implementation is actually platform independent. |
| 638 Perhaps this can be used in place of the above platform dependent code. | 638 Perhaps this can be used in place of the above platform dependent code. |
| 639 */ | 639 */ |
| 640 | 640 |
| 641 typedef struct _dns_tdata { | 641 typedef struct _dns_tdata { |
| 642 char *hostname; | 642 char *hostname; |
| 643 int port; | 643 int port; |
| 644 dns_callback_t callback; | 644 dns_callback_t callback; |
| 658 static gpointer dns_thread(gpointer data) { | 658 static gpointer dns_thread(gpointer data) { |
| 659 struct sockaddr_in sin; | 659 struct sockaddr_in sin; |
| 660 dns_tdata *td = (dns_tdata*)data; | 660 dns_tdata *td = (dns_tdata*)data; |
| 661 struct hostent *hp; | 661 struct hostent *hp; |
| 662 | 662 |
| 663 if(!(hp = gethostbyname(td->hostname))) | 663 if(!(hp = gethostbyname(td->hostname))) { |
| 664 goto failure; | 664 g_free(td->hostname); |
| 665 g_free(td); | |
| 666 return 0; | |
| 667 } | |
| 668 | |
| 665 memset(&sin, 0, sizeof(struct sockaddr_in)); | 669 memset(&sin, 0, sizeof(struct sockaddr_in)); |
| 666 memcpy(&sin.sin_addr.s_addr, hp->h_addr, hp->h_length); | 670 memcpy(&sin.sin_addr.s_addr, hp->h_addr, hp->h_length); |
| 667 sin.sin_family = hp->h_addrtype; | 671 sin.sin_family = hp->h_addrtype; |
| 668 sin.sin_port = htons(td->port); | 672 sin.sin_port = htons(td->port); |
| 669 | 673 |
| 670 td->hosts = g_slist_append(td->hosts, GINT_TO_POINTER(sizeof(sin))); | 674 td->hosts = g_slist_append(td->hosts, GINT_TO_POINTER(sizeof(sin))); |
| 671 td->hosts = g_slist_append(td->hosts, g_memdup(&sin, sizeof(sin))); | 675 td->hosts = g_slist_append(td->hosts, g_memdup(&sin, sizeof(sin))); |
| 672 /* back to main thread */ | 676 /* back to main thread */ |
| 673 g_idle_add(dns_main_thread_cb, td); | 677 g_idle_add(dns_main_thread_cb, td); |
| 674 return 0; | 678 return 0; |
| 675 failure: | 679 } |
| 676 g_free(td->hostname); | |
| 677 g_free(td); | |
| 678 return 0; | |
| 679 } | |
| 680 | 680 |
| 681 int gaim_gethostbyname_async(const char *hostname, int port, | 681 int gaim_gethostbyname_async(const char *hostname, int port, |
| 682 dns_callback_t callback, gpointer data) { | 682 dns_callback_t callback, gpointer data) { |
| 683 dns_tdata *td; | 683 dns_tdata *td; |
| 684 struct sockaddr_in sin; | 684 struct sockaddr_in sin; |
