diff --git a/router/java/src/net/i2p/router/transport/TransportManager.java b/router/java/src/net/i2p/router/transport/TransportManager.java index 3029a1ce8c0a5c1e2d8ccb65ce67846182357841..44c6a8970b95d88c600cf9c9eff16e3ff7358fe5 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); } } }