> Adding a g_debug shows that host_addr_net(addr) returns 6 so it's IPv6 
> g2 node that is not handled yet by gtk-gnutella.

This patch seems to run for much more than a couple of minutes, seems to 
work for me at the first glance. I have no idea if it actually should 
work or perhaps more is needed. Additionally, there might be a too long 
line :)

diff --git a/src/core/nodes.c b/src/core/nodes.c
index fc80a5b..29eb046 100644
--- a/src/core/nodes.c
+++ b/src/core/nodes.c
@@ -217,6 +217,7 @@ static gnutella_node_t *udp6_node;
 static gnutella_node_t *udp_sr_node;
 static gnutella_node_t *udp6_sr_node;
 static gnutella_node_t *udp_g2_node;
+static gnutella_node_t *udp6_g2_node;
 static gnutella_node_t *dht_node;
 static gnutella_node_t *dht6_node;
 static gnutella_node_t *udp_route;
@@ -1745,6 +1746,7 @@ node_init(void)
        udp_sr_node = node_udp_sr_create(NET_TYPE_IPV4);
        udp6_sr_node = node_udp_sr_create(NET_TYPE_IPV6);
        udp_g2_node = node_udp_g2_create(NET_TYPE_IPV4);
+       udp6_g2_node = node_udp_g2_create(NET_TYPE_IPV6);
        dht_node = node_dht_create(NET_TYPE_IPV4);
        dht6_node = node_dht_create(NET_TYPE_IPV6);
        browse_node = node_browse_create(FALSE);
@@ -7964,6 +7966,9 @@ node_g2_enable_by_net(enum net_type net)
                s = s_udp_listen;
                break;
        case NET_TYPE_IPV6:
+               n = udp6_g2_node;
+               s = s_udp_listen6;
+               break;
        case NET_TYPE_LOCAL:
        case NET_TYPE_NONE:
                g_assert_not_reached();
@@ -8073,6 +8078,8 @@ node_g2_disable_by_net(enum net_type net)
                n = udp_g2_node;
                break;
        case NET_TYPE_IPV6:
+               n = udp6_g2_node;
+               break;
        case NET_TYPE_LOCAL:
        case NET_TYPE_NONE:
                g_assert_not_reached();
@@ -8106,6 +8113,8 @@ node_g2_enable(void)
 {
        if (s_udp_listen)
                node_g2_enable_by_net(NET_TYPE_IPV4);
+       if (s_udp_listen6)
+               node_g2_enable_by_net(NET_TYPE_IPV6);
 }
 
 void
@@ -8405,6 +8414,8 @@ node_udp_g2_get_addr_port(const host_addr_t addr, uint16 
port)
                        n = udp_g2_node;
                        break;
                case NET_TYPE_IPV6:
+                       n = udp6_g2_node;
+                       break;
                case NET_TYPE_LOCAL:
                case NET_TYPE_NONE:
                        g_assert_not_reached();
@@ -10987,7 +10998,7 @@ node_bye_all(bool all)
 {
        pslist_t *sl;
        gnutella_node_t *udp_nodes[] = {
-               udp_node, udp6_node, udp_sr_node, udp6_sr_node, udp_g2_node,
+               udp_node, udp6_node, udp_sr_node, udp6_sr_node, udp_g2_node, 
udp6_g2_node,
                dht_node, dht6_node
        };
        unsigned i;
@@ -11673,7 +11684,7 @@ node_close(void)
        {
                gnutella_node_t *special_nodes[] = {
                        udp_node, udp6_node, dht_node, dht6_node, browse_node, 
udp_route,
-                       udp_sr_node, udp6_sr_node, udp_g2_node, browse_g2_node
+                       udp_sr_node, udp6_sr_node, udp_g2_node, udp6_g2_node, 
browse_g2_node
                };
                uint i;
 
@@ -11704,6 +11715,7 @@ node_close(void)
                udp_sr_node = NULL;
                udp6_sr_node = NULL;
                udp_g2_node = NULL;
+               udp6_g2_node = NULL;
                dht_node = NULL;
                dht6_node = NULL;
                browse_node = NULL;

-- 
Meelis Roos (mr...@linux.ee)

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most 
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
_______________________________________________
gtk-gnutella-devel mailing list
gtk-gnutella-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/gtk-gnutella-devel

Reply via email to