From c728377ae101ae43c1f64acddb28be9e9c3f5166 Mon Sep 17 00:00:00 2001
From: akwizgran <akwizgran@users.sourceforge.net>
Date: Wed, 7 Dec 2011 21:37:13 +0000
Subject: [PATCH] Removed the DB listener when the connection is closed.

---
 .../net/sf/briar/transport/stream/StreamConnection.java      | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/components/net/sf/briar/transport/stream/StreamConnection.java b/components/net/sf/briar/transport/stream/StreamConnection.java
index 44f16211eb..f3d3dbe471 100644
--- a/components/net/sf/briar/transport/stream/StreamConnection.java
+++ b/components/net/sf/briar/transport/stream/StreamConnection.java
@@ -184,10 +184,9 @@ abstract class StreamConnection implements DatabaseListener {
 
 	void write() {
 		try {
+			db.addListener(this);
 			OutputStream out = createConnectionWriter().getOutputStream();
 			writer = protoWriterFactory.createProtocolWriter(out);
-			// Start receiving database events
-			db.addListener(this);
 			// Send the initial packets: transports, subs, acks, offer
 			dbExecutor.execute(new GenerateTransportUpdate());
 			dbExecutor.execute(new GenerateSubscriptionUpdate());
@@ -215,6 +214,8 @@ abstract class StreamConnection implements DatabaseListener {
 		} catch(IOException e) {
 			if(LOG.isLoggable(Level.WARNING)) LOG.warning(e.getMessage());
 			transport.dispose(false);
+		} finally {
+			db.removeListener(this);
 		}
 	}
 
-- 
GitLab