Author: nextgens
Date: 2007-11-10 19:10:10 +0000 (Sat, 10 Nov 2007)
New Revision: 15741
Modified:
trunk/freenet/src/freenet/clients/http/SimpleToadletServer.java
trunk/freenet/src/freenet/clients/http/StartupToadletServer.java
trunk/freenet/src/freenet/io/NetworkInterface.java
trunk/freenet/src/freenet/node/TextModeClientInterfaceServer.java
trunk/freenet/src/freenet/node/fcp/FCPServer.java
Log:
Add a new parameter to NetworkInterface : ignoreUnbindable
Modified: trunk/freenet/src/freenet/clients/http/SimpleToadletServer.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/SimpleToadletServer.java
2007-11-10 13:46:53 UTC (rev 15740)
+++ trunk/freenet/src/freenet/clients/http/SimpleToadletServer.java
2007-11-10 19:10:10 UTC (rev 15741)
@@ -90,7 +90,7 @@
public void set(String bindTo) throws
InvalidConfigValueException {
if(!bindTo.equals(get())) {
try {
- networkInterface.setBindTo(bindTo);
+ networkInterface.setBindTo(bindTo,
false);
SimpleToadletServer.this.bindTo =
bindTo;
} catch (IOException e) {
// This is an advanced option for
reasons of reducing clutter,
@@ -342,7 +342,7 @@
this.advancedModeEnabled =
fproxyConfig.getBoolean("advancedModeEnabled");
toadlets = new LinkedList();
- this.networkInterface = NetworkInterface.create(port,
this.bindTo, fproxyConfig.getString("allowedHosts"), core.getExecutor());
+ this.networkInterface = NetworkInterface.create(port,
this.bindTo, fproxyConfig.getString("allowedHosts"), core.getExecutor(), true);
if(!enabled) {
Logger.normal(core, "Not starting FProxy as it's
disabled");
Modified: trunk/freenet/src/freenet/clients/http/StartupToadletServer.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/StartupToadletServer.java
2007-11-10 13:46:53 UTC (rev 15740)
+++ trunk/freenet/src/freenet/clients/http/StartupToadletServer.java
2007-11-10 19:10:10 UTC (rev 15741)
@@ -146,8 +146,9 @@
boolean start = true;
NetworkInterface ni = null;
try {
- ni = NetworkInterface.create(port, bindTo, allowedHosts, executor);
+ ni = NetworkInterface.create(port, bindTo, allowedHosts, executor,
true);
} catch (IOException e) {
+ e.printStackTrace();
Logger.error(this, "Error starting SimpleToadletServer on "+
bindTo + ':' + port);
System.err.println("Error starting SimpleToadletServer on "+
bindTo + ':' + port);
start = false;
Modified: trunk/freenet/src/freenet/io/NetworkInterface.java
===================================================================
--- trunk/freenet/src/freenet/io/NetworkInterface.java 2007-11-10 13:46:53 UTC
(rev 15740)
+++ trunk/freenet/src/freenet/io/NetworkInterface.java 2007-11-10 19:10:10 UTC
(rev 15741)
@@ -64,10 +64,10 @@
private final Executor executor;
- public static NetworkInterface create(int port, String bindTo, String
allowedHosts, Executor executor) throws IOException {
+ public static NetworkInterface create(int port, String bindTo, String
allowedHosts, Executor executor, boolean ignoreUnbindable) throws IOException {
NetworkInterface iface = new NetworkInterface(port,
allowedHosts, executor);
try {
- iface.setBindTo(bindTo);
+ iface.setBindTo(bindTo, ignoreUnbindable);
} catch (IOException e) {
try {
iface.close();
@@ -101,7 +101,7 @@
* @param bindTo
* A comma-separated list of IP address to bind to
*/
- public void setBindTo(String bindTo) throws IOException {
+ public void setBindTo(String bindTo, boolean ignoreUnbindable) throws
IOException {
StringTokenizer bindToTokens = new StringTokenizer(bindTo, ",");
List bindToTokenList = new ArrayList();
while (bindToTokens.hasMoreTokens()) {
@@ -127,7 +127,14 @@
acceptors.clear();
for (int serverSocketIndex = 0; serverSocketIndex <
bindToTokenList.size(); serverSocketIndex++) {
ServerSocket serverSocket = new ServerSocket();
+ try {
serverSocket.bind(new InetSocketAddress((String)
bindToTokenList.get(serverSocketIndex), port));
+ } catch (SocketException e) {
+ if(ignoreUnbindable)
+ continue;
+ else
+ throw e;
+ }
Acceptor acceptor = new Acceptor(serverSocket);
acceptors.add(acceptor);
}
Modified: trunk/freenet/src/freenet/node/TextModeClientInterfaceServer.java
===================================================================
--- trunk/freenet/src/freenet/node/TextModeClientInterfaceServer.java
2007-11-10 13:46:53 UTC (rev 15740)
+++ trunk/freenet/src/freenet/node/TextModeClientInterfaceServer.java
2007-11-10 19:10:10 UTC (rev 15741)
@@ -47,7 +47,7 @@
this.bindTo=bindTo;
this.allowedHosts = allowedHosts;
this.isEnabled=true;
- networkInterface = NetworkInterface.create(port, bindTo,
allowedHosts, n.executor);
+ networkInterface = NetworkInterface.create(port, bindTo, allowedHosts,
n.executor, true);
}
void start() {
@@ -150,7 +150,7 @@
public void set(String val) throws InvalidConfigValueException {
if(val.equals(get())) return;
try {
-
core.getTextModeClientInterface().networkInterface.setBindTo(val);
+
core.getTextModeClientInterface().networkInterface.setBindTo(val, false);
core.getTextModeClientInterface().bindTo = val;
} catch (IOException e) {
throw new InvalidConfigValueException("could
not change bind to!");
Modified: trunk/freenet/src/freenet/node/fcp/FCPServer.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/FCPServer.java 2007-11-10 13:46:53 UTC
(rev 15740)
+++ trunk/freenet/src/freenet/node/fcp/FCPServer.java 2007-11-10 19:10:10 UTC
(rev 15741)
@@ -117,7 +117,7 @@
NetworkInterface tempNetworkInterface = null;
try {
- tempNetworkInterface = NetworkInterface.create(port,
bindTo, allowedHosts, node.executor);
+ tempNetworkInterface = NetworkInterface.create(port,
bindTo, allowedHosts, node.executor, false);
} catch (BindException be) {
Logger.error(this, "Couldn't bind to FCP Port "+bindTo+
':' +port+". FCP Server not started.");
System.out.println("Couldn't bind to FCP Port "+bindTo+
':' +port+". FCP Server not started.");
@@ -232,7 +232,7 @@
public void set(String val) throws InvalidConfigValueException {
if(!val.equals(get())) {
try {
-
node.getFCPServer().networkInterface.setBindTo(val);
+
node.getFCPServer().networkInterface.setBindTo(val, true);
node.getFCPServer().bindTo = val;
} catch (IOException e) {
// This is an advanced option for
reasons of reducing clutter,