From a6777f1fe15756aa5c95694f2a90fe9dfd57896d Mon Sep 17 00:00:00 2001
From: akwizgran <michael@briarproject.org>
Date: Fri, 7 Dec 2012 15:40:03 +0000
Subject: [PATCH] Ensure each reliability layer is started and stopped.

---
 briar-core/src/net/sf/briar/plugins/modem/ModemImpl.java       | 3 ++-
 .../src/net/sf/briar/plugins/modem/ReliabilityLayer.java       | 1 +
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/briar-core/src/net/sf/briar/plugins/modem/ModemImpl.java b/briar-core/src/net/sf/briar/plugins/modem/ModemImpl.java
index 2961232287..45ca855b2e 100644
--- a/briar-core/src/net/sf/briar/plugins/modem/ModemImpl.java
+++ b/briar-core/src/net/sf/briar/plugins/modem/ModemImpl.java
@@ -49,6 +49,7 @@ class ModemImpl implements Modem, WriteHandler, SerialPortEventListener {
 		connected = new AtomicBoolean(false);
 		line = new byte[MAX_LINE_LENGTH];
 		reliabilityLayer = new ReliabilityLayer(this);
+		reliabilityLayer.start();
 	}
 
 	public void start() throws IOException {
@@ -69,7 +70,6 @@ class ModemImpl implements Modem, WriteHandler, SerialPortEventListener {
 			}
 			if(!foundBaudRate)
 				throw new IOException("Could not find a suitable baud rate");
-			reliabilityLayer.start();
 			port.addEventListener(this);
 			port.purgePort(PURGE_RXCLEAR | PURGE_TXCLEAR);
 			port.writeBytes("ATZ\r\n".getBytes("US-ASCII")); // Reset
@@ -150,6 +150,7 @@ class ModemImpl implements Modem, WriteHandler, SerialPortEventListener {
 		}
 		reliabilityLayer.stop();
 		reliabilityLayer = new ReliabilityLayer(this);
+		reliabilityLayer.start();
 		connected.set(false);
 		offHook.release();
 	}
diff --git a/briar-core/src/net/sf/briar/plugins/modem/ReliabilityLayer.java b/briar-core/src/net/sf/briar/plugins/modem/ReliabilityLayer.java
index 838c9c46b8..edf67ac576 100644
--- a/briar-core/src/net/sf/briar/plugins/modem/ReliabilityLayer.java
+++ b/briar-core/src/net/sf/briar/plugins/modem/ReliabilityLayer.java
@@ -70,6 +70,7 @@ class ReliabilityLayer implements ReadHandler, WriteHandler {
 	}
 
 	void stop() {
+		if(!running) throw new IllegalStateException();
 		running = false;
 		receiver.invalidate();
 		writes.add(new byte[0]); // Poison pill
-- 
GitLab