diff options
author | Matthias Wachs <wachs@net.in.tum.de> | 2011-05-16 13:51:05 +0000 |
---|---|---|
committer | Matthias Wachs <wachs@net.in.tum.de> | 2011-05-16 13:51:05 +0000 |
commit | 096a81591d3a485f7ac83c8b81c5bd8b25a3a29a (patch) | |
tree | b62ef1b54869acc8edf024bdc2ed4814219506a3 /src/transport/plugin_transport_tcp.c | |
parent | 60858280816615ca9c70332af76bbb797f2984be (diff) | |
download | gnunet-096a81591d3a485f7ac83c8b81c5bd8b25a3a29a.tar.gz gnunet-096a81591d3a485f7ac83c8b81c5bd8b25a3a29a.zip |
Another fix for specific bind addresses
Diffstat (limited to 'src/transport/plugin_transport_tcp.c')
-rw-r--r-- | src/transport/plugin_transport_tcp.c | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/src/transport/plugin_transport_tcp.c b/src/transport/plugin_transport_tcp.c index cca50c1ca..677157194 100644 --- a/src/transport/plugin_transport_tcp.c +++ b/src/transport/plugin_transport_tcp.c | |||
@@ -2663,7 +2663,7 @@ process_external_ip (void *cls, | |||
2663 | struct Plugin *plugin = cls; | 2663 | struct Plugin *plugin = cls; |
2664 | const struct sockaddr_in *s; | 2664 | const struct sockaddr_in *s; |
2665 | struct IPv4TcpAddress t4; | 2665 | struct IPv4TcpAddress t4; |
2666 | 2666 | char buf[INET_ADDRSTRLEN]; | |
2667 | 2667 | ||
2668 | plugin->ext_dns = NULL; | 2668 | plugin->ext_dns = NULL; |
2669 | if (addr == NULL) | 2669 | if (addr == NULL) |
@@ -2690,9 +2690,29 @@ process_external_ip (void *cls, | |||
2690 | plugin->external_address, | 2690 | plugin->external_address, |
2691 | (int) plugin->adv_port); | 2691 | (int) plugin->adv_port); |
2692 | } | 2692 | } |
2693 | |||
2694 | if ((plugin->bind_address != NULL) && (plugin->behind_nat == GNUNET_NO)) | ||
2695 | { | ||
2696 | GNUNET_assert (NULL != inet_ntop(AF_INET, | ||
2697 | &t4.ipv4_addr, | ||
2698 | buf, | ||
2699 | sizeof (buf))); | ||
2700 | if (0 != strcmp (plugin->bind_address, buf)) | ||
2701 | { | ||
2702 | GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR, | ||
2703 | "tcp", | ||
2704 | "NAT is not enabled and specific bind address `%s' differs from external address `%s'! Not notifying about external address `%s'\n", | ||
2705 | plugin->bind_address, | ||
2706 | plugin->external_address, | ||
2707 | plugin->external_address); | ||
2708 | return; | ||
2709 | } | ||
2710 | } | ||
2711 | |||
2693 | add_to_address_list (plugin, | 2712 | add_to_address_list (plugin, |
2694 | &t4.ipv4_addr, | 2713 | &t4.ipv4_addr, |
2695 | sizeof (struct in_addr)); | 2714 | sizeof (struct in_addr)); |
2715 | |||
2696 | plugin->env->notify_address (plugin->env->cls, | 2716 | plugin->env->notify_address (plugin->env->cls, |
2697 | "tcp", | 2717 | "tcp", |
2698 | &t4, sizeof(t4), | 2718 | &t4, sizeof(t4), |