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" &mdash; 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" &mdash; 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" &mdash; 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" &mdash; 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