Mercurial > pidgin.yaz
comparison libpurple/protocols/gg/win32-resolver.c @ 32764:ef01f180114b
Gadu-Gadu: synchronize internal libgadu with upstream. Refs #343
author | tomkiewicz@cpw.pidgin.im |
---|---|
date | Tue, 18 Oct 2011 00:55:59 +0000 |
parents | 326591e64aaa |
children |
comparison
equal
deleted
inserted
replaced
32763:326591e64aaa | 32764:ef01f180114b |
---|---|
155 struct ggp_resolver_win32thread_data { | 155 struct ggp_resolver_win32thread_data { |
156 char *hostname; | 156 char *hostname; |
157 int fd; | 157 int fd; |
158 }; | 158 }; |
159 | 159 |
160 /** | |
161 * Copy-paste from gg_resolver_run(). | |
162 */ | |
160 static DWORD WINAPI ggp_resolver_win32thread_thread(LPVOID arg) | 163 static DWORD WINAPI ggp_resolver_win32thread_thread(LPVOID arg) |
161 { | 164 { |
162 struct ggp_resolver_win32thread_data *data = arg; | 165 struct ggp_resolver_win32thread_data *data = arg; |
163 struct in_addr addr_ip[2], *addr_list; | 166 struct in_addr addr_ip[2], *addr_list; |
164 int addr_count; | 167 int addr_count; |
165 | 168 |
166 purple_debug_info("gg", "ggp_resolver_win32thread_thread() host: %s, " | 169 purple_debug_info("gg", "ggp_resolver_win32thread_thread() host: %s, " |
167 "fd: %i called\n", data->hostname, data->fd); | 170 "fd: %i called\n", data->hostname, data->fd); |
168 | 171 |
169 if ((addr_ip[0].s_addr = inet_addr(data->hostname)) == INADDR_NONE) { | 172 if ((addr_ip[0].s_addr = inet_addr(data->hostname)) == INADDR_NONE) { |
170 /* W przypadku błędu gg_gethostbyname_real() zwróci -1 | |
171 * i nie zmieni &addr. Tam jest już INADDR_NONE, | |
172 * więc nie musimy robić nic więcej. */ | |
173 if (gg_gethostbyname_real(data->hostname, &addr_list, | 173 if (gg_gethostbyname_real(data->hostname, &addr_list, |
174 &addr_count, 0) == -1) { | 174 &addr_count, 0) == -1) { |
175 addr_list = addr_ip; | 175 addr_list = addr_ip; |
176 /* addr_ip[0] już zawiera INADDR_NONE */ | |
176 } | 177 } |
177 } else { | 178 } else { |
178 addr_list = addr_ip; | 179 addr_list = addr_ip; |
179 addr_ip[1].s_addr = INADDR_NONE; | 180 addr_ip[1].s_addr = INADDR_NONE; |
180 addr_count = 1; | 181 addr_count = 1; |
181 } | 182 } |
182 | 183 |
183 purple_debug_misc("gg", "ggp_resolver_win32thread_thread() " | 184 purple_debug_misc("gg", "ggp_resolver_win32thread_thread() " |
184 "count = %d\n", addr_count); | 185 "count = %d\n", addr_count); |
185 | 186 |
186 write(data->fd, addr_list, (addr_count+1) * sizeof(struct in_addr)); | 187 write(data->fd, addr_list, (addr_count + 1) * sizeof(struct in_addr)); |
187 close(data->fd); | 188 close(data->fd); |
188 | 189 |
189 free(data->hostname); | 190 free(data->hostname); |
190 data->hostname = NULL; | 191 data->hostname = NULL; |
191 | 192 |