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