From 399575aba546327520cbf605b4fc48d81043669c Mon Sep 17 00:00:00 2001
From: zzz <zzz@i2pmail.org>
Date: Sun, 15 Jan 2023 12:38:00 -0500
Subject: [PATCH] i2ptunnel: Return error message from IRC client on failure to
 build tunnels

previously just closed the socket
---
 .../src/net/i2p/i2ptunnel/I2PTunnelIRCClient.java   | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelIRCClient.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelIRCClient.java
index d33980e643..1b3442ee1b 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelIRCClient.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/I2PTunnelIRCClient.java
@@ -137,7 +137,18 @@ public class I2PTunnelIRCClient extends I2PTunnelClientBase {
             if (clientDest == null)
                 throw new UnknownHostException("Could not resolve " + addr.getHostName());
             int port = addr.getPort();
-            i2ps = createI2PSocket(clientDest, port);
+            try {
+                i2ps = createI2PSocket(clientDest, port);
+            } catch (RuntimeException re) {
+                // tunnel build failure
+                _log.error("Error connecting", re);
+                try {
+                    String name = addr != null ? addr.getHostName() : "undefined";
+                    String msg = ":" + name + " 499 you :" + re.getMessage() + "\r\n";
+                    s.getOutputStream().write(DataHelper.getUTF8(msg));
+                } catch (IOException ioe) {}
+                throw re;
+            }
             i2ps.setReadTimeout(readTimeout);
             StringBuffer expectedPong = new StringBuffer();
             DCCHelper dcc = _dccEnabled ? new DCC(s.getLocalAddress().getAddress()) : null;
-- 
GitLab