From f4956b06b6e11c49acf03526d5e80d747f7048af Mon Sep 17 00:00:00 2001 From: jrandom <jrandom> Date: Thu, 30 Sep 2004 06:51:28 +0000 Subject: [PATCH] be more careful on startup --- .../router/transport/CommSystemFacadeImpl.java | 3 ++- .../i2p/router/transport/tcp/TCPListener.java | 12 +++++++----- .../i2p/router/transport/tcp/TCPTransport.java | 18 +++++++++++++++--- 3 files changed, 24 insertions(+), 9 deletions(-) diff --git a/router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java b/router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java index f06e2cf377..b328689c61 100644 --- a/router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java +++ b/router/java/src/net/i2p/router/transport/CommSystemFacadeImpl.java @@ -76,7 +76,8 @@ public class CommSystemFacadeImpl extends CommSystemFacade { if (addr != null) addresses.add(addr); - addresses.addAll(_manager.getAddresses()); + if (_manager != null) + addresses.addAll(_manager.getAddresses()); if (_log.shouldLog(Log.INFO)) _log.info("Creating addresses: " + addresses); diff --git a/router/java/src/net/i2p/router/transport/tcp/TCPListener.java b/router/java/src/net/i2p/router/transport/tcp/TCPListener.java index 10b0f81908..237d6217b6 100644 --- a/router/java/src/net/i2p/router/transport/tcp/TCPListener.java +++ b/router/java/src/net/i2p/router/transport/tcp/TCPListener.java @@ -63,10 +63,11 @@ class TCPListener { _handlers = new ArrayList(CONCURRENT_HANDLERS); } - /** Make sure we are listening on the transport's getMyAddress() */ + /** Make sure we are listening per the transport's config */ public void startListening() { - TCPAddress addr = _transport.getMyAddress(); - if ( (addr != null) && (addr.getHost() != null) && (addr.getPort() > 0) ) { + TCPAddress addr = new TCPAddress(_transport.getMyHost(), _transport.getPort()); + + if (addr.getPort() > 0) { if (_listener != null) { if (_log.shouldLog(Log.WARN)) _log.warn("Not starting another listener on " + addr @@ -141,14 +142,15 @@ class TCPListener { int curDelay = 0; while (_isRunning) { try { - if (_transport.shouldListenToAllInterfaces()) { + if ( (_transport.shouldListenToAllInterfaces()) || (_myAddress.getHost() == null) ) { _socket = new ServerSocket(_myAddress.getPort()); } else { InetAddress listenAddr = getInetAddress(_myAddress.getHost()); _socket = new ServerSocket(_myAddress.getPort(), 5, listenAddr); } + String host = (null == _myAddress.getHost() ? "0.0.0.0" : _myAddress.getHost()); if (_log.shouldLog(Log.INFO)) - _log.info("Begin looping for host " + _myAddress.getHost() + ":" + _myAddress.getPort()); + _log.info("Begin looping for host " + host + ":" + _myAddress.getPort()); curDelay = 0; loop(); } catch (IOException ioe) { diff --git a/router/java/src/net/i2p/router/transport/tcp/TCPTransport.java b/router/java/src/net/i2p/router/transport/tcp/TCPTransport.java index da2339a3dd..51d158d87f 100644 --- a/router/java/src/net/i2p/router/transport/tcp/TCPTransport.java +++ b/router/java/src/net/i2p/router/transport/tcp/TCPTransport.java @@ -84,6 +84,8 @@ public class TCPTransport extends TransportImpl { /** Ordered list of supported I2NP protocols */ public static final int[] SUPPORTED_PROTOCOLS = new int[] { 1 }; + /** blah, people shouldnt use defaults... */ + public static final int DEFAULT_LISTEN_PORT = 8887; /** Creates a new instance of TCPTransport */ public TCPTransport(RouterContext context) { @@ -300,8 +302,8 @@ public class TCPTransport extends TransportImpl { public RouterAddress startListening() { configureLocalAddress(); + _listener.startListening(); if (_myAddress != null) { - _listener.startListening(); return _myAddress.toRouterAddress(); } else { return null; @@ -341,7 +343,12 @@ public class TCPTransport extends TransportImpl { } } - TCPAddress getMyAddress() { return _myAddress; } + String getMyHost() { + if (_myAddress != null) + return _myAddress.getHost(); + else + return null; + } public String getStyle() { return STYLE; } ConnectionTagManager getTagManager() { return _tagManager; } @@ -352,6 +359,11 @@ public class TCPTransport extends TransportImpl { private void configureLocalAddress() { String addr = _context.getProperty(LISTEN_ADDRESS); int port = getPort(); + if ( (addr == null) || (addr.trim().length() <= 0) ) { + if (_log.shouldLog(Log.ERROR)) + _log.error("External address is not specified - autodetecting IP (be sure to forward port " + port + ")"); + return; + } if (port != -1) { TCPAddress address = new TCPAddress(addr, port); boolean ok = allowAddress(address); @@ -435,7 +447,7 @@ public class TCPTransport extends TransportImpl { if ( (_myAddress != null) && (_myAddress.getPort() > 0) ) return _myAddress.getPort(); - String port = _context.getProperty(LISTEN_PORT); + String port = _context.getProperty(LISTEN_PORT, DEFAULT_LISTEN_PORT+""); if (port != null) { try { int portNum = Integer.parseInt(port); -- GitLab