From c02711ccad799cb26a4a14b7db5308ee7a17f340 Mon Sep 17 00:00:00 2001
From: zzz <zzz@mail.i2p>
Date: Fri, 23 Jan 2009 02:23:13 +0000
Subject: [PATCH] Fix socks so it uses existing tunnels rather than building a
 new one for every request. Now works with or without 'shared clients'
 enabled.

---
 .../java/src/net/i2p/i2ptunnel/socks/I2PSOCKSTunnel.java | 4 ++--
 .../java/src/net/i2p/i2ptunnel/socks/SOCKSServer.java    | 9 ++++++---
 2 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/socks/I2PSOCKSTunnel.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/socks/I2PSOCKSTunnel.java
index 9b216e13ae..627cd0616f 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/socks/I2PSOCKSTunnel.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/socks/I2PSOCKSTunnel.java
@@ -46,11 +46,11 @@ public class I2PSOCKSTunnel extends I2PTunnelClientBase {
         try {
             SOCKSServer serv = SOCKSServerFactory.createSOCKSServer(s);
             Socket clientSock = serv.getClientSocket();
-            I2PSocket destSock = serv.getDestinationI2PSocket();
+            I2PSocket destSock = serv.getDestinationI2PSocket(this);
             new I2PTunnelRunner(clientSock, destSock, sockLock, null, mySockets);
         } catch (SOCKSException e) {
             _log.error("Error from SOCKS connection: " + e.getMessage());
             closeSocket(s);
         }
     }
-}
\ No newline at end of file
+}
diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/socks/SOCKSServer.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/socks/SOCKSServer.java
index caf4d1ce3f..94602c0c03 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/socks/SOCKSServer.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/socks/SOCKSServer.java
@@ -59,7 +59,7 @@ public abstract class SOCKSServer {
      *
      * @return an I2PSocket connected with the destination
      */
-    public I2PSocket getDestinationI2PSocket() throws SOCKSException {
+    public I2PSocket getDestinationI2PSocket(I2PSOCKSTunnel t) throws SOCKSException {
         setupServer();
 
         if (connHostName == null) {
@@ -79,8 +79,11 @@ public abstract class SOCKSServer {
         try {
             if (connHostName.toLowerCase().endsWith(".i2p")) {
                 _log.debug("connecting to " + connHostName + "...");
-                I2PSocketManager sm = I2PSocketManagerFactory.createManager();
-                destSock = sm.connect(I2PTunnel.destFromName(connHostName), null);
+                // Let's not due a new Dest for every request, huh?
+                //I2PSocketManager sm = I2PSocketManagerFactory.createManager();
+                //destSock = sm.connect(I2PTunnel.destFromName(connHostName), null);
+                // TODO get the streaming lib options in there
+                destSock = t.createI2PSocket(I2PTunnel.destFromName(connHostName));
                 confirmConnection();
                 _log.debug("connection confirmed - exchanging data...");
             } else {
-- 
GitLab