diff --git a/router/java/src/net/i2p/router/networkdb/kademlia/KademliaNetworkDatabaseFacade.java b/router/java/src/net/i2p/router/networkdb/kademlia/KademliaNetworkDatabaseFacade.java
index aafd45e7e098f0a88412c320f0bf59c6ad9f0453..6ff84f68ce09cdfcea58fb58c6ebc62021ff783e 100644
--- a/router/java/src/net/i2p/router/networkdb/kademlia/KademliaNetworkDatabaseFacade.java
+++ b/router/java/src/net/i2p/router/networkdb/kademlia/KademliaNetworkDatabaseFacade.java
@@ -490,8 +490,13 @@ public class KademliaNetworkDatabaseFacade extends NetworkDatabaseFacade {
         }
         if (!_context.clientManager().shouldPublishLeaseSet(h))
             return;
-        if (_context.router().gracefulShutdownInProgress())
-            return;
+        // If we're exiting, don't publish.
+        // If we're restarting, keep publishing to minimize the downtime.
+        if (_context.router().gracefulShutdownInProgress()) {
+            int code = _context.router().scheduledGracefulExitCode();
+            if (code == Router.EXIT_GRACEFUL || code == Router.EXIT_HARD)
+                return;
+        }
         
         RepublishLeaseSetJob j = null;
         synchronized (_publishingLeaseSets) {