diff options
Diffstat (limited to 'src/gns/gnunet-dns2gns.c')
-rw-r--r-- | src/gns/gnunet-dns2gns.c | 96 |
1 files changed, 51 insertions, 45 deletions
diff --git a/src/gns/gnunet-dns2gns.c b/src/gns/gnunet-dns2gns.c index 119bda91a..df3b4e882 100644 --- a/src/gns/gnunet-dns2gns.c +++ b/src/gns/gnunet-dns2gns.c | |||
@@ -175,9 +175,15 @@ static void | |||
175 | do_shutdown (void *cls) | 175 | do_shutdown (void *cls) |
176 | { | 176 | { |
177 | if (NULL != t4) | 177 | if (NULL != t4) |
178 | { | ||
178 | GNUNET_SCHEDULER_cancel (t4); | 179 | GNUNET_SCHEDULER_cancel (t4); |
180 | t4 = NULL; | ||
181 | } | ||
179 | if (NULL != t6) | 182 | if (NULL != t6) |
183 | { | ||
180 | GNUNET_SCHEDULER_cancel (t6); | 184 | GNUNET_SCHEDULER_cancel (t6); |
185 | t6 = NULL; | ||
186 | } | ||
181 | if (NULL != listen_socket4) | 187 | if (NULL != listen_socket4) |
182 | { | 188 | { |
183 | GNUNET_NETWORK_socket_close (listen_socket4); | 189 | GNUNET_NETWORK_socket_close (listen_socket4); |
@@ -607,57 +613,57 @@ run_dnsd () | |||
607 | SOCK_DGRAM, | 613 | SOCK_DGRAM, |
608 | IPPROTO_UDP); | 614 | IPPROTO_UDP); |
609 | if (NULL != listen_socket4) | 615 | if (NULL != listen_socket4) |
610 | { | 616 | { |
611 | struct sockaddr_in v4; | 617 | struct sockaddr_in v4; |
612 | 618 | ||
613 | memset (&v4, 0, sizeof (v4)); | 619 | memset (&v4, 0, sizeof (v4)); |
614 | v4.sin_family = AF_INET; | 620 | v4.sin_family = AF_INET; |
615 | #if HAVE_SOCKADDR_IN_SIN_LEN | 621 | #if HAVE_SOCKADDR_IN_SIN_LEN |
616 | v4.sin_len = sizeof (v4); | 622 | v4.sin_len = sizeof (v4); |
617 | #endif | 623 | #endif |
618 | v4.sin_port = htons (listen_port); | 624 | v4.sin_port = htons (listen_port); |
619 | if (GNUNET_OK != | 625 | if (GNUNET_OK != |
620 | GNUNET_NETWORK_socket_bind (listen_socket4, | 626 | GNUNET_NETWORK_socket_bind (listen_socket4, |
621 | (struct sockaddr *) &v4, | 627 | (struct sockaddr *) &v4, |
622 | sizeof (v4))) | 628 | sizeof (v4))) |
623 | { | 629 | { |
624 | GNUNET_log_strerror (GNUNET_ERROR_TYPE_ERROR, "bind"); | 630 | GNUNET_log_strerror (GNUNET_ERROR_TYPE_ERROR, "bind"); |
625 | GNUNET_NETWORK_socket_close (listen_socket4); | 631 | GNUNET_NETWORK_socket_close (listen_socket4); |
626 | listen_socket4 = NULL; | 632 | listen_socket4 = NULL; |
627 | } | ||
628 | } | 633 | } |
634 | } | ||
629 | listen_socket6 = GNUNET_NETWORK_socket_create (PF_INET6, | 635 | listen_socket6 = GNUNET_NETWORK_socket_create (PF_INET6, |
630 | SOCK_DGRAM, | 636 | SOCK_DGRAM, |
631 | IPPROTO_UDP); | 637 | IPPROTO_UDP); |
632 | if (NULL != listen_socket6) | 638 | if (NULL != listen_socket6) |
633 | { | 639 | { |
634 | struct sockaddr_in6 v6; | 640 | struct sockaddr_in6 v6; |
635 | 641 | ||
636 | memset (&v6, 0, sizeof (v6)); | 642 | memset (&v6, 0, sizeof (v6)); |
637 | v6.sin6_family = AF_INET6; | 643 | v6.sin6_family = AF_INET6; |
638 | #if HAVE_SOCKADDR_IN_SIN_LEN | 644 | #if HAVE_SOCKADDR_IN_SIN_LEN |
639 | v6.sin6_len = sizeof (v6); | 645 | v6.sin6_len = sizeof (v6); |
640 | #endif | 646 | #endif |
641 | v6.sin6_port = htons (listen_port); | 647 | v6.sin6_port = htons (listen_port); |
642 | if (GNUNET_OK != | 648 | if (GNUNET_OK != |
643 | GNUNET_NETWORK_socket_bind (listen_socket6, | 649 | GNUNET_NETWORK_socket_bind (listen_socket6, |
644 | (struct sockaddr *) &v6, | 650 | (struct sockaddr *) &v6, |
645 | sizeof (v6))) | 651 | sizeof (v6))) |
646 | { | 652 | { |
647 | GNUNET_log_strerror (GNUNET_ERROR_TYPE_ERROR, "bind"); | 653 | GNUNET_log_strerror (GNUNET_ERROR_TYPE_ERROR, "bind"); |
648 | GNUNET_NETWORK_socket_close (listen_socket6); | 654 | GNUNET_NETWORK_socket_close (listen_socket6); |
649 | listen_socket6 = NULL; | 655 | listen_socket6 = NULL; |
650 | } | ||
651 | } | 656 | } |
657 | } | ||
652 | if ( (NULL == listen_socket4) && | 658 | if ( (NULL == listen_socket4) && |
653 | (NULL == listen_socket6) ) | 659 | (NULL == listen_socket6) ) |
654 | { | 660 | { |
655 | GNUNET_GNS_disconnect (gns); | 661 | GNUNET_GNS_disconnect (gns); |
656 | gns = NULL; | 662 | gns = NULL; |
657 | GNUNET_DNSSTUB_stop (dns_stub); | 663 | GNUNET_DNSSTUB_stop (dns_stub); |
658 | dns_stub = NULL; | 664 | dns_stub = NULL; |
659 | return; | 665 | return; |
660 | } | 666 | } |
661 | if (NULL != listen_socket4) | 667 | if (NULL != listen_socket4) |
662 | t4 = GNUNET_SCHEDULER_add_read_net (GNUNET_TIME_UNIT_FOREVER_REL, | 668 | t4 = GNUNET_SCHEDULER_add_read_net (GNUNET_TIME_UNIT_FOREVER_REL, |
663 | listen_socket4, | 669 | listen_socket4, |
@@ -668,7 +674,6 @@ run_dnsd () | |||
668 | listen_socket6, | 674 | listen_socket6, |
669 | &read_dns6, | 675 | &read_dns6, |
670 | listen_socket6); | 676 | listen_socket6); |
671 | |||
672 | } | 677 | } |
673 | 678 | ||
674 | 679 | ||
@@ -719,7 +724,9 @@ identity_cb (void *cls, | |||
719 | * @param c configuration | 724 | * @param c configuration |
720 | */ | 725 | */ |
721 | static void | 726 | static void |
722 | run (void *cls, char *const *args, const char *cfgfile, | 727 | run (void *cls, |
728 | char *const *args, | ||
729 | const char *cfgfile, | ||
723 | const struct GNUNET_CONFIGURATION_Handle *c) | 730 | const struct GNUNET_CONFIGURATION_Handle *c) |
724 | { | 731 | { |
725 | cfg = c; | 732 | cfg = c; |
@@ -730,8 +737,7 @@ run (void *cls, char *const *args, const char *cfgfile, | |||
730 | _("No DNS server specified!\n")); | 737 | _("No DNS server specified!\n")); |
731 | return; | 738 | return; |
732 | } | 739 | } |
733 | GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_FOREVER_REL, | 740 | GNUNET_SCHEDULER_add_shutdown (&do_shutdown, NULL); |
734 | &do_shutdown, NULL); | ||
735 | if (NULL == gns_zone_str) | 741 | if (NULL == gns_zone_str) |
736 | { | 742 | { |
737 | identity = GNUNET_IDENTITY_connect (cfg, | 743 | identity = GNUNET_IDENTITY_connect (cfg, |
@@ -745,8 +751,8 @@ run (void *cls, char *const *args, const char *cfgfile, | |||
745 | if ( (NULL == gns_zone_str) || | 751 | if ( (NULL == gns_zone_str) || |
746 | (GNUNET_OK != | 752 | (GNUNET_OK != |
747 | GNUNET_CRYPTO_ecdsa_public_key_from_string (gns_zone_str, | 753 | GNUNET_CRYPTO_ecdsa_public_key_from_string (gns_zone_str, |
748 | strlen (gns_zone_str), | 754 | strlen (gns_zone_str), |
749 | &my_zone)) ) | 755 | &my_zone)) ) |
750 | { | 756 | { |
751 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, | 757 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, |
752 | _("No valid GNS zone specified!\n")); | 758 | _("No valid GNS zone specified!\n")); |