diff options
author | Christian Grothoff <christian@grothoff.org> | 2013-01-21 15:50:39 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2013-01-21 15:50:39 +0000 |
commit | 90336d964868e9d726b87ab2f60470e6b4063b20 (patch) | |
tree | d0ac394431fa96a8f6d21d8a3e9c70f18a0b07c8 /src/util/connection.c | |
parent | cfa84463ead2e088299fa3e036c4d8608efa71e6 (diff) | |
download | gnunet-90336d964868e9d726b87ab2f60470e6b4063b20.tar.gz gnunet-90336d964868e9d726b87ab2f60470e6b4063b20.zip |
-undo 25844
Diffstat (limited to 'src/util/connection.c')
-rw-r--r-- | src/util/connection.c | 57 |
1 files changed, 8 insertions, 49 deletions
diff --git a/src/util/connection.c b/src/util/connection.c index cb887c412..d7ae12fb3 100644 --- a/src/util/connection.c +++ b/src/util/connection.c | |||
@@ -733,68 +733,27 @@ try_connect_using_address (void *cls, const struct sockaddr *addr, | |||
733 | ap->addrlen = addrlen; | 733 | ap->addrlen = addrlen; |
734 | ap->connection = connection; | 734 | ap->connection = connection; |
735 | 735 | ||
736 | ap->sock = GNUNET_NETWORK_socket_create (ap->addr->sa_family, SOCK_STREAM, 0); | ||
737 | if (NULL == ap->sock) | ||
738 | { | ||
739 | GNUNET_free (ap); | ||
740 | return; /* not supported by OS */ | ||
741 | } | ||
742 | switch (ap->addr->sa_family) | 736 | switch (ap->addr->sa_family) |
743 | { | 737 | { |
744 | case AF_INET: | 738 | case AF_INET: |
745 | { | 739 | ((struct sockaddr_in *) ap->addr)->sin_port = htons (connection->port); |
746 | struct sockaddr_in bnd; | ||
747 | |||
748 | ((struct sockaddr_in *) ap->addr)->sin_port = htons (connection->port); | ||
749 | |||
750 | bnd.sin_family = AF_INET; | ||
751 | bnd.sin_port = htons (0); | ||
752 | bnd.sin_addr.s_addr = htonl(INADDR_LOOPBACK); | ||
753 | #if HAVE_SOCKADDR_IN_SIN_LEN | ||
754 | bnd.sin_len = sizeof (bnd); | ||
755 | #endif | ||
756 | if (0 == memcmp (&bnd.sin_addr.s_addr, | ||
757 | &((struct sockaddr_in *) ap->addr)->sin_addr.s_addr, | ||
758 | sizeof (bnd.sin_addr.s_addr))) | ||
759 | { | ||
760 | /* bind source IP to FORCE it to be loopback */ | ||
761 | (void) GNUNET_NETWORK_socket_bind (ap->sock, | ||
762 | (const struct sockaddr *) &bnd, | ||
763 | sizeof (bnd)); | ||
764 | } | ||
765 | } | ||
766 | break; | 740 | break; |
767 | case AF_INET6: | 741 | case AF_INET6: |
768 | { | 742 | ((struct sockaddr_in6 *) ap->addr)->sin6_port = htons (connection->port); |
769 | struct sockaddr_in6 bnd; | ||
770 | |||
771 | ((struct sockaddr_in6 *) ap->addr)->sin6_port = htons (connection->port); | ||
772 | |||
773 | bnd.sin6_family = AF_INET6; | ||
774 | bnd.sin6_port = htons (0); | ||
775 | bnd.sin6_addr = in6addr_loopback; | ||
776 | #if HAVE_SOCKADDR_IN_SIN_LEN | ||
777 | bnd.sin6_len = sizeof (bnd); | ||
778 | #endif | ||
779 | if (0 == memcmp (&bnd.sin6_addr, | ||
780 | &((struct sockaddr_in6 *) ap->addr)->sin6_addr, | ||
781 | sizeof (bnd.sin6_addr))) | ||
782 | { | ||
783 | /* bind source IP to FORCE it to be loopback */ | ||
784 | (void) GNUNET_NETWORK_socket_bind (ap->sock, | ||
785 | (const struct sockaddr *) &bnd, | ||
786 | sizeof (bnd)); | ||
787 | } | ||
788 | } | ||
789 | break; | 743 | break; |
790 | default: | 744 | default: |
791 | GNUNET_break (0); | 745 | GNUNET_break (0); |
792 | GNUNET_free (ap); | 746 | GNUNET_free (ap); |
793 | return; /* not supported by us */ | 747 | return; /* not supported by us */ |
794 | } | 748 | } |
749 | ap->sock = GNUNET_NETWORK_socket_create (ap->addr->sa_family, SOCK_STREAM, 0); | ||
750 | if (NULL == ap->sock) | ||
751 | { | ||
752 | GNUNET_free (ap); | ||
753 | return; /* not supported by OS */ | ||
754 | } | ||
795 | LOG (GNUNET_ERROR_TYPE_INFO, _("Trying to connect to `%s' (%p)\n"), | 755 | LOG (GNUNET_ERROR_TYPE_INFO, _("Trying to connect to `%s' (%p)\n"), |
796 | GNUNET_a2s (ap->addr, ap->addrlen), connection); | 756 | GNUNET_a2s (ap->addr, ap->addrlen), connection); |
797 | |||
798 | if ((GNUNET_OK != | 757 | if ((GNUNET_OK != |
799 | GNUNET_NETWORK_socket_connect (ap->sock, ap->addr, ap->addrlen)) && | 758 | GNUNET_NETWORK_socket_connect (ap->sock, ap->addr, ap->addrlen)) && |
800 | (EINPROGRESS != errno)) | 759 | (EINPROGRESS != errno)) |