| 343 static void |
343 static void |
| 344 purple_dnsquery_resolver_destroy(PurpleDnsQueryResolverProcess *resolver) |
344 purple_dnsquery_resolver_destroy(PurpleDnsQueryResolverProcess *resolver) |
| 345 { |
345 { |
| 346 g_return_if_fail(resolver != NULL); |
346 g_return_if_fail(resolver != NULL); |
| 347 |
347 |
| |
348 /* Keep this before the kill() call below. */ |
| |
349 if (resolver->inpa != 0) { |
| |
350 purple_input_remove(resolver->inpa); |
| |
351 resolver->inpa = 0; |
| |
352 } |
| |
353 |
| 348 /* |
354 /* |
| 349 * We might as well attempt to kill our child process. It really |
355 * We might as well attempt to kill our child process. It really |
| 350 * doesn't matter if this fails, because children will expire on |
356 * doesn't matter if this fails, because children will expire on |
| 351 * their own after a few seconds. |
357 * their own after a few seconds. |
| 352 */ |
358 */ |
| 353 if (resolver->dns_pid > 0) |
359 if (resolver->dns_pid > 0) |
| 354 kill(resolver->dns_pid, SIGKILL); |
360 kill(resolver->dns_pid, SIGKILL); |
| 355 |
|
| 356 if (resolver->inpa != 0) |
|
| 357 purple_input_remove(resolver->inpa); |
|
| 358 |
361 |
| 359 close(resolver->fd_in); |
362 close(resolver->fd_in); |
| 360 close(resolver->fd_out); |
363 close(resolver->fd_out); |
| 361 |
364 |
| 362 g_free(resolver); |
365 g_free(resolver); |