diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelIRCClient.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelIRCClient.java index a329ad704ac15f43aaaaa492d1bd6b95eed7d239..6811ca4e1900325b3e157396723ae993eda6bf4a 100644 --- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelIRCClient.java +++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelIRCClient.java @@ -9,6 +9,7 @@ import java.util.ArrayList; import java.util.List; import java.util.StringTokenizer; +import net.i2p.I2PException; import net.i2p.client.streaming.I2PSocket; import net.i2p.data.Base32; import net.i2p.data.Destination; @@ -112,7 +113,7 @@ public class I2PTunnelIRCClient extends I2PTunnelClientBase { in.start(); Thread out = new I2PAppThread(new IrcOutboundFilter(s,i2ps, expectedPong, _log, dcc), "IRC Client " + __clientId + " out", true); out.start(); - } catch (Exception ex) { + } catch (I2PException ex) { if (_log.shouldLog(Log.ERROR)) _log.error("Error connecting", ex); //l.log("Error connecting: " + ex.getMessage()); @@ -122,6 +123,17 @@ public class I2PTunnelIRCClient extends I2PTunnelClientBase { mySockets.remove(sockLock); } } + } catch (Exception ex) { + // generally NoRouteToHostException + if (_log.shouldLog(Log.WARN)) + _log.warn("Error connecting", ex); + //l.log("Error connecting: " + ex.getMessage()); + closeSocket(s); + if (i2ps != null) { + synchronized (sockLock) { + mySockets.remove(sockLock); + } + } } }