diff --git a/router/java/src/net/i2p/router/client/ClientConnectionRunner.java b/router/java/src/net/i2p/router/client/ClientConnectionRunner.java
index 42eef3480bd5d1cd818bc4615e4fb969222f21bb..1c4fb2fd5e50a2da8488cbae50aba4335a0d58b1 100644
--- a/router/java/src/net/i2p/router/client/ClientConnectionRunner.java
+++ b/router/java/src/net/i2p/router/client/ClientConnectionRunner.java
@@ -361,18 +361,21 @@ public class ClientConnectionRunner {
         // TunnelPool.locked_buildNewLeaseSet() ensures that leases are sorted,
         //  so the comparison will always work.
         int leases = set.getLeaseCount();
-        if (_currentLeaseSet != null && _currentLeaseSet.getLeaseCount() == leases) {
-            for (int i = 0; i < leases; i++) {
-                if (! _currentLeaseSet.getLease(i).getTunnelId().equals(set.getLease(i).getTunnelId()))
-                    break;
-                if (! _currentLeaseSet.getLease(i).getGateway().equals(set.getLease(i).getGateway()))
-                    break;
-                if (i == leases - 1) {
-                    if (_log.shouldLog(Log.INFO))
-                        _log.info("Requested leaseSet hasn't changed");
-                    if (onCreateJob != null)
-                        _context.jobQueue().addJob(onCreateJob);
-                    return; // no change
+        // synch so _currentLeaseSet isn't changed out from under us
+        synchronized (this) {
+            if (_currentLeaseSet != null && _currentLeaseSet.getLeaseCount() == leases) {
+                for (int i = 0; i < leases; i++) {
+                    if (! _currentLeaseSet.getLease(i).getTunnelId().equals(set.getLease(i).getTunnelId()))
+                        break;
+                    if (! _currentLeaseSet.getLease(i).getGateway().equals(set.getLease(i).getGateway()))
+                        break;
+                    if (i == leases - 1) {
+                        if (_log.shouldLog(Log.INFO))
+                            _log.info("Requested leaseSet hasn't changed");
+                        if (onCreateJob != null)
+                            _context.jobQueue().addJob(onCreateJob);
+                        return; // no change
+                    }
                 }
             }
         }