From cddc1b362e6d25af0249b0a4acfb19fac8185e94 Mon Sep 17 00:00:00 2001 From: zzz Date: Sat, 12 Dec 2015 13:21:29 +0000 Subject: [PATCH] Another deadlock fix: remove sync in Router.isHidden() --- history.txt | 5 +++++ router/java/src/net/i2p/router/Router.java | 17 ++++++++++------- .../java/src/net/i2p/router/RouterVersion.java | 2 +- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/history.txt b/history.txt index b008a33a17..d001a85427 100644 --- a/history.txt +++ b/history.txt @@ -1,3 +1,8 @@ +2015-12-12 zzz + * Router: + - Add family public key to router info (ticket #1510) + - More deadlock prevention (ticket #1722) + 2015-12-11 zzz * Logs: Windows line ending fixes * Router: diff --git a/router/java/src/net/i2p/router/Router.java b/router/java/src/net/i2p/router/Router.java index e52a079cc6..410890547a 100644 --- a/router/java/src/net/i2p/router/Router.java +++ b/router/java/src/net/i2p/router/Router.java @@ -852,6 +852,7 @@ public class Router implements RouterClock.ClockShiftListener { Properties stats = _context.statPublisher().publishStatistics(); ri.setOptions(stats); + // deadlock thru createAddresses() thru SSU REA... move outside lock? ri.setAddresses(_context.commSystem().createAddresses()); SigningPrivateKey key = _context.keyManager().getSigningPrivateKey(); @@ -1002,16 +1003,18 @@ public class Router implements RouterClock.ClockShiftListener { } /* - * - * Warning - risk of deadlock - do not call while holding locks + * This checks the config only. We don't check the current RI + * due to deadlocks. * */ public boolean isHidden() { - RouterInfo ri; - synchronized (_routerInfoLock) { - ri = _routerInfo; - } - if ( (ri != null) && (ri.isHidden()) ) + //RouterInfo ri; + //synchronized (_routerInfoLock) { + // ri = _routerInfo; + //} + //if ( (ri != null) && (ri.isHidden()) ) + // return true; + if (_context.getBooleanProperty(PROP_HIDDEN)) return true; String h = _context.getProperty(PROP_HIDDEN_HIDDEN); if (h != null) diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java index e36cd3b143..7f4edb9752 100644 --- a/router/java/src/net/i2p/router/RouterVersion.java +++ b/router/java/src/net/i2p/router/RouterVersion.java @@ -18,7 +18,7 @@ public class RouterVersion { /** deprecated */ public final static String ID = "Monotone"; public final static String VERSION = CoreVersion.VERSION; - public final static long BUILD = 12; + public final static long BUILD = 13; /** for example "-test" */ public final static String EXTRA = "";