Use a simple Random Early Drop algorithm in send_tcppacket().
[tinc] / src / net_setup.c
index c413792..3eb5644 100644 (file)
@@ -1,7 +1,7 @@
 /*
     net_setup.c -- Setup.
     Copyright (C) 1998-2005 Ivo Timmermans,
-                  2000-2008 Guus Sliepen <guus@tinc-vpn.org>
+                  2000-2009 Guus Sliepen <guus@tinc-vpn.org>
 
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -286,9 +286,6 @@ bool setup_myself(void)
        if(get_config_bool(lookup_config(myself->connection->config_tree, "TCPOnly"), &choice) && choice)
                myself->options |= OPTION_TCPONLY;
 
-       if(!get_config_bool(lookup_config(myself->connection->config_tree, "PMTUDiscovery"), &choice) || choice)
-               myself->options |= OPTION_PMTU_DISCOVERY;
-
        if(myself->options & OPTION_TCPONLY)
                myself->options |= OPTION_INDIRECT;
 
@@ -309,6 +306,10 @@ bool setup_myself(void)
        } else
                routing_mode = RMODE_ROUTER;
 
+       if(routing_mode == RMODE_ROUTER)
+               if(!get_config_bool(lookup_config(myself->connection->config_tree, "PMTUDiscovery"), &choice) || choice)
+                       myself->options |= OPTION_PMTU_DISCOVERY;
+
        get_config_bool(lookup_config(config_tree, "PriorityInheritance"), &priorityinheritance);
 
 #if !defined(SOL_IP) || !defined(IP_TOS)
@@ -546,7 +547,7 @@ bool setup_network_connections(void)
                pingtimeout = pinginterval;
 
        if(!get_config_int(lookup_config(config_tree, "MaxOutputBufferSize"), &maxoutbufsize))
-               maxoutbufsize = 4 * MTU;
+               maxoutbufsize = 10 * MTU;
 
        if(!setup_myself())
                return false;