[freenet-cvs] r15741 - in trunk/freenet/src/freenet: clients/http io node node/fcp

nextgens at freenetproject.org nextgens at freenetproject.org
Sat Nov 10 19:10:10 UTC 2007


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,




More information about the cvs mailing list