diff --git a/components/net/sf/briar/db/DatabaseComponentImpl.java b/components/net/sf/briar/db/DatabaseComponentImpl.java
index a437dde9a55db82cd9a94dbdc5dcc7fce0e57cd6..e9947db4bf565b0a0fd938401bd60924363778de 100644
--- a/components/net/sf/briar/db/DatabaseComponentImpl.java
+++ b/components/net/sf/briar/db/DatabaseComponentImpl.java
@@ -1229,6 +1229,7 @@ DatabaseCleaner.Callback {
 		if(LOG.isLoggable(Level.FINE)) LOG.fine("Removing contact " + c);
 		contactLock.writeLock().lock();
 		try {
+			if(!containsContact(c)) throw new NoSuchContactException();
 			messageLock.writeLock().lock();
 			try {
 				messageFlagLock.writeLock().lock();
diff --git a/test/net/sf/briar/db/DatabaseComponentTest.java b/test/net/sf/briar/db/DatabaseComponentTest.java
index 59e0e9fe128ae863c8c9e598194ad133ce859f74..335d11d711cc11f1b523dbce5add3303f46431f2 100644
--- a/test/net/sf/briar/db/DatabaseComponentTest.java
+++ b/test/net/sf/briar/db/DatabaseComponentTest.java
@@ -183,6 +183,8 @@ public abstract class DatabaseComponentTest extends TestCase {
 			oneOf(database).setConnectionWindow(txn, contactId, remoteIndex,
 					connectionWindow);
 			// removeContact(contactId)
+			oneOf(database).containsContact(txn, contactId);
+			will(returnValue(true));
 			oneOf(database).removeContact(txn, contactId);
 			oneOf(listener).eventOccurred(with(any(ContactRemovedEvent.class)));
 			// close()
@@ -502,11 +504,11 @@ public abstract class DatabaseComponentTest extends TestCase {
 			context.mock(TransportUpdate.class);
 		context.checking(new Expectations() {{
 			// Check whether the contact is still in the DB (which it's not)
-			exactly(17).of(database).startTransaction();
+			exactly(20).of(database).startTransaction();
 			will(returnValue(txn));
-			exactly(17).of(database).containsContact(txn, contactId);
+			exactly(20).of(database).containsContact(txn, contactId);
 			will(returnValue(false));
-			exactly(17).of(database).commitTransaction(txn);
+			exactly(20).of(database).commitTransaction(txn);
 		}});
 		DatabaseComponent db = createDatabaseComponent(database, cleaner);
 
@@ -546,11 +548,21 @@ public abstract class DatabaseComponentTest extends TestCase {
 			fail();
 		} catch(NoSuchContactException expected) {}
 
+		try {
+			db.getConnectionNumber(contactId, remoteIndex);
+			fail();
+		} catch(NoSuchContactException expected) {}
+
 		try {
 			db.getConnectionWindow(contactId, remoteIndex);
 			fail();
 		} catch(NoSuchContactException expected) {}
 
+		try {
+			db.getRemoteIndex(contactId, transportId);
+			fail();
+		} catch(NoSuchContactException expected) {}
+
 		try {
 			db.getSharedSecret(contactId);
 			fail();
@@ -586,6 +598,11 @@ public abstract class DatabaseComponentTest extends TestCase {
 			fail();
 		} catch(NoSuchContactException expected) {}
 
+		try {
+			db.removeContact(contactId);
+			fail();
+		} catch(NoSuchContactException expected) {}
+
 		try {
 			db.setConnectionWindow(contactId, remoteIndex, null);
 			fail();