diff --git a/apps/routerconsole/java/src/net/i2p/router/update/ConsoleUpdateManager.java b/apps/routerconsole/java/src/net/i2p/router/update/ConsoleUpdateManager.java
index 5b4ddb1e43f6fef1096394164ea7177d7cffa362..d2aaecd2548b006f2e113e548725b60512b102bf 100644
--- a/apps/routerconsole/java/src/net/i2p/router/update/ConsoleUpdateManager.java
+++ b/apps/routerconsole/java/src/net/i2p/router/update/ConsoleUpdateManager.java
@@ -923,7 +923,7 @@ public class ConsoleUpdateManager implements UpdateManager {
 
     private void finishStatus(String msg) {
         updateStatus(msg);
-        SimpleScheduler.getInstance().addEvent(new Cleaner(msg), 20*60*1000);
+        _context.simpleScheduler().addEvent(new Cleaner(msg), 20*60*1000);
     }
 
     private class Cleaner implements SimpleTimer.TimedEvent {
diff --git a/apps/routerconsole/java/src/net/i2p/router/update/PluginUpdateChecker.java b/apps/routerconsole/java/src/net/i2p/router/update/PluginUpdateChecker.java
index acfe6626c6ec072cad2768a3c561b6e8999d4170..3ae282f5b5e39d7da2f94eba2b5d21ee75f713a1 100644
--- a/apps/routerconsole/java/src/net/i2p/router/update/PluginUpdateChecker.java
+++ b/apps/routerconsole/java/src/net/i2p/router/update/PluginUpdateChecker.java
@@ -61,7 +61,7 @@ class PluginUpdateChecker extends UpdateRunner {
             try {
                 _get = new PartialEepGet(_context, proxyHost, proxyPort, _baos, _currentURI.toString(), TrustedUpdate.HEADER_BYTES);
                 _get.addStatusListener(this);
-                _get.fetch();
+                _get.fetch(CONNECT_TIMEOUT);
             } catch (Throwable t) {
                 _log.error("Error checking update for plugin", t);
             }
diff --git a/apps/routerconsole/java/src/net/i2p/router/update/PluginUpdateRunner.java b/apps/routerconsole/java/src/net/i2p/router/update/PluginUpdateRunner.java
index fbac990d4da693b4723fec3635d0e21c8bc73858..d75a8ef43d8795b77ad011eb0c8f33ec211b365e 100644
--- a/apps/routerconsole/java/src/net/i2p/router/update/PluginUpdateRunner.java
+++ b/apps/routerconsole/java/src/net/i2p/router/update/PluginUpdateRunner.java
@@ -105,7 +105,7 @@ class PluginUpdateRunner extends UpdateRunner {
                     else
                         _get = new EepGet(_context, 1, _updateFile, _xpi2pURL, false);
                     _get.addStatusListener(PluginUpdateRunner.this);
-                    _get.fetch();
+                    _get.fetch(CONNECT_TIMEOUT, -1, shouldProxy ? INACTIVITY_TIMEOUT : NOPROXY_INACTIVITY_TIMEOUT);
                 } catch (Throwable t) {
                     _log.error("Error downloading plugin", t);
                 }
diff --git a/apps/routerconsole/java/src/net/i2p/router/update/UpdateRunner.java b/apps/routerconsole/java/src/net/i2p/router/update/UpdateRunner.java
index 52e77ba95b12666ecf72fc735a04d0e7169e3d75..798b886cda97399caf64751e79744c17efd86fcf 100644
--- a/apps/routerconsole/java/src/net/i2p/router/update/UpdateRunner.java
+++ b/apps/routerconsole/java/src/net/i2p/router/update/UpdateRunner.java
@@ -45,6 +45,10 @@ class UpdateRunner extends I2PAppThread implements UpdateTask, EepGet.StatusList
 
     private static final String SIGNED_UPDATE_FILE = "i2pupdate.sud";
 
+    protected static final long CONNECT_TIMEOUT = 55*1000;
+    protected static final long INACTIVITY_TIMEOUT = 5*60*1000;
+    protected static final long NOPROXY_INACTIVITY_TIMEOUT = 60*1000;
+
     public UpdateRunner(RouterContext ctx, List<URI> uris) { 
         super("Update Runner");
         setDaemon(true);
@@ -127,7 +131,7 @@ class UpdateRunner extends I2PAppThread implements UpdateTask, EepGet.StatusList
                     // no retries
                     _get = new PartialEepGet(_context, proxyHost, proxyPort, baos, updateURL, TrustedUpdate.HEADER_BYTES);
                     _get.addStatusListener(UpdateRunner.this);
-                    _get.fetch();
+                    _get.fetch(CONNECT_TIMEOUT);
                 } catch (Throwable t) {
                 }
                 _isPartial = false;
@@ -143,7 +147,7 @@ class UpdateRunner extends I2PAppThread implements UpdateTask, EepGet.StatusList
                 else
                     _get = new EepGet(_context, 1, _updateFile, updateURL, false);
                 _get.addStatusListener(UpdateRunner.this);
-                _get.fetch();
+                _get.fetch(CONNECT_TIMEOUT, -1, shouldProxy ? INACTIVITY_TIMEOUT : NOPROXY_INACTIVITY_TIMEOUT);
             } catch (Throwable t) {
                 _log.error("Error updating", t);
             }