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