From 2de3160c901033b9a2c65d4e2a9b8172761c67d8 Mon Sep 17 00:00:00 2001
From: akwizgran <michael@briarproject.org>
Date: Sun, 7 Apr 2013 20:13:37 +0100
Subject: [PATCH] Strip interface name from host address if present.

---
 .../src/net/sf/briar/plugins/tcp/LanTcpPlugin.java   |  4 ++--
 .../src/net/sf/briar/plugins/tcp/PortMapperImpl.java | 11 ++++++++++-
 .../src/net/sf/briar/plugins/tcp/TcpPlugin.java      | 12 +++++++++---
 .../src/net/sf/briar/plugins/tcp/WanTcpPlugin.java   |  2 +-
 4 files changed, 22 insertions(+), 7 deletions(-)

diff --git a/briar-core/src/net/sf/briar/plugins/tcp/LanTcpPlugin.java b/briar-core/src/net/sf/briar/plugins/tcp/LanTcpPlugin.java
index 7662479d47..c8c396eb50 100644
--- a/briar-core/src/net/sf/briar/plugins/tcp/LanTcpPlugin.java
+++ b/briar-core/src/net/sf/briar/plugins/tcp/LanTcpPlugin.java
@@ -184,7 +184,7 @@ class LanTcpPlugin extends TcpPlugin {
 				boolean site = addr.isSiteLocalAddress();
 				if(link || site) {
 					if(LOG.isLoggable(INFO))
-						LOG.info("Preferring " + addr.getHostAddress());
+						LOG.info("Preferring " + getHostAddress(addr));
 					return addr;
 				}
 			}
@@ -194,7 +194,7 @@ class LanTcpPlugin extends TcpPlugin {
 			for(InetAddress addr : Collections.list(iface.getInetAddresses())) {
 				if(addr.isLoopbackAddress()) continue;
 				if(LOG.isLoggable(INFO))
-					LOG.info("Accepting " + addr.getHostAddress());
+					LOG.info("Accepting " + getHostAddress(addr));
 				return addr;
 			}
 		}
diff --git a/briar-core/src/net/sf/briar/plugins/tcp/PortMapperImpl.java b/briar-core/src/net/sf/briar/plugins/tcp/PortMapperImpl.java
index c5a24dc2e9..2792e591d5 100644
--- a/briar-core/src/net/sf/briar/plugins/tcp/PortMapperImpl.java
+++ b/briar-core/src/net/sf/briar/plugins/tcp/PortMapperImpl.java
@@ -35,11 +35,13 @@ class PortMapperImpl implements PortMapper {
 		if(gateway == null) return null;
 		InetAddress internal = gateway.getLocalAddress();
 		if(internal == null) return null;
+		if(LOG.isLoggable(INFO))
+			LOG.info("Internal address " + getHostAddress(internal));
 		boolean succeeded = false;
 		InetAddress external = null;
 		try {
 			succeeded = gateway.addPortMapping(port, port,
-					internal.getHostAddress(), "TCP", "TCP");
+					getHostAddress(internal), "TCP", "TCP");
 			if(succeeded) {
 				shutdownManager.addShutdownHook(new Runnable() {
 					public void run() {
@@ -60,6 +62,13 @@ class PortMapperImpl implements PortMapper {
 		return new MappingResult(internal, external, port, succeeded);
 	}
 
+	private String getHostAddress(InetAddress a) {
+		String addr = a.getHostAddress();
+		int percent = addr.indexOf('%');
+		if(percent == -1) return addr;
+		return addr.substring(0, percent);
+	}
+
 	private void start() {
 		GatewayDiscover d = new GatewayDiscover();
 		try {
diff --git a/briar-core/src/net/sf/briar/plugins/tcp/TcpPlugin.java b/briar-core/src/net/sf/briar/plugins/tcp/TcpPlugin.java
index 77e50e18f8..0c6c3b7890 100644
--- a/briar-core/src/net/sf/briar/plugins/tcp/TcpPlugin.java
+++ b/briar-core/src/net/sf/briar/plugins/tcp/TcpPlugin.java
@@ -93,7 +93,7 @@ abstract class TcpPlugin implements DuplexPlugin {
 		}
 		socket = ss;
 		if(LOG.isLoggable(INFO)) {
-			String addr = ss.getInetAddress().getHostAddress();
+			String addr = getHostAddress(ss.getInetAddress());
 			int port = ss.getLocalPort();
 			LOG.info("Listening on " + addr + " " + port);
 		}
@@ -109,10 +109,16 @@ abstract class TcpPlugin implements DuplexPlugin {
 		}
 	}
 
+	protected String getHostAddress(InetAddress a) {
+		String addr = a.getHostAddress();
+		int percent = addr.indexOf('%');
+		if(percent == -1) return addr;
+		return addr.substring(0, percent);
+	}
+
 	protected void setLocalSocketAddress(InetSocketAddress a) {
-		InetAddress addr = a.getAddress();
 		TransportProperties p = new TransportProperties();
-		p.put("address", addr.getHostAddress());
+		p.put("address", getHostAddress(a.getAddress()));
 		p.put("port", String.valueOf(a.getPort()));
 		callback.mergeLocalProperties(p);
 	}
diff --git a/briar-core/src/net/sf/briar/plugins/tcp/WanTcpPlugin.java b/briar-core/src/net/sf/briar/plugins/tcp/WanTcpPlugin.java
index e5396a4f1b..8f4bbb7903 100644
--- a/briar-core/src/net/sf/briar/plugins/tcp/WanTcpPlugin.java
+++ b/briar-core/src/net/sf/briar/plugins/tcp/WanTcpPlugin.java
@@ -110,7 +110,7 @@ class WanTcpPlugin extends TcpPlugin {
 				a = mappingResult.getExternal();
 		}
 		TransportProperties p = new TransportProperties();
-		p.put("address", a.getAddress().getHostAddress());
+		p.put("address", getHostAddress(a.getAddress()));
 		p.put("port", String.valueOf(a.getPort()));
 		callback.mergeLocalProperties(p);
 	}
-- 
GitLab