From 3733b78ccf727b7dd4090b5b884d37c68285bfc2 Mon Sep 17 00:00:00 2001
From: zzz <zzz@mail.i2p>
Date: Fri, 27 Feb 2009 21:24:40 +0000
Subject: [PATCH]     * I2PTunnelUDPClientBase: Fix client close, client target
 host     * I2CP Mux: Fix UDP sends

---
 .../java/src/net/i2p/i2ptunnel/TunnelController.java |  9 ++++++++-
 .../net/i2p/i2ptunnel/streamr/StreamrConsumer.java   |  1 +
 .../net/i2p/i2ptunnel/streamr/StreamrProducer.java   |  1 +
 .../src/net/i2p/i2ptunnel/udp/I2PSinkAnywhere.java   |  3 ++-
 .../i2ptunnel/udpTunnel/I2PTunnelUDPClientBase.java  | 12 ++----------
 .../i2ptunnel/udpTunnel/I2PTunnelUDPServerBase.java  |  3 +--
 apps/i2ptunnel/jsp/editServer.jsp                    |  6 ++++--
 .../java/src/net/i2p/client/I2PSessionMuxedImpl.java |  5 +++--
 8 files changed, 22 insertions(+), 18 deletions(-)

diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/TunnelController.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/TunnelController.java
index 6c5fa4eb9..9cb3762ac 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/TunnelController.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/TunnelController.java
@@ -213,8 +213,15 @@ public class TunnelController implements Logging {
         _tunnel.runStreamrClient(new String[] { targetHost, targetPort, dest }, this);
     }
     
-    /** Streamr server is a UDP client, use the targetPort field for listenPort  */
+    /**
+     *  Streamr server is a UDP client, use the targetPort field for listenPort
+     *  and the targetHost field for the listenOnInterface
+     */
     private void startStreamrServer() {
+        String listenOn = getTargetHost();
+        if ( (listenOn != null) && (listenOn.length() > 0) ) {
+            _tunnel.runListenOn(new String[] { listenOn }, this);
+        }
         String listenPort = getTargetPort();
         String privKeyFile = getPrivKeyFile(); 
         _tunnel.runStreamrServer(new String[] { listenPort, privKeyFile }, this);
diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/streamr/StreamrConsumer.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/streamr/StreamrConsumer.java
index 02b443443..87ea0eefe 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/streamr/StreamrConsumer.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/streamr/StreamrConsumer.java
@@ -42,6 +42,7 @@ public class StreamrConsumer extends I2PTunnelUDPClientBase {
         super.startRunning();
         // send subscribe-message
         this.pinger.start();
+        l.log("Streamr client ready");
     }
     
     public boolean close(boolean forced) {
diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/streamr/StreamrProducer.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/streamr/StreamrProducer.java
index c3963b6a6..b801cb94f 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/streamr/StreamrProducer.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/streamr/StreamrProducer.java
@@ -48,6 +48,7 @@ public class StreamrProducer extends I2PTunnelUDPServerBase {
     public final void startRunning() {
         super.startRunning();
         this.server.start();
+        l.log("Streamr server ready");
     }
     
     public boolean close(boolean forced) {
diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/udp/I2PSinkAnywhere.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/udp/I2PSinkAnywhere.java
index 09385d46f..58c5bfda4 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/udp/I2PSinkAnywhere.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/udp/I2PSinkAnywhere.java
@@ -27,7 +27,8 @@ public class I2PSinkAnywhere implements Sink {
         this.raw = raw;
         
         // create maker
-        this.maker = new I2PDatagramMaker(this.sess);
+        if (!raw)
+            this.maker = new I2PDatagramMaker(this.sess);
     }
     
     /** @param to - where it's going */
diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/udpTunnel/I2PTunnelUDPClientBase.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/udpTunnel/I2PTunnelUDPClientBase.java
index 0123be6ea..c92da6ae8 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/udpTunnel/I2PTunnelUDPClientBase.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/udpTunnel/I2PTunnelUDPClientBase.java
@@ -141,9 +141,6 @@ public abstract class I2PTunnelUDPClientBase extends I2PTunnelTask implements So
         } else {
             _i2pSink = new I2PSinkAnywhere(_session, false);
         }   
-
-        //configurePool(tunnel);
-        
     }
     
     /**
@@ -165,13 +162,7 @@ public abstract class I2PTunnelUDPClientBase extends I2PTunnelTask implements So
             startRunning = true;
             startLock.notify();
         }
-
-        if (open && listenerReady) {
-            notifyEvent("openBaseClientResult", "ok");
-        } else {
-            l.log("Error listening - please see the logs!");
-            notifyEvent("openBaseClientResult", "error");
-        }
+        open = true;
     }
 
     /**
@@ -187,6 +178,7 @@ public abstract class I2PTunnelUDPClientBase extends I2PTunnelTask implements So
             } catch (I2PSessionException ise) {}
         }
         l.log("Closing client " + toString());
+        open = false;
         return true;
     }
 
diff --git a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/udpTunnel/I2PTunnelUDPServerBase.java b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/udpTunnel/I2PTunnelUDPServerBase.java
index fe129fb13..8dcd66a36 100644
--- a/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/udpTunnel/I2PTunnelUDPServerBase.java
+++ b/apps/i2ptunnel/java/src/net/i2p/i2ptunnel/udpTunnel/I2PTunnelUDPServerBase.java
@@ -41,7 +41,7 @@ public class I2PTunnelUDPServerBase extends I2PTunnelTask implements Source, Sin
 
     private static volatile long __serverId = 0;
 
-    private Logging l;
+    protected Logging l;
 
     private static final long DEFAULT_READ_TIMEOUT = -1; // 3*60*1000;
     /** default timeout to 3 minutes - override if desired */
@@ -137,7 +137,6 @@ public class I2PTunnelUDPServerBase extends I2PTunnelTask implements Source, Sin
             start();
         //}
 
-        l.log("Ready!");
         notifyEvent("openServerResult", "ok");
         open = true;
     }
diff --git a/apps/i2ptunnel/jsp/editServer.jsp b/apps/i2ptunnel/jsp/editServer.jsp
index 0e9f9c0ca..70a9df9f7 100644
--- a/apps/i2ptunnel/jsp/editServer.jsp
+++ b/apps/i2ptunnel/jsp/editServer.jsp
@@ -88,14 +88,16 @@
                 <label>Target:</label>
          <% } %>
             </div>
-         <% if (!"streamrserver".equals(tunnelType)) { %>
             <div id="hostField" class="rowItem">
                 <label for="targetHost" accesskey="H">
+         <% if ("streamrserver".equals(tunnelType)) { %>
+                    <span class="accessKey">R</span>eachable by:
+         <% } else { %>
                     <span class="accessKey">H</span>ost:
+         <% } %>
                 </label>
                 <input type="text" size="20" id="targetHost" name="targetHost" title="Target Hostname or IP" value="<%=editBean.getTargetHost(curTunnel)%>" class="freetext" />                
             </div>
-         <% } // !streamrserver %>
             <div id="portField" class="rowItem">
                 <label for="targetPort" accesskey="P">
                     <span class="accessKey">P</span>ort:
diff --git a/core/java/src/net/i2p/client/I2PSessionMuxedImpl.java b/core/java/src/net/i2p/client/I2PSessionMuxedImpl.java
index 1cd7b072a..b08d01c26 100644
--- a/core/java/src/net/i2p/client/I2PSessionMuxedImpl.java
+++ b/core/java/src/net/i2p/client/I2PSessionMuxedImpl.java
@@ -118,12 +118,13 @@ class I2PSessionMuxedImpl extends I2PSessionImpl2 implements I2PSession {
 
     @Override
     public boolean sendMessage(Destination dest, byte[] payload) throws I2PSessionException {
-        return sendMessage(dest, payload, 0, 0, null, null, 0, PROTO_UNSPECIFIED, PORT_UNSPECIFIED, PORT_UNSPECIFIED);
+        return sendMessage(dest, payload, 0, payload.length, null, null,
+                           0, PROTO_UNSPECIFIED, PORT_UNSPECIFIED, PORT_UNSPECIFIED);
     }
 
     @Override
     public boolean sendMessage(Destination dest, byte[] payload, int proto, int fromport, int toport) throws I2PSessionException {
-        return sendMessage(dest, payload, 0, 0, null, null, 0, proto, fromport, toport);
+        return sendMessage(dest, payload, 0, payload.length, null, null, 0, proto, fromport, toport);
     }
 
     @Override
-- 
GitLab