comparison src/proxy.c @ 9729:f44ae9331afc

[gaim-migrate @ 10590] Use opt_debug less in proxy.c committer: Tailor Script <tailor@pidgin.im>
author Mark Doliner <mark@kingant.net>
date Sun, 08 Aug 2004 19:01:42 +0000
parents 51464cbbdc1a
children d9e8d420e9fe
comparison
equal deleted inserted replaced
9728:8be2c406a1f1 9729:f44ae9331afc
34 #include "notify.h" 34 #include "notify.h"
35 #include "prefs.h" 35 #include "prefs.h"
36 #include "proxy.h" 36 #include "proxy.h"
37 #include "util.h" 37 #include "util.h"
38 38
39 #include "gaim.h"
40
39 static GaimProxyInfo *global_proxy_info = NULL; 41 static GaimProxyInfo *global_proxy_info = NULL;
40
41 static int opt_debug = 0;
42 42
43 struct PHB { 43 struct PHB {
44 GaimInputFunction func; 44 GaimInputFunction func;
45 gpointer data; 45 gpointer data;
46 char *host; 46 char *host;
416 } 416 }
417 #endif 417 #endif
418 } 418 }
419 419
420 static void 420 static void
421 gaim_dns_childthread(int child_out, int child_in, dns_params_t *dns_params) 421 gaim_dns_childthread(int child_out, int child_in, dns_params_t *dns_params, gboolean show_debug)
422 { 422 {
423 const int zero = 0; 423 const int zero = 0;
424 int rc; 424 int rc;
425 #if HAVE_GETADDRINFO 425 #if HAVE_GETADDRINFO
426 struct addrinfo hints, *res, *tmp; 426 struct addrinfo hints, *res, *tmp;
446 struct timeval tv = { .tv_sec = 40 , .tv_usec = 0 }; 446 struct timeval tv = { .tv_sec = 40 , .tv_usec = 0 };
447 FD_ZERO(&fds); 447 FD_ZERO(&fds);
448 FD_SET(child_in, &fds); 448 FD_SET(child_in, &fds);
449 rc = select(child_in + 1, &fds, NULL, NULL, &tv); 449 rc = select(child_in + 1, &fds, NULL, NULL, &tv);
450 if (!rc) { 450 if (!rc) {
451 if (opt_debug) 451 if (show_debug)
452 fprintf(stderr,"dns[%d]: nobody needs me... =(\n", getpid()); 452 fprintf(stderr,"dns[%d]: nobody needs me... =(\n", getpid());
453 break; 453 break;
454 } 454 }
455 rc = read(child_in, dns_params, sizeof(dns_params_t)); 455 rc = read(child_in, dns_params, sizeof(dns_params_t));
456 if (rc < 0) { 456 if (rc < 0) {
457 perror("read()"); 457 perror("read()");
458 break; 458 break;
459 } 459 }
460 if (rc==0) { 460 if (rc==0) {
461 if(opt_debug) 461 if (show_debug)
462 fprintf(stderr,"dns[%d]: Ops, father has gone, wait for me, wait...!\n", getpid()); 462 fprintf(stderr,"dns[%d]: Ops, father has gone, wait for me, wait...!\n", getpid());
463 _exit(0); 463 _exit(0);
464 } 464 }
465 if (dns_params->hostname[0] == '\0') { 465 if (dns_params->hostname[0] == '\0') {
466 fprintf(stderr, "dns[%d]: hostname = \"\" (port = %d)!!!\n", getpid(), dns_params->port); 466 fprintf(stderr, "dns[%d]: hostname = \"\" (port = %d)!!!\n", getpid(), dns_params->port);
479 * value will not be really used by the C 479 * value will not be really used by the C
480 * library. 480 * library.
481 */ 481 */
482 hints.ai_socktype = SOCK_STREAM; 482 hints.ai_socktype = SOCK_STREAM;
483 rc = getaddrinfo(dns_params->hostname, servname, &hints, &res); 483 rc = getaddrinfo(dns_params->hostname, servname, &hints, &res);
484 if(rc) { 484 if (rc) {
485 write(child_out, &rc, sizeof(int)); 485 write(child_out, &rc, sizeof(int));
486 close(child_out); 486 close(child_out);
487 if(opt_debug) 487 if (show_debug)
488 fprintf(stderr,"dns[%d] Error: getaddrinfo returned %d\n", 488 fprintf(stderr,"dns[%d] Error: getaddrinfo returned %d\n",
489 getpid(), rc); 489 getpid(), rc);
490 dns_params->hostname[0] = '\0'; 490 dns_params->hostname[0] = '\0';
491 continue; 491 continue;
492 } 492 }
501 freeaddrinfo(tmp); 501 freeaddrinfo(tmp);
502 write(child_out, &zero, sizeof(zero)); 502 write(child_out, &zero, sizeof(zero));
503 #else 503 #else
504 if (!inet_aton(hostname, &sin.sin_addr)) { 504 if (!inet_aton(hostname, &sin.sin_addr)) {
505 struct hostent *hp; 505 struct hostent *hp;
506 if(!(hp = gethostbyname(dns_params->hostname))) { 506 if (!(hp = gethostbyname(dns_params->hostname))) {
507 write(child_out, &h_errno, sizeof(int)); 507 write(child_out, &h_errno, sizeof(int));
508 close(child_out); 508 close(child_out);
509 if(opt_debug) 509 if (show_debug)
510 fprintf(stderr,"DNS Error: %d\n", h_errno); 510 fprintf(stderr,"DNS Error: %d\n", h_errno);
511 _exit(0); 511 _exit(0);
512 } 512 }
513 memset(&sin, 0, sizeof(struct sockaddr_in)); 513 memset(&sin, 0, sizeof(struct sockaddr_in));
514 memcpy(&sin.sin_addr.s_addr, hp->h_addr, hp->h_length); 514 memcpy(&sin.sin_addr.s_addr, hp->h_addr, hp->h_length);
593 593
594 /* Fork! */ 594 /* Fork! */
595 req->dns_pid = fork(); 595 req->dns_pid = fork();
596 596
597 /* If we are the child process... */ 597 /* If we are the child process... */
598 if (req->dns_pid==0) { 598 if (req->dns_pid == 0) {
599 /* We should not access the parent's side of the pipe, so close them... */ 599 /* We should not access the parent's side of the pipe, so close them... */
600 close(child_out[0]); 600 close(child_out[0]);
601 close(child_in[1]); 601 close(child_in[1]);
602 602
603 gaim_dns_childthread(child_out[1], child_in[0], &dns_params); 603 gaim_dns_childthread(child_out[1], child_in[0], &dns_params, opt_debug);
604 /* The thread calls _exit() rather than returning, so we never get here */ 604 /* The thread calls _exit() rather than returning, so we never get here */
605 } 605 }
606 606
607 /* We should not access the child's side of the pipe, so close them... */ 607 /* We should not access the child's side of the pipe, so close them... */
608 close(child_out[1]); 608 close(child_out[1]);