Problems with transmission-daemon with IPv6 and some other popular issues

Remove IPv6 detection

The problem with net-p2p/transmission-daemon and IPv6 is that transmission developers are … not willing to implement such functionality as visible from: https://trac.transmissionbt.com/ticket/4197

So the user who need to use IPv6 but NOT use IPv6 with transmission are left alone.

So you can use this quick patch:

cd /usr/ports/net-p2p/transmission-daemon ;
make extract ;
vi work/transmission-2.94/libtransmission/net.c

@@ -598,7 +598,7 @@
{
int addrlen = 16;
const int rc = tr_globalAddress( AF_INET6,
ipv6, &addrlen );
– have_ipv6 = ( rc >= 0 ) && ( addrlen == 16 );
+ have_ipv6 = 0; /** NO, we do not have IPv6 **/
last_time = now;
}

cd ../../../ ; make deinstall install package clean ;
service transmission restart

Enjoy your non-ipv6 enabled daemon on ipv6/ipv4 dual-stack system!

If you see the error messages like „UDP failed to set receive buffer: No buffer space available „

in you syslog then you must increase sysctl kern.ipc.maxsockbuf with variable greater then 5242880. To do this permanently you must put into /etc/sysctl.conf following:

kern.ipc.maxsockbuf=5242880

Message „IPv4 DHT announce failed“ flooding syslog

vi work/transmission-2.94/third-party/dht/dht.c

@@ -1239,6 +1346,8 @@
         sr = sr->next;
     }
 
+    int sr_duplicate = sr && !sr->done;
+
     if(sr) {
         /* We're reusing data from an old search.  Reusing the same tid
            means that we can merge replies for both searches. */
@@ -1288,7 +1397,11 @@
 
     search_step(sr, callback, closure);
     search_time = now.tv_sec;
-    return 1;
+    if(sr_duplicate) {
+        return 0;
+    } else {
+        return 1;
+    }
 }

Leave a Reply

Този сайт използва Akismet за намаляване на спама. Научете как се обработват данните ви за коментари.