From 3b3ab6fd1af75f1e8e5c0da8c59a6a5146ae141f Mon Sep 17 00:00:00 2001 From: akwizgran <michael@briarproject.org> Date: Sat, 15 Dec 2012 16:02:35 +0000 Subject: [PATCH] Empty transport configs/properties should be treated the same as nulls. --- .../plugins/bluetooth/BluetoothPlugin.java | 25 +++++++++--------- .../plugins/droidtooth/DroidtoothPlugin.java | 23 ++++++++-------- .../sf/briar/plugins/modem/ModemPlugin.java | 10 ++++--- .../plugins/modem/ModemPluginFactory.java | 3 +-- .../sf/briar/plugins/tcp/LanTcpPlugin.java | 3 ++- .../net/sf/briar/plugins/tcp/TcpPlugin.java | 26 ++++++++++--------- .../sf/briar/plugins/tcp/WanTcpPlugin.java | 3 ++- .../net/sf/briar/plugins/tor/TorPlugin.java | 9 ++++--- .../briar/plugins/tor/TorPluginFactory.java | 3 +-- .../src/net/sf/briar/util/StringUtils.java | 4 +++ .../sf/briar/plugins/tor/TorPluginTest.java | 2 +- 11 files changed, 62 insertions(+), 49 deletions(-) diff --git a/briar-core/src/net/sf/briar/plugins/bluetooth/BluetoothPlugin.java b/briar-core/src/net/sf/briar/plugins/bluetooth/BluetoothPlugin.java index 194f6c6eec..a8a4b4e105 100644 --- a/briar-core/src/net/sf/briar/plugins/bluetooth/BluetoothPlugin.java +++ b/briar-core/src/net/sf/briar/plugins/bluetooth/BluetoothPlugin.java @@ -178,18 +178,18 @@ class BluetoothPlugin implements DuplexPlugin { final ContactId c = e.getKey(); if(connected.contains(c)) continue; final String address = e.getValue().get("address"); + if(StringUtils.isNullOrEmpty(address)) continue; final String uuid = e.getValue().get("uuid"); - if(address != null && uuid != null) { - pluginExecutor.execute(new Runnable() { - public void run() { - if(!running) return; - String url = makeUrl(address, uuid); - DuplexTransportConnection conn = connect(url); - if(conn != null) - callback.outgoingConnectionCreated(c, conn); - } - }); - } + if(StringUtils.isNullOrEmpty(uuid)) continue; + pluginExecutor.execute(new Runnable() { + public void run() { + if(!running) return; + String url = makeUrl(address, uuid); + DuplexTransportConnection conn = connect(url); + if(conn != null) + callback.outgoingConnectionCreated(c, conn); + } + }); } } @@ -208,8 +208,9 @@ class BluetoothPlugin implements DuplexPlugin { TransportProperties p = callback.getRemoteProperties().get(c); if(p == null) return null; String address = p.get("address"); + if(StringUtils.isNullOrEmpty(address)) return null; String uuid = p.get("uuid"); - if(address == null || uuid == null) return null; + if(StringUtils.isNullOrEmpty(uuid)) return null; String url = makeUrl(address, uuid); return connect(url); } diff --git a/briar-core/src/net/sf/briar/plugins/droidtooth/DroidtoothPlugin.java b/briar-core/src/net/sf/briar/plugins/droidtooth/DroidtoothPlugin.java index cac515891d..95e9fa0219 100644 --- a/briar-core/src/net/sf/briar/plugins/droidtooth/DroidtoothPlugin.java +++ b/briar-core/src/net/sf/briar/plugins/droidtooth/DroidtoothPlugin.java @@ -210,17 +210,17 @@ class DroidtoothPlugin implements DuplexPlugin { final ContactId c = e.getKey(); if(connected.contains(c)) continue; final String address = e.getValue().get("address"); + if(StringUtils.isNullOrEmpty(address)) continue; final String uuid = e.getValue().get("uuid"); - if(address != null && uuid != null) { - pluginExecutor.execute(new Runnable() { - public void run() { - if(!running) return; - DuplexTransportConnection conn = connect(address, uuid); - if(conn != null) - callback.outgoingConnectionCreated(c, conn); - } - }); - } + if(StringUtils.isNullOrEmpty(uuid)) continue; + pluginExecutor.execute(new Runnable() { + public void run() { + if(!running) return; + DuplexTransportConnection conn = connect(address, uuid); + if(conn != null) + callback.outgoingConnectionCreated(c, conn); + } + }); } } @@ -256,8 +256,9 @@ class DroidtoothPlugin implements DuplexPlugin { TransportProperties p = callback.getRemoteProperties().get(c); if(p == null) return null; String address = p.get("address"); + if(StringUtils.isNullOrEmpty(address)) return null; String uuid = p.get("uuid"); - if(address == null || uuid == null) return null; + if(StringUtils.isNullOrEmpty(uuid)) return null; return connect(address, uuid); } diff --git a/briar-core/src/net/sf/briar/plugins/modem/ModemPlugin.java b/briar-core/src/net/sf/briar/plugins/modem/ModemPlugin.java index e77444d027..975b3d5977 100644 --- a/briar-core/src/net/sf/briar/plugins/modem/ModemPlugin.java +++ b/briar-core/src/net/sf/briar/plugins/modem/ModemPlugin.java @@ -19,6 +19,7 @@ import java.util.logging.Logger; import jssc.SerialPortList; import net.sf.briar.api.ContactId; +import net.sf.briar.api.TransportConfig; import net.sf.briar.api.TransportProperties; import net.sf.briar.api.crypto.PseudoRandom; import net.sf.briar.api.plugins.PluginExecutor; @@ -145,7 +146,7 @@ class ModemPlugin implements DuplexPlugin, Modem.Callback { while(it.hasNext() && running) { ContactId c = it.next(); String number = remote.get(c).get("number"); - if(number == null) continue; + if(StringUtils.isNullOrEmpty(number)) continue; try { if(!modem.dial(number)) continue; } catch(IOException e) { @@ -170,10 +171,13 @@ class ModemPlugin implements DuplexPlugin, Modem.Callback { public DuplexTransportConnection createConnection(ContactId c) { if(!running) return null; - final Map<ContactId, TransportProperties> remote = + TransportConfig config = callback.getConfig(); + String fromIso = config.get("iso3166"); + if(StringUtils.isNullOrEmpty(fromIso)) return null; + Map<ContactId, TransportProperties> remote = callback.getRemoteProperties(); String number = remote.get(c).get("number"); - if(number == null) return null; + if(StringUtils.isNullOrEmpty(number)) return null; try { if(!modem.dial(number)) return null; } catch(IOException e) { diff --git a/briar-core/src/net/sf/briar/plugins/modem/ModemPluginFactory.java b/briar-core/src/net/sf/briar/plugins/modem/ModemPluginFactory.java index 272a76a297..d01ec6ab8b 100644 --- a/briar-core/src/net/sf/briar/plugins/modem/ModemPluginFactory.java +++ b/briar-core/src/net/sf/briar/plugins/modem/ModemPluginFactory.java @@ -8,8 +8,7 @@ import net.sf.briar.api.plugins.duplex.DuplexPluginCallback; import net.sf.briar.api.plugins.duplex.DuplexPluginFactory; import net.sf.briar.api.protocol.TransportId; import net.sf.briar.api.reliability.ReliabilityLayerFactory; - -import org.h2.util.StringUtils; +import net.sf.briar.util.StringUtils; public class ModemPluginFactory implements DuplexPluginFactory { 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 0d9350006a..dc515219c7 100644 --- a/briar-core/src/net/sf/briar/plugins/tcp/LanTcpPlugin.java +++ b/briar-core/src/net/sf/briar/plugins/tcp/LanTcpPlugin.java @@ -67,7 +67,8 @@ class LanTcpPlugin extends TcpPlugin { String addrString = p.get("address"); String portString = p.get("port"); InetAddress addr = null; - if(addrString != null && portString != null) { + if(!StringUtils.isNullOrEmpty(addrString) && + !StringUtils.isNullOrEmpty(portString)) { try { addr = InetAddress.getByName(addrString); int port = Integer.valueOf(portString); 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 d9d4da9ab4..61432c4183 100644 --- a/briar-core/src/net/sf/briar/plugins/tcp/TcpPlugin.java +++ b/briar-core/src/net/sf/briar/plugins/tcp/TcpPlugin.java @@ -22,6 +22,7 @@ import net.sf.briar.api.plugins.PluginExecutor; import net.sf.briar.api.plugins.duplex.DuplexPlugin; import net.sf.briar.api.plugins.duplex.DuplexPluginCallback; import net.sf.briar.api.plugins.duplex.DuplexTransportConnection; +import net.sf.briar.util.StringUtils; abstract class TcpPlugin implements DuplexPlugin { @@ -165,8 +166,8 @@ abstract class TcpPlugin implements DuplexPlugin { public DuplexTransportConnection createConnection(ContactId c) { if(!running) return null; SocketAddress addr = getRemoteSocketAddress(c); + if(addr == null) return null; Socket s = new Socket(); - if(addr == null || s == null) return null; try { s.setSoTimeout(0); s.connect(addr); @@ -181,18 +182,19 @@ abstract class TcpPlugin implements DuplexPlugin { TransportProperties p = callback.getRemoteProperties().get(c); if(p == null) return null; String addrString = p.get("address"); + if(StringUtils.isNullOrEmpty(addrString)) return null; String portString = p.get("port"); - if(addrString != null && portString != null) { - try { - InetAddress addr = InetAddress.getByName(addrString); - int port = Integer.valueOf(portString); - return new InetSocketAddress(addr, port); - } catch(NumberFormatException e) { - if(LOG.isLoggable(WARNING)) LOG.log(WARNING, e.toString(), e); - } catch(UnknownHostException e) { - if(LOG.isLoggable(WARNING)) LOG.log(WARNING, e.toString(), e); - } + if(StringUtils.isNullOrEmpty(portString)) return null; + try { + InetAddress addr = InetAddress.getByName(addrString); + int port = Integer.valueOf(portString); + return new InetSocketAddress(addr, port); + } catch(NumberFormatException e) { + if(LOG.isLoggable(WARNING)) LOG.log(WARNING, e.toString(), e); + return null; + } catch(UnknownHostException e) { + if(LOG.isLoggable(WARNING)) LOG.log(WARNING, e.toString(), e); + return null; } - return null; } } 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 a2c115ed56..264c3906e5 100644 --- a/briar-core/src/net/sf/briar/plugins/tcp/WanTcpPlugin.java +++ b/briar-core/src/net/sf/briar/plugins/tcp/WanTcpPlugin.java @@ -61,7 +61,8 @@ class WanTcpPlugin extends TcpPlugin { String portString = p.get("port"); InetAddress addr = null; int port = 0; - if(addrString != null && portString != null) { + if(!StringUtils.isNullOrEmpty(addrString) && + !StringUtils.isNullOrEmpty(portString)) { try { addr = InetAddress.getByName(addrString); port = Integer.valueOf(portString); diff --git a/briar-core/src/net/sf/briar/plugins/tor/TorPlugin.java b/briar-core/src/net/sf/briar/plugins/tor/TorPlugin.java index a8368450e6..71d60b47bf 100644 --- a/briar-core/src/net/sf/briar/plugins/tor/TorPlugin.java +++ b/briar-core/src/net/sf/briar/plugins/tor/TorPlugin.java @@ -95,9 +95,10 @@ class TorPlugin implements DuplexPlugin { connected = true; notifyAll(); } - // If we're configure not to create a hidden service, return + // If we're configured not to create a hidden service, return TransportConfig c = callback.getConfig(); - if(c.containsKey("noHiddenService")) { + String noHiddenService = c.get("noHiddenService"); + if(!StringUtils.isNullOrEmpty(noHiddenService)) { if(LOG.isLoggable(INFO)) LOG.info("Not creating hidden service"); TransportProperties p = new TransportProperties(); p.put("onion", null); @@ -108,7 +109,7 @@ class TorPlugin implements DuplexPlugin { TorHiddenServicePrivateNetAddress addr; TorNetLayerUtil util = TorNetLayerUtil.getInstance(); String privateKey = c.get("privateKey"); - if(privateKey == null) { + if(StringUtils.isNullOrEmpty(privateKey)) { if(LOG.isLoggable(INFO)) LOG.info("Creating hidden service address"); addr = createHiddenServiceAddress(util); @@ -264,7 +265,7 @@ class TorPlugin implements DuplexPlugin { TransportProperties p = callback.getRemoteProperties().get(c); if(p == null) return null; String onion = p.get("onion"); - if(onion == null) return null; + if(StringUtils.isNullOrEmpty(onion)) return null; NetAddress addr = new TcpipNetAddress(onion, 80); try { if(LOG.isLoggable(INFO)) LOG.info("Connecting to hidden service"); diff --git a/briar-core/src/net/sf/briar/plugins/tor/TorPluginFactory.java b/briar-core/src/net/sf/briar/plugins/tor/TorPluginFactory.java index c87bdef779..dc87cf2ab9 100644 --- a/briar-core/src/net/sf/briar/plugins/tor/TorPluginFactory.java +++ b/briar-core/src/net/sf/briar/plugins/tor/TorPluginFactory.java @@ -7,8 +7,7 @@ import net.sf.briar.api.plugins.duplex.DuplexPlugin; import net.sf.briar.api.plugins.duplex.DuplexPluginCallback; import net.sf.briar.api.plugins.duplex.DuplexPluginFactory; import net.sf.briar.api.protocol.TransportId; - -import org.h2.util.StringUtils; +import net.sf.briar.util.StringUtils; public class TorPluginFactory implements DuplexPluginFactory { diff --git a/briar-core/src/net/sf/briar/util/StringUtils.java b/briar-core/src/net/sf/briar/util/StringUtils.java index acfdd3a911..e6017068bb 100644 --- a/briar-core/src/net/sf/briar/util/StringUtils.java +++ b/briar-core/src/net/sf/briar/util/StringUtils.java @@ -7,6 +7,10 @@ public class StringUtils { '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; + public static boolean isNullOrEmpty(String s) { + return s == null || s.isEmpty(); + } + /** * Trims the given string to the given length, returning the head and * appending "..." if the string was trimmed. diff --git a/briar-tests/src/net/sf/briar/plugins/tor/TorPluginTest.java b/briar-tests/src/net/sf/briar/plugins/tor/TorPluginTest.java index a876cb496c..c217e6605c 100644 --- a/briar-tests/src/net/sf/briar/plugins/tor/TorPluginTest.java +++ b/briar-tests/src/net/sf/briar/plugins/tor/TorPluginTest.java @@ -42,7 +42,7 @@ public class TorPluginTest extends BriarTestCase { assertTrue(onion.endsWith(".onion")); // Create another plugin instance for the client Callback clientCallback = new Callback(); - clientCallback.config.put("noHiddenService", ""); + clientCallback.config.put("noHiddenService", "true"); TransportProperties p = new TransportProperties(); p.put("onion", onion); clientCallback.remote.put(contactId, p); -- GitLab