diff --git a/router/java/src/net/i2p/router/transport/UPnPManager.java b/router/java/src/net/i2p/router/transport/UPnPManager.java
index a1ad8db3a9569e1c3ad5c03782431d319ec7b1bd..0ff6d5d8482b4c9a5814126ea91c2f49f1a80538 100644
--- a/router/java/src/net/i2p/router/transport/UPnPManager.java
+++ b/router/java/src/net/i2p/router/transport/UPnPManager.java
@@ -37,7 +37,8 @@ class UPnPManager {
     private volatile boolean _isRunning;
     private volatile boolean _shouldBeRunning;
     private volatile long _lastRescan;
-    private volatile boolean _errorLogged;
+    private boolean _errorLogged;
+    private boolean _disconLogged;
     private InetAddress _detectedAddress;
     private final TransportManager _manager;
     private final SimpleTimer2.TimedEvent _rescanner;
@@ -103,10 +104,14 @@ class UPnPManager {
             _rescanner.schedule(RESCAN_SHORT_DELAY);
             // Do we have a non-loopback, non-broadcast address?
             // If not, that's why it failed (HTTPServer won't start)
-            if (!Addresses.isConnected())
-                _log.logAlways(Log.WARN, "UPnP start failed - no network connection?");
-            else
+            if (!Addresses.isConnected()) {
+                if (!_disconLogged) {
+                    _log.logAlways(Log.WARN, "UPnP start failed - no network connection?");
+                    _disconLogged = true;
+                }
+            } else {
                 _log.error("UPnP start failed - port conflict?");
+            }
         }
     }