From 68256930b9ec9fc2f424a3295aa894f309f10349 Mon Sep 17 00:00:00 2001
From: zzz <zzz@mail.i2p>
Date: Sun, 26 Oct 2008 17:20:19 +0000
Subject: [PATCH]     * UDP:        - Don't do peer tests when hidden        -
 Don't offer to introduce when hidden        - Don't continually rebuild
 routerInfo when hidden        - Don't continually rebuild routerInfo when    
      i2np.udp.internalPort is set but i2np.udp.port is not        - Remove
 some unused functions

---
 .../transport/udp/EstablishmentManager.java   |  3 +-
 .../router/transport/udp/UDPTransport.java    | 28 ++++++++-----------
 2 files changed, 13 insertions(+), 18 deletions(-)

diff --git a/router/java/src/net/i2p/router/transport/udp/EstablishmentManager.java b/router/java/src/net/i2p/router/transport/udp/EstablishmentManager.java
index 45f82b461f..f7ca62cc2e 100644
--- a/router/java/src/net/i2p/router/transport/udp/EstablishmentManager.java
+++ b/router/java/src/net/i2p/router/transport/udp/EstablishmentManager.java
@@ -278,7 +278,8 @@ public class EstablishmentManager {
             }
         }
         if (isNew) {
-            if (!_transport.introducersRequired()) {
+            // we don't expect inbound connections when hidden, but it could happen
+            if ((!_context.router().isHidden()) && !_transport.introducersRequired()) {
                 long tag = _context.random().nextLong(MAX_TAG_VALUE);
                 state.setSentRelayTag(tag);
                 if (_log.shouldLog(Log.INFO))
diff --git a/router/java/src/net/i2p/router/transport/udp/UDPTransport.java b/router/java/src/net/i2p/router/transport/udp/UDPTransport.java
index d4118050f0..d40c641180 100644
--- a/router/java/src/net/i2p/router/transport/udp/UDPTransport.java
+++ b/router/java/src/net/i2p/router/transport/udp/UDPTransport.java
@@ -69,7 +69,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
     
     /** summary info to distribute */
     private RouterAddress _externalAddress;
-    /** port number on which we can be reached, or -1 */
+    /** port number on which we can be reached, or -1 for error, or 0 for unset */
     private int _externalListenPort;
     /** IP address of externally reachable host, or null */
     private InetAddress _externalListenHost;
@@ -224,11 +224,11 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
                 if (_log.shouldLog(Log.INFO))
                     _log.info("Selecting an arbitrary port to bind to: " + port);
                 _context.router().setConfigSetting(PROP_INTERNAL_PORT, port+"");
-                // attempt to use it as our external port - this will be overridden by
-                // externalAddressReceived(...)
-                _context.router().setConfigSetting(PROP_EXTERNAL_PORT, port+"");
-                _context.router().saveConfig();
             }
+            // attempt to use it as our external port - this will be overridden by
+            // externalAddressReceived(...)
+            _context.router().setConfigSetting(PROP_EXTERNAL_PORT, port+"");
+            _context.router().saveConfig();
         } else {
             port = _externalListenPort;
             if (_log.shouldLog(Log.INFO))
@@ -989,21 +989,12 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
         shutdown();
     }
     
-    void setExternalListenPort(int port) { _externalListenPort = port; }
-    void setExternalListenHost(InetAddress addr) { _externalListenHost = addr; }
-    void setExternalListenHost(byte addr[]) throws UnknownHostException { 
-        _externalListenHost = InetAddress.getByAddress(addr); 
-    }
-
     private boolean explicitAddressSpecified() {
         return (_context.getProperty(PROP_EXTERNAL_HOST) != null);
     }
     
     void rebuildExternalAddress() { rebuildExternalAddress(true); }
     void rebuildExternalAddress(boolean allowRebuildRouterInfo) {
-        if (_context.router().isHidden())
-            return;
-        
         // if the external port is specified, we want to use that to bind to even
         // if we don't know the external host.
         String port = _context.getProperty(PROP_EXTERNAL_PORT);
@@ -1024,6 +1015,9 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
             }
         }
             
+        if (_context.router().isHidden())
+            return;
+        
         Properties options = new Properties(); 
         boolean directIncluded = false;
         if ( allowDirectUDP() && (_externalListenPort > 0) && (_externalListenHost != null) && (isValid(_externalListenHost.getAddress())) ) {
@@ -2090,9 +2084,9 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
     private static final String PROP_SHOULD_TEST = "i2np.udp.shouldTest";
     
     private boolean shouldTest() {
-        if (true) return true;
-        String val = _context.getProperty(PROP_SHOULD_TEST);
-        return ( (val != null) && ("true".equals(val)) );
+        return ! _context.router().isHidden();
+        //String val = _context.getProperty(PROP_SHOULD_TEST);
+        //return ( (val != null) && ("true".equals(val)) );
     }
     
     private class PeerTestEvent implements SimpleTimer.TimedEvent {
-- 
GitLab