Mercurial > pidgin
comparison libpurple/protocols/gg/lib/resolver.c @ 31086:a8cc50c2279f
Remove trailing whitespace
author | Richard Laager <rlaager@wiktel.com> |
---|---|
date | Tue, 04 Jan 2011 06:55:30 +0000 |
parents | e4c57ecc54ee |
children | 93b08d43f684 |
comparison
equal
deleted
inserted
replaced
31085:44f53d3fc54f | 31086:a8cc50c2279f |
---|---|
354 { | 354 { |
355 struct gg_resolve_win32thread_data *d = arg; | 355 struct gg_resolve_win32thread_data *d = arg; |
356 struct in_addr a; | 356 struct in_addr a; |
357 | 357 |
358 gg_debug(GG_DEBUG_MISC, "// gg_resolve_win32thread_thread() host: %s, fd: %i called\n", d->hostname, d->fd); | 358 gg_debug(GG_DEBUG_MISC, "// gg_resolve_win32thread_thread() host: %s, fd: %i called\n", d->hostname, d->fd); |
359 | 359 |
360 if ((a.s_addr = inet_addr(d->hostname)) == INADDR_NONE) { | 360 if ((a.s_addr = inet_addr(d->hostname)) == INADDR_NONE) { |
361 /* W przypadku błędu gg_gethostbyname_real() zwróci -1 | 361 /* W przypadku błędu gg_gethostbyname_real() zwróci -1 |
362 * i nie zmieni &addr. Tam jest już INADDR_NONE, | 362 * i nie zmieni &addr. Tam jest już INADDR_NONE, |
363 * więc nie musimy robić nic więcej. */ | 363 * więc nie musimy robić nic więcej. */ |
364 gg_gethostbyname_real(d->hostname, &a, 0); | 364 gg_gethostbyname_real(d->hostname, &a, 0); |
365 } | 365 } |
366 | 366 |
367 // if ((a.s_addr = inet_addr(d->hostname)) == INADDR_NONE) { | 367 // if ((a.s_addr = inet_addr(d->hostname)) == INADDR_NONE) { |
368 // struct in_addr *hn; | 368 // struct in_addr *hn; |
369 | 369 |
370 // if (!(hn = gg_gethostbyname(d->hostname))) | 370 // if (!(hn = gg_gethostbyname(d->hostname))) |
371 // a.s_addr = INADDR_NONE; | 371 // a.s_addr = INADDR_NONE; |
372 // else { | 372 // else { |
373 // a.s_addr = hn->s_addr; | 373 // a.s_addr = hn->s_addr; |
374 // free(hn); | 374 // free(hn); |
382 d->hostname = NULL; | 382 d->hostname = NULL; |
383 | 383 |
384 free(d); | 384 free(d); |
385 | 385 |
386 gg_debug(GG_DEBUG_MISC, "// gg_resolve_win32thread_thread() done\n"); | 386 gg_debug(GG_DEBUG_MISC, "// gg_resolve_win32thread_thread() done\n"); |
387 | 387 |
388 return 0; | 388 return 0; |
389 } | 389 } |
390 | 390 |
391 | 391 |
392 static int gg_resolve_win32thread(int *fd, void **resolver, const char *hostname) | 392 static int gg_resolve_win32thread(int *fd, void **resolver, const char *hostname) |
395 HANDLE h; | 395 HANDLE h; |
396 DWORD dwTId; | 396 DWORD dwTId; |
397 int pipes[2], new_errno; | 397 int pipes[2], new_errno; |
398 | 398 |
399 gg_debug(GG_DEBUG_FUNCTION, "** gg_resolve_win32thread(%p, %p, \"%s\");\n", fd, resolver, hostname); | 399 gg_debug(GG_DEBUG_FUNCTION, "** gg_resolve_win32thread(%p, %p, \"%s\");\n", fd, resolver, hostname); |
400 | 400 |
401 if (!resolver || !fd || !hostname) { | 401 if (!resolver || !fd || !hostname) { |
402 gg_debug(GG_DEBUG_MISC, "// gg_resolve_win32thread() invalid arguments\n"); | 402 gg_debug(GG_DEBUG_MISC, "// gg_resolve_win32thread() invalid arguments\n"); |
403 errno = EFAULT; | 403 errno = EFAULT; |
404 return -1; | 404 return -1; |
405 } | 405 } |
436 | 436 |
437 *resolver = h; | 437 *resolver = h; |
438 *fd = pipes[0]; | 438 *fd = pipes[0]; |
439 | 439 |
440 gg_debug(GG_DEBUG_MISC, "// gg_resolve_win32thread() done\n"); | 440 gg_debug(GG_DEBUG_MISC, "// gg_resolve_win32thread() done\n"); |
441 | 441 |
442 return 0; | 442 return 0; |
443 | 443 |
444 cleanup: | 444 cleanup: |
445 if (d) { | 445 if (d) { |
446 free(d->hostname); | 446 free(d->hostname); |
459 static void gg_resolve_win32thread_cleanup(void **priv_data, int force) | 459 static void gg_resolve_win32thread_cleanup(void **priv_data, int force) |
460 { | 460 { |
461 struct gg_resolve_win32thread_data *data; | 461 struct gg_resolve_win32thread_data *data; |
462 | 462 |
463 gg_debug(GG_DEBUG_MISC, "// gg_resolve_win32thread_cleanup() force: %i called\n", force); | 463 gg_debug(GG_DEBUG_MISC, "// gg_resolve_win32thread_cleanup() force: %i called\n", force); |
464 | 464 |
465 if (priv_data == NULL || *priv_data == NULL) | 465 if (priv_data == NULL || *priv_data == NULL) |
466 gg_debug(GG_DEBUG_MISC, "// gg_resolve_win32thread_cleanup() priv_data: NULL\n"); | 466 gg_debug(GG_DEBUG_MISC, "// gg_resolve_win32thread_cleanup() priv_data: NULL\n"); |
467 return; | 467 return; |
468 | 468 |
469 data = (struct gg_resolve_win32thread_data*) *priv_data; | 469 data = (struct gg_resolve_win32thread_data*) *priv_data; |
492 /** | 492 /** |
493 * \internal Rozwiązuje nazwę serwera w osobnym procesie. | 493 * \internal Rozwiązuje nazwę serwera w osobnym procesie. |
494 * | 494 * |
495 * Połączenia asynchroniczne nie mogą blokować procesu w trakcie rozwiązywania | 495 * Połączenia asynchroniczne nie mogą blokować procesu w trakcie rozwiązywania |
496 * nazwy serwera. W tym celu tworzony jest potok, nowy proces i dopiero w nim | 496 * nazwy serwera. W tym celu tworzony jest potok, nowy proces i dopiero w nim |
497 * przeprowadzane jest rozwiązywanie nazwy. Deskryptor strony do odczytu | 497 * przeprowadzane jest rozwiązywanie nazwy. Deskryptor strony do odczytu |
498 * zapisuje się w strukturze sieci i czeka na dane w postaci struktury | 498 * zapisuje się w strukturze sieci i czeka na dane w postaci struktury |
499 * \c in_addr. Jeśli nie znaleziono nazwy, zwracana jest \c INADDR_NONE. | 499 * \c in_addr. Jeśli nie znaleziono nazwy, zwracana jest \c INADDR_NONE. |
500 * | 500 * |
501 * \param fd Wskaźnik na zmienną, gdzie zostanie umieszczony deskryptor | 501 * \param fd Wskaźnik na zmienną, gdzie zostanie umieszczony deskryptor |
502 * potoku | 502 * potoku |
671 gg_gethostbyname_real(data->hostname, &addr, 1); | 671 gg_gethostbyname_real(data->hostname, &addr, 1); |
672 } | 672 } |
673 | 673 |
674 if (write(data->wfd, &addr, sizeof(addr)) == sizeof(addr)) | 674 if (write(data->wfd, &addr, sizeof(addr)) == sizeof(addr)) |
675 pthread_exit(NULL); | 675 pthread_exit(NULL); |
676 else | 676 else |
677 pthread_exit((void*) -1); | 677 pthread_exit((void*) -1); |
678 | 678 |
679 return NULL; /* żeby kompilator nie marudził */ | 679 return NULL; /* żeby kompilator nie marudził */ |
680 } | 680 } |
681 | 681 |
987 gg_global_resolver_type = type; | 987 gg_global_resolver_type = type; |
988 gg_global_resolver_start = gg_resolver_fork_start; | 988 gg_global_resolver_start = gg_resolver_fork_start; |
989 gg_global_resolver_cleanup = gg_resolver_fork_cleanup; | 989 gg_global_resolver_cleanup = gg_resolver_fork_cleanup; |
990 return 0; | 990 return 0; |
991 #endif | 991 #endif |
992 | 992 |
993 #ifdef _WIN32 | 993 #ifdef _WIN32 |
994 case GG_RESOLVER_WIN32: | 994 case GG_RESOLVER_WIN32: |
995 gg_global_resolver_type = type; | 995 gg_global_resolver_type = type; |
996 gg_global_resolver_start = gg_resolve_win32thread; | 996 gg_global_resolver_start = gg_resolve_win32thread; |
997 gg_global_resolver_cleanup = gg_resolve_win32thread_cleanup; | 997 gg_global_resolver_cleanup = gg_resolve_win32thread_cleanup; |
998 return 0; | 998 return 0; |
999 #endif | 999 #endif |
1000 | 1000 |
1001 #ifdef GG_CONFIG_HAVE_PTHREAD | 1001 #ifdef GG_CONFIG_HAVE_PTHREAD |
1002 case GG_RESOLVER_PTHREAD: | 1002 case GG_RESOLVER_PTHREAD: |
1003 gg_global_resolver_type = type; | 1003 gg_global_resolver_type = type; |
1004 gg_global_resolver_start = gg_resolver_pthread_start; | 1004 gg_global_resolver_start = gg_resolver_pthread_start; |
1005 gg_global_resolver_cleanup = gg_resolver_pthread_cleanup; | 1005 gg_global_resolver_cleanup = gg_resolver_pthread_cleanup; |
1036 * Parametry funkcji zwalniającej zasoby wyglądają następująco: | 1036 * Parametry funkcji zwalniającej zasoby wyglądają następująco: |
1037 * - \c "void **priv_data" — wskaźnik na zmienną przechowującą wskaźnik do prywatnych danych, należy go ustawić na \c NULL po zakończeniu | 1037 * - \c "void **priv_data" — wskaźnik na zmienną przechowującą wskaźnik do prywatnych danych, należy go ustawić na \c NULL po zakończeniu |
1038 * - \c "int force" — flaga mówiąca o tym, że zasoby są zwalniane przed zakończeniem rozwiązywania nazwy, np. z powodu zamknięcia sesji. | 1038 * - \c "int force" — flaga mówiąca o tym, że zasoby są zwalniane przed zakończeniem rozwiązywania nazwy, np. z powodu zamknięcia sesji. |
1039 * | 1039 * |
1040 * Własny kod rozwiązywania nazwy powinien stworzyć potok, parę gniazd lub | 1040 * Własny kod rozwiązywania nazwy powinien stworzyć potok, parę gniazd lub |
1041 * inny deskryptor pozwalający na co najmniej jednostronną komunikację i | 1041 * inny deskryptor pozwalający na co najmniej jednostronną komunikację i |
1042 * przekazać go w parametrze \c fd. Po zakończeniu rozwiązywania nazwy, | 1042 * przekazać go w parametrze \c fd. Po zakończeniu rozwiązywania nazwy, |
1043 * powinien wysłać otrzymany adres IP w postaci sieciowej (big-endian) do | 1043 * powinien wysłać otrzymany adres IP w postaci sieciowej (big-endian) do |
1044 * deskryptora. Jeśli rozwiązywanie nazwy się nie powiedzie, należy wysłać | 1044 * deskryptora. Jeśli rozwiązywanie nazwy się nie powiedzie, należy wysłać |
1045 * \c INADDR_NONE. Następnie zostanie wywołana funkcja zwalniająca zasoby | 1045 * \c INADDR_NONE. Następnie zostanie wywołana funkcja zwalniająca zasoby |
1046 * z parametrem \c force równym \c 0. Gdyby sesja została zakończona przed | 1046 * z parametrem \c force równym \c 0. Gdyby sesja została zakończona przed |