diff --git a/briar-core/src/org/briarproject/properties/TransportPropertyManagerImpl.java b/briar-core/src/org/briarproject/properties/TransportPropertyManagerImpl.java
index 5da83e49ddaaef91fb4bd5210adb031bd8a0eea5..381ea70159027f111201208a7daba37522d612b9 100644
--- a/briar-core/src/org/briarproject/properties/TransportPropertyManagerImpl.java
+++ b/briar-core/src/org/briarproject/properties/TransportPropertyManagerImpl.java
@@ -44,7 +44,6 @@ import java.util.Map.Entry;
 import java.util.concurrent.locks.ReentrantReadWriteLock;
 import java.util.logging.Logger;
 
-import static java.util.logging.Level.INFO;
 import static java.util.logging.Level.WARNING;
 import static org.briarproject.api.properties.TransportPropertyConstants.MAX_PROPERTY_LENGTH;
 import static org.briarproject.api.sync.SyncConstants.MESSAGE_HEADER_LENGTH;
@@ -302,28 +301,27 @@ class TransportPropertyManagerImpl implements TransportPropertyManager,
 			// Create the local group if necessary
 			db.addGroup(localGroup);
 			// Merge the new properties with any existing properties
+			TransportProperties merged;
 			Latest latest = findLatest(localGroup.getId(), true).get(t);
-			if (latest != null) {
+			if (latest == null) {
+				merged = p;
+			} else {
 				byte[] raw = db.getRawMessage(latest.messageId);
 				TransportProperties old = decodeProperties(raw);
-				if (old.equals(p)) return; // Unchanged
-				old.putAll(p);
-				p = old;
+				merged = new TransportProperties(old);
+				merged.putAll(p);
+				if (merged.equals(old)) return; // Unchanged
 			}
 			// Store the merged properties in the local group
 			DeviceId dev = db.getDeviceId();
 			long version = latest == null ? 0 : latest.version + 1;
-			storeMessage(localGroup.getId(), dev, t, p, version);
-			if (LOG.isLoggable(INFO)) {
-				LOG.info("Stored local properties for " + t.getString()
-						+ ", version " + version);
-			}
+			storeMessage(localGroup.getId(), dev, t, merged, version);
 			// Store the merged properties in each contact's group
 			for (Contact c : db.getContacts()) {
 				Group g = getContactGroup(c);
 				latest = findLatest(g.getId(), true).get(t);
 				version = latest == null ? 0 : latest.version + 1;
-				storeMessage(g.getId(), dev, t, p, version);
+				storeMessage(g.getId(), dev, t, merged, version);
 			}
 		} catch (IOException e) {
 			throw new DbException(e);