diff --git a/bramble-core/src/main/java/org/briarproject/bramble/contact/ContactExchangeTaskImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/contact/ContactExchangeTaskImpl.java
index 60d7ea0ab3d4edc0e7c05a18bf89b708c512defe..fb71f9a778b9c974dcdc14eea7adf0fd4216c2f9 100644
--- a/bramble-core/src/main/java/org/briarproject/bramble/contact/ContactExchangeTaskImpl.java
+++ b/bramble-core/src/main/java/org/briarproject/bramble/contact/ContactExchangeTaskImpl.java
@@ -241,12 +241,17 @@ class ContactExchangeTaskImpl extends Thread implements ContactExchangeTask {
 			// Add the contact
 			ContactId contactId = addContact(remoteInfo.getAuthor(), timestamp,
 					remoteInfo.getProperties());
-			// Reuse the connection as a transport connection
-			connectionManager.manageOutgoingConnection(contactId, transportId,
-					conn);
 			// Pseudonym exchange succeeded
 			LOG.info("Pseudonym exchange succeeded");
 			listener.contactExchangeSucceeded(remoteInfo.getAuthor());
+			// Reuse the connection as a transport connection
+			if (localType == CONTACT) {
+				connectionManager
+						.manageOutgoingConnection(contactId, transportId,
+								conn);
+			} else {
+				tryToClose(conn);
+			}
 		} catch (ContactExistsException e) {
 			logException(LOG, WARNING, e);
 			tryToClose(conn);