From cb06ebc5d2076262389730658ebba161bd06c0dd Mon Sep 17 00:00:00 2001
From: akwizgran <akwizgran@users.sourceforge.net>
Date: Fri, 14 Oct 2011 21:37:55 +0100
Subject: [PATCH] Locking.

---
 .../transport/stream/OutgoingStreamConnection.java | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/components/net/sf/briar/transport/stream/OutgoingStreamConnection.java b/components/net/sf/briar/transport/stream/OutgoingStreamConnection.java
index 146f925851..f7793de70e 100644
--- a/components/net/sf/briar/transport/stream/OutgoingStreamConnection.java
+++ b/components/net/sf/briar/transport/stream/OutgoingStreamConnection.java
@@ -18,7 +18,7 @@ public class OutgoingStreamConnection extends StreamConnection {
 
 	private final TransportId transportId;
 
-	private long connectionNum = -1L;
+	private long connectionNum = -1L; // Locking: this
 
 	OutgoingStreamConnection(ConnectionReaderFactory connReaderFactory,
 			ConnectionWriterFactory connWriterFactory, DatabaseComponent db,
@@ -33,8 +33,10 @@ public class OutgoingStreamConnection extends StreamConnection {
 	@Override
 	protected ConnectionReader createConnectionReader() throws DbException,
 	IOException {
-		if(connectionNum == -1L)
-			connectionNum = db.getConnectionNumber(contactId, transportId);
+		synchronized(this) {
+			if(connectionNum == -1L)
+				connectionNum = db.getConnectionNumber(contactId, transportId);
+		}
 		byte[] secret = db.getSharedSecret(contactId);
 		return connReaderFactory.createConnectionReader(
 				connection.getInputStream(), false, transportId, connectionNum,
@@ -44,8 +46,10 @@ public class OutgoingStreamConnection extends StreamConnection {
 	@Override
 	protected ConnectionWriter createConnectionWriter() throws DbException,
 	IOException {
-		if(connectionNum == -1L)
-			connectionNum = db.getConnectionNumber(contactId, transportId);
+		synchronized(this) {
+			if(connectionNum == -1L)
+				connectionNum = db.getConnectionNumber(contactId, transportId);
+		}
 		byte[] secret = db.getSharedSecret(contactId);
 		return connWriterFactory.createConnectionWriter(
 				connection.getOutputStream(), Long.MAX_VALUE, true, transportId,
-- 
GitLab