From eaa526583db2281b867940f5b200ad379e68f28f Mon Sep 17 00:00:00 2001 From: zzz <zzz@i2pmail.org> Date: Tue, 12 Apr 2022 09:00:40 -0400 Subject: [PATCH] Transport: Fix UPnP deadlock --- .../src/net/i2p/router/transport/TransportManager.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/router/java/src/net/i2p/router/transport/TransportManager.java b/router/java/src/net/i2p/router/transport/TransportManager.java index 3029a1ce8c..44c6a8970b 100644 --- a/router/java/src/net/i2p/router/transport/TransportManager.java +++ b/router/java/src/net/i2p/router/transport/TransportManager.java @@ -977,7 +977,10 @@ public class TransportManager implements TransportEventListener { _upnpUpdateQueued = true; _context.simpleTimer2().addEvent(new UpdatePorts(), 3250); } else { - _upnpManager.update(getPorts()); + // throw onto timer to avoid deadlock + //_upnpManager.update(getPorts()); + _upnpUpdateQueued = true; + _context.simpleTimer2().addEvent(new UpdatePorts(), 0); } } } @@ -991,9 +994,10 @@ public class TransportManager implements TransportEventListener { */ private class UpdatePorts implements SimpleTimer.TimedEvent { public void timeReached() { + Set<Port> ports = getPorts(); synchronized (_upnpManager) { _upnpUpdateQueued = false; - _upnpManager.update(getPorts()); + _upnpManager.update(ports); } } } -- GitLab