From 1ecf4377c65907aa2227d753ebc49e0dd37815d5 Mon Sep 17 00:00:00 2001 From: zzz Date: Thu, 27 Aug 2009 03:52:14 +0000 Subject: [PATCH] * Client: - Fail if no date handshake after 30s or no leaseset after 5m, rather than hanging forever. --- core/java/src/net/i2p/client/I2PSessionImpl.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/core/java/src/net/i2p/client/I2PSessionImpl.java b/core/java/src/net/i2p/client/I2PSessionImpl.java index 8fc308715..169562b7b 100644 --- a/core/java/src/net/i2p/client/I2PSessionImpl.java +++ b/core/java/src/net/i2p/client/I2PSessionImpl.java @@ -283,7 +283,10 @@ abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2CPMessa if (_log.shouldLog(Log.DEBUG)) _log.debug(getPrefix() + "Before getDate"); sendMessage(new GetDateMessage()); if (_log.shouldLog(Log.DEBUG)) _log.debug(getPrefix() + "After getDate / begin waiting for a response"); + int waitcount = 0; while (!_dateReceived) { + if (waitcount++ > 30) + throw new IOException("no date handshake"); try { synchronized (_dateReceivedLock) { _dateReceivedLock.wait(1000); @@ -298,7 +301,10 @@ abstract class I2PSessionImpl implements I2PSession, I2CPMessageReader.I2CPMessa if (_log.shouldLog(Log.DEBUG)) _log.debug(getPrefix() + "After producer.connect()"); // wait until we have created a lease set + waitcount = 0; while (_leaseSet == null) { + if (waitcount++ > 5*60) + throw new IOException("no leaseset"); synchronized (_leaseSetWait) { try { _leaseSetWait.wait(1000);