diff --git a/components/net/sf/briar/protocol/simplex/IncomingSimplexConnection.java b/components/net/sf/briar/protocol/simplex/IncomingSimplexConnection.java
index f05e8c5ec78836c426b79f367349721fb8ef43ef..a15c7bd8dd80d60a3adea1d2f09cec1613ac79da 100644
--- a/components/net/sf/briar/protocol/simplex/IncomingSimplexConnection.java
+++ b/components/net/sf/briar/protocol/simplex/IncomingSimplexConnection.java
@@ -88,7 +88,11 @@ class IncomingSimplexConnection {
 			transport.dispose(false, true);
 		} catch(IOException e) {
 			if(LOG.isLoggable(Level.WARNING)) LOG.warning(e.toString());
-			transport.dispose(true, true);
+			try {
+				transport.dispose(true, true);
+			} catch(IOException e1) {
+				if(LOG.isLoggable(Level.WARNING)) LOG.warning(e.toString());
+			}
 		} finally {
 			connRegistry.unregisterConnection(contactId, transportId);
 		}
diff --git a/components/net/sf/briar/protocol/simplex/OutgoingSimplexConnection.java b/components/net/sf/briar/protocol/simplex/OutgoingSimplexConnection.java
index 880f2f5584cab6c3ab8916a9169aed87e6238f61..6333a700ed8de6937a866d5e3d69e05b6bbdbac4 100644
--- a/components/net/sf/briar/protocol/simplex/OutgoingSimplexConnection.java
+++ b/components/net/sf/briar/protocol/simplex/OutgoingSimplexConnection.java
@@ -28,7 +28,7 @@ import net.sf.briar.api.transport.ConnectionWriterFactory;
 class OutgoingSimplexConnection {
 
 	private static final Logger LOG =
-		Logger.getLogger(OutgoingSimplexConnection.class.getName());
+			Logger.getLogger(OutgoingSimplexConnection.class.getName());
 
 	private final DatabaseComponent db;
 	private final ConnectionRegistry connRegistry;
@@ -103,10 +103,18 @@ class OutgoingSimplexConnection {
 			transport.dispose(false);
 		} catch(DbException e) {
 			if(LOG.isLoggable(Level.WARNING)) LOG.warning(e.toString());
-			transport.dispose(true);
+			try {
+				transport.dispose(true);
+			} catch(IOException e1) {
+				if(LOG.isLoggable(Level.WARNING)) LOG.warning(e.toString());
+			}
 		} catch(IOException e) {
 			if(LOG.isLoggable(Level.WARNING)) LOG.warning(e.toString());
-			transport.dispose(true);
+			try {
+				transport.dispose(true);
+			} catch(IOException e1) {
+				if(LOG.isLoggable(Level.WARNING)) LOG.warning(e.toString());
+			}
 		} finally {
 			connRegistry.unregisterConnection(contactId, transportId);
 		}
diff --git a/components/net/sf/briar/transport/ConnectionDispatcherImpl.java b/components/net/sf/briar/transport/ConnectionDispatcherImpl.java
index 4adbba871fad240f83426b1623a317a21f69d5f1..1ac49b86b79ad9a37bf4c2831bed09518578fb32 100644
--- a/components/net/sf/briar/transport/ConnectionDispatcherImpl.java
+++ b/components/net/sf/briar/transport/ConnectionDispatcherImpl.java
@@ -27,7 +27,7 @@ import com.google.inject.Inject;
 class ConnectionDispatcherImpl implements ConnectionDispatcher {
 
 	private static final Logger LOG =
-		Logger.getLogger(ConnectionDispatcherImpl.class.getName());
+			Logger.getLogger(ConnectionDispatcherImpl.class.getName());
 
 	private final Executor connExecutor;
 	private final ConnectionRecogniser recogniser;
@@ -96,10 +96,18 @@ class ConnectionDispatcherImpl implements ConnectionDispatcher {
 						transport);
 			} catch(DbException e) {
 				if(LOG.isLoggable(Level.WARNING)) LOG.warning(e.toString());
-				transport.dispose(true, false);
+				try {
+					transport.dispose(true, false);
+				} catch(IOException e1) {
+					if(LOG.isLoggable(Level.WARNING)) LOG.warning(e.toString());
+				}
 			} catch(IOException e) {
 				if(LOG.isLoggable(Level.WARNING)) LOG.warning(e.toString());
-				transport.dispose(true, false);
+				try {
+					transport.dispose(true, false);
+				} catch(IOException e1) {
+					if(LOG.isLoggable(Level.WARNING)) LOG.warning(e.toString());
+				}
 			}
 		}
 	}